	.file	"211081315.c"
	.intel_syntax noprefix
	.text
	.globl	CHAR_EOF
	.data
	.align 8
	.type	CHAR_EOF, @object
	.size	CHAR_EOF, 8
CHAR_EOF:
	.quad	-1
	.globl	CHAR_BACKSPACE
	.align 8
	.type	CHAR_BACKSPACE, @object
	.size	CHAR_BACKSPACE, 8
CHAR_BACKSPACE:
	.quad	8
	.globl	CHAR_TAB
	.align 8
	.type	CHAR_TAB, @object
	.size	CHAR_TAB, 8
CHAR_TAB:
	.quad	9
	.globl	CHAR_LF
	.align 8
	.type	CHAR_LF, @object
	.size	CHAR_LF, 8
CHAR_LF:
	.quad	10
	.globl	CHAR_CR
	.align 8
	.type	CHAR_CR, @object
	.size	CHAR_CR, 8
CHAR_CR:
	.quad	13
	.globl	CHAR_SPACE
	.align 8
	.type	CHAR_SPACE, @object
	.size	CHAR_SPACE, 8
CHAR_SPACE:
	.quad	32
	.globl	CHAR_SEMICOLON
	.align 8
	.type	CHAR_SEMICOLON, @object
	.size	CHAR_SEMICOLON, 8
CHAR_SEMICOLON:
	.quad	59
	.globl	CHAR_PLUS
	.align 8
	.type	CHAR_PLUS, @object
	.size	CHAR_PLUS, 8
CHAR_PLUS:
	.quad	43
	.globl	CHAR_DASH
	.align 8
	.type	CHAR_DASH, @object
	.size	CHAR_DASH, 8
CHAR_DASH:
	.quad	45
	.globl	CHAR_ASTERISK
	.align 8
	.type	CHAR_ASTERISK, @object
	.size	CHAR_ASTERISK, 8
CHAR_ASTERISK:
	.quad	42
	.globl	CHAR_SLASH
	.align 8
	.type	CHAR_SLASH, @object
	.size	CHAR_SLASH, 8
CHAR_SLASH:
	.quad	47
	.globl	CHAR_UNDERSCORE
	.align 8
	.type	CHAR_UNDERSCORE, @object
	.size	CHAR_UNDERSCORE, 8
CHAR_UNDERSCORE:
	.quad	95
	.globl	CHAR_EQUAL
	.align 8
	.type	CHAR_EQUAL, @object
	.size	CHAR_EQUAL, 8
CHAR_EQUAL:
	.quad	61
	.globl	CHAR_LPARENTHESIS
	.align 8
	.type	CHAR_LPARENTHESIS, @object
	.size	CHAR_LPARENTHESIS, 8
CHAR_LPARENTHESIS:
	.quad	40
	.globl	CHAR_RPARENTHESIS
	.align 8
	.type	CHAR_RPARENTHESIS, @object
	.size	CHAR_RPARENTHESIS, 8
CHAR_RPARENTHESIS:
	.quad	41
	.globl	CHAR_LBRACE
	.align 8
	.type	CHAR_LBRACE, @object
	.size	CHAR_LBRACE, 8
CHAR_LBRACE:
	.quad	123
	.globl	CHAR_RBRACE
	.align 8
	.type	CHAR_RBRACE, @object
	.size	CHAR_RBRACE, 8
CHAR_RBRACE:
	.quad	125
	.globl	CHAR_COMMA
	.align 8
	.type	CHAR_COMMA, @object
	.size	CHAR_COMMA, 8
CHAR_COMMA:
	.quad	44
	.globl	CHAR_LT
	.align 8
	.type	CHAR_LT, @object
	.size	CHAR_LT, 8
CHAR_LT:
	.quad	60
	.globl	CHAR_GT
	.align 8
	.type	CHAR_GT, @object
	.size	CHAR_GT, 8
CHAR_GT:
	.quad	62
	.globl	CHAR_EXCLAMATION
	.align 8
	.type	CHAR_EXCLAMATION, @object
	.size	CHAR_EXCLAMATION, 8
CHAR_EXCLAMATION:
	.quad	33
	.globl	CHAR_PERCENTAGE
	.align 8
	.type	CHAR_PERCENTAGE, @object
	.size	CHAR_PERCENTAGE, 8
CHAR_PERCENTAGE:
	.quad	37
	.globl	CHAR_SINGLEQUOTE
	.align 8
	.type	CHAR_SINGLEQUOTE, @object
	.size	CHAR_SINGLEQUOTE, 8
CHAR_SINGLEQUOTE:
	.quad	39
	.globl	CHAR_DOUBLEQUOTE
	.align 8
	.type	CHAR_DOUBLEQUOTE, @object
	.size	CHAR_DOUBLEQUOTE, 8
CHAR_DOUBLEQUOTE:
	.quad	34
	.globl	CHAR_BACKSLASH
	.align 8
	.type	CHAR_BACKSLASH, @object
	.size	CHAR_BACKSLASH, 8
CHAR_BACKSLASH:
	.quad	92
	.globl	CPUBITWIDTH
	.align 8
	.type	CPUBITWIDTH, @object
	.size	CPUBITWIDTH, 8
CPUBITWIDTH:
	.quad	64
	.globl	SIZEOFUINT64
	.align 8
	.type	SIZEOFUINT64, @object
	.size	SIZEOFUINT64, 8
SIZEOFUINT64:
	.quad	8
	.globl	SIZEOFUINT64STAR
	.align 8
	.type	SIZEOFUINT64STAR, @object
	.size	SIZEOFUINT64STAR, 8
SIZEOFUINT64STAR:
	.quad	8
	.globl	power_of_two_table
	.bss
	.align 8
	.type	power_of_two_table, @object
	.size	power_of_two_table, 8
power_of_two_table:
	.zero	8
	.globl	INT64_MAX
	.align 8
	.type	INT64_MAX, @object
	.size	INT64_MAX, 8
INT64_MAX:
	.zero	8
	.globl	INT64_MIN
	.align 8
	.type	INT64_MIN, @object
	.size	INT64_MIN, 8
INT64_MIN:
	.zero	8
	.globl	UINT64_MAX
	.align 8
	.type	UINT64_MAX, @object
	.size	UINT64_MAX, 8
UINT64_MAX:
	.zero	8
	.globl	MAX_FILENAME_LENGTH
	.data
	.align 8
	.type	MAX_FILENAME_LENGTH, @object
	.size	MAX_FILENAME_LENGTH, 8
MAX_FILENAME_LENGTH:
	.quad	128
	.globl	character_buffer
	.bss
	.align 8
	.type	character_buffer, @object
	.size	character_buffer, 8
character_buffer:
	.zero	8
	.globl	integer_buffer
	.align 8
	.type	integer_buffer, @object
	.size	integer_buffer, 8
integer_buffer:
	.zero	8
	.globl	filename_buffer
	.align 8
	.type	filename_buffer, @object
	.size	filename_buffer, 8
filename_buffer:
	.zero	8
	.globl	binary_buffer
	.align 8
	.type	binary_buffer, @object
	.size	binary_buffer, 8
binary_buffer:
	.zero	8
	.globl	O_RDONLY
	.data
	.align 8
	.type	O_RDONLY, @object
	.size	O_RDONLY, 8
O_RDONLY:
	.quad	32768
	.globl	MAC_O_CREAT_TRUNC_WRONLY
	.align 8
	.type	MAC_O_CREAT_TRUNC_WRONLY, @object
	.size	MAC_O_CREAT_TRUNC_WRONLY, 8
MAC_O_CREAT_TRUNC_WRONLY:
	.quad	1537
	.globl	LINUX_O_CREAT_TRUNC_WRONLY
	.align 8
	.type	LINUX_O_CREAT_TRUNC_WRONLY, @object
	.size	LINUX_O_CREAT_TRUNC_WRONLY, 8
LINUX_O_CREAT_TRUNC_WRONLY:
	.quad	577
	.globl	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY
	.align 8
	.type	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY, @object
	.size	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY, 8
WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY:
	.quad	33537
	.globl	S_IRUSR_IWUSR_IRGRP_IROTH
	.align 8
	.type	S_IRUSR_IWUSR_IRGRP_IROTH, @object
	.size	S_IRUSR_IWUSR_IRGRP_IROTH, 8
S_IRUSR_IWUSR_IRGRP_IROTH:
	.quad	420
	.globl	number_of_written_characters
	.bss
	.align 8
	.type	number_of_written_characters, @object
	.size	number_of_written_characters, 8
number_of_written_characters:
	.zero	8
	.globl	output_name
	.align 8
	.type	output_name, @object
	.size	output_name, 8
output_name:
	.zero	8
	.globl	output_fd
	.data
	.align 8
	.type	output_fd, @object
	.size	output_fd, 8
output_fd:
	.quad	1
	.text
	.globl	init_library
	.type	init_library, @function
init_library:
.LFB0:
	.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	rdx, QWORD PTR CPUBITWIDTH[rip]
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	imul	rax, rdx
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR power_of_two_table[rip], rax
	mov	rax, QWORD PTR power_of_two_table[rip]
	mov	QWORD PTR [rax], 1
	mov	QWORD PTR -8[rbp], 1
	jmp	.L2
.L3:
	mov	rdx, QWORD PTR power_of_two_table[rip]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	sub	rax, 8
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	rcx, QWORD PTR power_of_two_table[rip]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rcx
	add	rdx, rdx
	mov	QWORD PTR [rax], rdx
	add	QWORD PTR -8[rbp], 1
.L2:
	mov	rax, QWORD PTR CPUBITWIDTH[rip]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L3
	mov	QWORD PTR UINT64_MAX[rip], -1
	mov	rax, QWORD PTR CPUBITWIDTH[rip]
	sub	rax, 1
	mov	rdi, rax
	call	two_to_the_power_of
	sub	rax, 1
	mov	QWORD PTR INT64_MAX[rip], rax
	mov	rax, QWORD PTR INT64_MAX[rip]
	add	rax, 1
	mov	QWORD PTR INT64_MIN[rip], rax
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR character_buffer[rip], rax
	mov	rax, QWORD PTR character_buffer[rip]
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR CPUBITWIDTH[rip]
	add	rax, 1
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR integer_buffer[rip], rax
	mov	rax, QWORD PTR MAX_FILENAME_LENGTH[rip]
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR filename_buffer[rip], rax
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR binary_buffer[rip], rax
	mov	rax, QWORD PTR binary_buffer[rip]
	mov	QWORD PTR [rax], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	init_library, .-init_library
	.globl	reset_library
	.type	reset_library, @function
reset_library:
.LFB1:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR number_of_written_characters[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	reset_library, .-reset_library
	.globl	SYM_EOF
	.data
	.align 8
	.type	SYM_EOF, @object
	.size	SYM_EOF, 8
SYM_EOF:
	.quad	-1
	.globl	SYM_IDENTIFIER
	.bss
	.align 8
	.type	SYM_IDENTIFIER, @object
	.size	SYM_IDENTIFIER, 8
SYM_IDENTIFIER:
	.zero	8
	.globl	SYM_INTEGER
	.data
	.align 8
	.type	SYM_INTEGER, @object
	.size	SYM_INTEGER, 8
SYM_INTEGER:
	.quad	1
	.globl	SYM_VOID
	.align 8
	.type	SYM_VOID, @object
	.size	SYM_VOID, 8
SYM_VOID:
	.quad	2
	.globl	SYM_UINT64
	.align 8
	.type	SYM_UINT64, @object
	.size	SYM_UINT64, 8
SYM_UINT64:
	.quad	3
	.globl	SYM_SEMICOLON
	.align 8
	.type	SYM_SEMICOLON, @object
	.size	SYM_SEMICOLON, 8
SYM_SEMICOLON:
	.quad	4
	.globl	SYM_IF
	.align 8
	.type	SYM_IF, @object
	.size	SYM_IF, 8
SYM_IF:
	.quad	5
	.globl	SYM_ELSE
	.align 8
	.type	SYM_ELSE, @object
	.size	SYM_ELSE, 8
SYM_ELSE:
	.quad	6
	.globl	SYM_PLUS
	.align 8
	.type	SYM_PLUS, @object
	.size	SYM_PLUS, 8
SYM_PLUS:
	.quad	7
	.globl	SYM_MINUS
	.align 8
	.type	SYM_MINUS, @object
	.size	SYM_MINUS, 8
SYM_MINUS:
	.quad	8
	.globl	SYM_ASTERISK
	.align 8
	.type	SYM_ASTERISK, @object
	.size	SYM_ASTERISK, 8
SYM_ASTERISK:
	.quad	9
	.globl	SYM_DIV
	.align 8
	.type	SYM_DIV, @object
	.size	SYM_DIV, 8
SYM_DIV:
	.quad	10
	.globl	SYM_EQUALITY
	.align 8
	.type	SYM_EQUALITY, @object
	.size	SYM_EQUALITY, 8
SYM_EQUALITY:
	.quad	11
	.globl	SYM_ASSIGN
	.align 8
	.type	SYM_ASSIGN, @object
	.size	SYM_ASSIGN, 8
SYM_ASSIGN:
	.quad	12
	.globl	SYM_LPARENTHESIS
	.align 8
	.type	SYM_LPARENTHESIS, @object
	.size	SYM_LPARENTHESIS, 8
SYM_LPARENTHESIS:
	.quad	13
	.globl	SYM_RPARENTHESIS
	.align 8
	.type	SYM_RPARENTHESIS, @object
	.size	SYM_RPARENTHESIS, 8
SYM_RPARENTHESIS:
	.quad	14
	.globl	SYM_LBRACE
	.align 8
	.type	SYM_LBRACE, @object
	.size	SYM_LBRACE, 8
SYM_LBRACE:
	.quad	15
	.globl	SYM_RBRACE
	.align 8
	.type	SYM_RBRACE, @object
	.size	SYM_RBRACE, 8
SYM_RBRACE:
	.quad	16
	.globl	SYM_WHILE
	.align 8
	.type	SYM_WHILE, @object
	.size	SYM_WHILE, 8
SYM_WHILE:
	.quad	17
	.globl	SYM_RETURN
	.align 8
	.type	SYM_RETURN, @object
	.size	SYM_RETURN, 8
SYM_RETURN:
	.quad	18
	.globl	SYM_COMMA
	.align 8
	.type	SYM_COMMA, @object
	.size	SYM_COMMA, 8
SYM_COMMA:
	.quad	19
	.globl	SYM_LT
	.align 8
	.type	SYM_LT, @object
	.size	SYM_LT, 8
SYM_LT:
	.quad	20
	.globl	SYM_LEQ
	.align 8
	.type	SYM_LEQ, @object
	.size	SYM_LEQ, 8
SYM_LEQ:
	.quad	21
	.globl	SYM_GT
	.align 8
	.type	SYM_GT, @object
	.size	SYM_GT, 8
SYM_GT:
	.quad	22
	.globl	SYM_GEQ
	.align 8
	.type	SYM_GEQ, @object
	.size	SYM_GEQ, 8
SYM_GEQ:
	.quad	23
	.globl	SYM_NOTEQ
	.align 8
	.type	SYM_NOTEQ, @object
	.size	SYM_NOTEQ, 8
SYM_NOTEQ:
	.quad	24
	.globl	SYM_MOD
	.align 8
	.type	SYM_MOD, @object
	.size	SYM_MOD, 8
SYM_MOD:
	.quad	25
	.globl	SYM_CHARACTER
	.align 8
	.type	SYM_CHARACTER, @object
	.size	SYM_CHARACTER, 8
SYM_CHARACTER:
	.quad	26
	.globl	SYM_STRING
	.align 8
	.type	SYM_STRING, @object
	.size	SYM_STRING, 8
SYM_STRING:
	.quad	27
	.globl	SYMBOLS
	.bss
	.align 8
	.type	SYMBOLS, @object
	.size	SYMBOLS, 8
SYMBOLS:
	.zero	8
	.globl	MAX_IDENTIFIER_LENGTH
	.data
	.align 8
	.type	MAX_IDENTIFIER_LENGTH, @object
	.size	MAX_IDENTIFIER_LENGTH, 8
MAX_IDENTIFIER_LENGTH:
	.quad	64
	.globl	MAX_INTEGER_LENGTH
	.align 8
	.type	MAX_INTEGER_LENGTH, @object
	.size	MAX_INTEGER_LENGTH, 8
MAX_INTEGER_LENGTH:
	.quad	20
	.globl	MAX_STRING_LENGTH
	.align 8
	.type	MAX_STRING_LENGTH, @object
	.size	MAX_STRING_LENGTH, 8
MAX_STRING_LENGTH:
	.quad	128
	.globl	line_number
	.align 8
	.type	line_number, @object
	.size	line_number, 8
line_number:
	.quad	1
	.globl	identifier
	.bss
	.align 8
	.type	identifier, @object
	.size	identifier, 8
identifier:
	.zero	8
	.globl	integer
	.align 8
	.type	integer, @object
	.size	integer, 8
integer:
	.zero	8
	.globl	string
	.align 8
	.type	string, @object
	.size	string, 8
string:
	.zero	8
	.globl	literal
	.align 8
	.type	literal, @object
	.size	literal, 8
literal:
	.zero	8
	.globl	integer_is_signed
	.align 8
	.type	integer_is_signed, @object
	.size	integer_is_signed, 8
integer_is_signed:
	.zero	8
	.globl	character
	.align 8
	.type	character, @object
	.size	character, 8
character:
	.zero	8
	.globl	number_of_read_characters
	.align 8
	.type	number_of_read_characters, @object
	.size	number_of_read_characters, 8
number_of_read_characters:
	.zero	8
	.globl	symbol
	.align 8
	.type	symbol, @object
	.size	symbol, 8
symbol:
	.zero	8
	.globl	number_of_ignored_characters
	.align 8
	.type	number_of_ignored_characters, @object
	.size	number_of_ignored_characters, 8
number_of_ignored_characters:
	.zero	8
	.globl	number_of_comments
	.align 8
	.type	number_of_comments, @object
	.size	number_of_comments, 8
number_of_comments:
	.zero	8
	.globl	number_of_scanned_symbols
	.align 8
	.type	number_of_scanned_symbols, @object
	.size	number_of_scanned_symbols, 8
number_of_scanned_symbols:
	.zero	8
	.globl	source_name
	.align 8
	.type	source_name, @object
	.size	source_name, 8
source_name:
	.zero	8
	.globl	source_fd
	.align 8
	.type	source_fd, @object
	.size	source_fd, 8
source_fd:
	.zero	8
	.section	.rodata
.LC0:
	.string	"identifier"
.LC1:
	.string	"integer"
.LC2:
	.string	"void"
.LC3:
	.string	"uint64_t"
.LC4:
	.string	";"
.LC5:
	.string	"if"
.LC6:
	.string	"else"
.LC7:
	.string	"+"
.LC8:
	.string	"-"
.LC9:
	.string	"*"
.LC10:
	.string	"/"
.LC11:
	.string	"=="
.LC12:
	.string	"="
.LC13:
	.string	"("
.LC14:
	.string	")"
.LC15:
	.string	"{"
.LC16:
	.string	"}"
.LC17:
	.string	"while"
.LC18:
	.string	"return"
.LC19:
	.string	","
.LC20:
	.string	"<"
.LC21:
	.string	"<="
.LC22:
	.string	">"
.LC23:
	.string	">="
.LC24:
	.string	"!="
.LC25:
	.string	"%"
.LC26:
	.string	"character"
.LC27:
	.string	"string"
	.text
	.globl	init_scanner
	.type	init_scanner, @function
init_scanner:
.LFB2:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR SYM_STRING[rip]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR SIZEOFUINT64STAR[rip]
	imul	rax, rdx
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR SYMBOLS[rip], rax
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC0[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_INTEGER[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC1[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_VOID[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC2[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_UINT64[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC3[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC4[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_IF[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC5[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_ELSE[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC6[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_PLUS[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC7[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_MINUS[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC8[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC9[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_DIV[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC10[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_EQUALITY[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC11[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC12[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC13[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC14[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_LBRACE[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC15[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC16[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_WHILE[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC17[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_RETURN[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC18[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_COMMA[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC19[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_LT[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC20[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_LEQ[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC21[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_GT[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC22[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_GEQ[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC23[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_NOTEQ[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC24[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_MOD[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC25[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_CHARACTER[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC26[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR SYM_STRING[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC27[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR CHAR_EOF[rip]
	mov	QWORD PTR character[rip], rax
	mov	rax, QWORD PTR SYM_EOF[rip]
	mov	QWORD PTR symbol[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	init_scanner, .-init_scanner
	.globl	reset_scanner
	.type	reset_scanner, @function
reset_scanner:
.LFB3:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR line_number[rip], 1
	mov	QWORD PTR number_of_read_characters[rip], 0
	mov	eax, 0
	call	get_character
	mov	QWORD PTR number_of_ignored_characters[rip], 0
	mov	QWORD PTR number_of_comments[rip], 0
	mov	QWORD PTR number_of_scanned_symbols[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	reset_scanner, .-reset_scanner
	.globl	get_next_entry
	.type	get_next_entry, @function
get_next_entry:
.LFB4:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	get_next_entry, .-get_next_entry
	.globl	get_string
	.type	get_string, @function
get_string:
.LFB5:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	get_string, .-get_string
	.globl	get_line_number
	.type	get_line_number, @function
get_line_number:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	get_line_number, .-get_line_number
	.globl	get_class
	.type	get_class, @function
get_class:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	get_class, .-get_class
	.globl	get_type
	.type	get_type, @function
get_type:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 32[rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	get_type, .-get_type
	.globl	get_value
	.type	get_value, @function
get_value:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 40[rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	get_value, .-get_value
	.globl	get_address
	.type	get_address, @function
get_address:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 48[rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	get_address, .-get_address
	.globl	get_scope
	.type	get_scope, @function
get_scope:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 56[rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	get_scope, .-get_scope
	.globl	set_next_entry
	.type	set_next_entry, @function
set_next_entry:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	set_next_entry, .-set_next_entry
	.globl	set_string
	.type	set_string, @function
set_string:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	set_string, .-set_string
	.globl	set_line_number
	.type	set_line_number, @function
set_line_number:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 16[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	set_line_number, .-set_line_number
	.globl	set_class
	.type	set_class, @function
set_class:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	set_class, .-set_class
	.globl	set_type
	.type	set_type, @function
set_type:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 32[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	set_type, .-set_type
	.globl	set_value
	.type	set_value, @function
set_value:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 40[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	set_value, .-set_value
	.globl	set_address
	.type	set_address, @function
set_address:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 48[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	set_address, .-set_address
	.globl	set_scope
	.type	set_scope, @function
set_scope:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 56[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	set_scope, .-set_scope
	.globl	VARIABLE
	.data
	.align 8
	.type	VARIABLE, @object
	.size	VARIABLE, 8
VARIABLE:
	.quad	1
	.globl	BIGINT
	.align 8
	.type	BIGINT, @object
	.size	BIGINT, 8
BIGINT:
	.quad	2
	.globl	STRING
	.align 8
	.type	STRING, @object
	.size	STRING, 8
STRING:
	.quad	3
	.globl	PROCEDURE
	.align 8
	.type	PROCEDURE, @object
	.size	PROCEDURE, 8
PROCEDURE:
	.quad	4
	.globl	UINT64_T
	.align 8
	.type	UINT64_T, @object
	.size	UINT64_T, 8
UINT64_T:
	.quad	1
	.globl	UINT64STAR_T
	.align 8
	.type	UINT64STAR_T, @object
	.size	UINT64STAR_T, 8
UINT64STAR_T:
	.quad	2
	.globl	VOID_T
	.align 8
	.type	VOID_T, @object
	.size	VOID_T, 8
VOID_T:
	.quad	3
	.globl	GLOBAL_TABLE
	.align 8
	.type	GLOBAL_TABLE, @object
	.size	GLOBAL_TABLE, 8
GLOBAL_TABLE:
	.quad	1
	.globl	LOCAL_TABLE
	.align 8
	.type	LOCAL_TABLE, @object
	.size	LOCAL_TABLE, 8
LOCAL_TABLE:
	.quad	2
	.globl	LIBRARY_TABLE
	.align 8
	.type	LIBRARY_TABLE, @object
	.size	LIBRARY_TABLE, 8
LIBRARY_TABLE:
	.quad	3
	.globl	HASH_TABLE_SIZE
	.align 8
	.type	HASH_TABLE_SIZE, @object
	.size	HASH_TABLE_SIZE, 8
HASH_TABLE_SIZE:
	.quad	1024
	.globl	global_symbol_table
	.bss
	.align 8
	.type	global_symbol_table, @object
	.size	global_symbol_table, 8
global_symbol_table:
	.zero	8
	.globl	local_symbol_table
	.align 8
	.type	local_symbol_table, @object
	.size	local_symbol_table, 8
local_symbol_table:
	.zero	8
	.globl	library_symbol_table
	.align 8
	.type	library_symbol_table, @object
	.size	library_symbol_table, 8
library_symbol_table:
	.zero	8
	.globl	number_of_global_variables
	.align 8
	.type	number_of_global_variables, @object
	.size	number_of_global_variables, 8
number_of_global_variables:
	.zero	8
	.globl	number_of_procedures
	.align 8
	.type	number_of_procedures, @object
	.size	number_of_procedures, 8
number_of_procedures:
	.zero	8
	.globl	number_of_strings
	.align 8
	.type	number_of_strings, @object
	.size	number_of_strings, 8
number_of_strings:
	.zero	8
	.globl	number_of_searches
	.align 8
	.type	number_of_searches, @object
	.size	number_of_searches, 8
number_of_searches:
	.zero	8
	.globl	total_search_time
	.align 8
	.type	total_search_time, @object
	.size	total_search_time, 8
total_search_time:
	.zero	8
	.text
	.globl	reset_symbol_tables
	.type	reset_symbol_tables, @function
reset_symbol_tables:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	rax, QWORD PTR SIZEOFUINT64STAR[rip]
	imul	rax, rdx
	mov	rdi, rax
	call	zalloc
	mov	QWORD PTR global_symbol_table[rip], rax
	mov	QWORD PTR local_symbol_table[rip], 0
	mov	QWORD PTR library_symbol_table[rip], 0
	mov	QWORD PTR number_of_global_variables[rip], 0
	mov	QWORD PTR number_of_procedures[rip], 0
	mov	QWORD PTR number_of_strings[rip], 0
	mov	QWORD PTR number_of_searches[rip], 0
	mov	QWORD PTR total_search_time[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	reset_symbol_tables, .-reset_symbol_tables
	.globl	allocated_temporaries
	.bss
	.align 8
	.type	allocated_temporaries, @object
	.size	allocated_temporaries, 8
allocated_temporaries:
	.zero	8
	.globl	allocated_memory
	.align 8
	.type	allocated_memory, @object
	.size	allocated_memory, 8
allocated_memory:
	.zero	8
	.globl	return_branches
	.align 8
	.type	return_branches, @object
	.size	return_branches, 8
return_branches:
	.zero	8
	.globl	return_type
	.align 8
	.type	return_type, @object
	.size	return_type, 8
return_type:
	.zero	8
	.globl	number_of_calls
	.align 8
	.type	number_of_calls, @object
	.size	number_of_calls, 8
number_of_calls:
	.zero	8
	.globl	number_of_assignments
	.align 8
	.type	number_of_assignments, @object
	.size	number_of_assignments, 8
number_of_assignments:
	.zero	8
	.globl	number_of_while
	.align 8
	.type	number_of_while, @object
	.size	number_of_while, 8
number_of_while:
	.zero	8
	.globl	number_of_if
	.align 8
	.type	number_of_if, @object
	.size	number_of_if, 8
number_of_if:
	.zero	8
	.globl	number_of_return
	.align 8
	.type	number_of_return, @object
	.size	number_of_return, 8
number_of_return:
	.zero	8
	.text
	.globl	reset_parser
	.type	reset_parser, @function
reset_parser:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR number_of_calls[rip], 0
	mov	QWORD PTR number_of_assignments[rip], 0
	mov	QWORD PTR number_of_while[rip], 0
	mov	QWORD PTR number_of_if[rip], 0
	mov	QWORD PTR number_of_return[rip], 0
	mov	eax, 0
	call	get_symbol
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	reset_parser, .-reset_parser
	.globl	NUMBEROFREGISTERS
	.data
	.align 8
	.type	NUMBEROFREGISTERS, @object
	.size	NUMBEROFREGISTERS, 8
NUMBEROFREGISTERS:
	.quad	32
	.globl	NUMBEROFTEMPORARIES
	.align 8
	.type	NUMBEROFTEMPORARIES, @object
	.size	NUMBEROFTEMPORARIES, 8
NUMBEROFTEMPORARIES:
	.quad	7
	.globl	REG_ZR
	.bss
	.align 8
	.type	REG_ZR, @object
	.size	REG_ZR, 8
REG_ZR:
	.zero	8
	.globl	REG_RA
	.data
	.align 8
	.type	REG_RA, @object
	.size	REG_RA, 8
REG_RA:
	.quad	1
	.globl	REG_SP
	.align 8
	.type	REG_SP, @object
	.size	REG_SP, 8
REG_SP:
	.quad	2
	.globl	REG_GP
	.align 8
	.type	REG_GP, @object
	.size	REG_GP, 8
REG_GP:
	.quad	3
	.globl	REG_TP
	.align 8
	.type	REG_TP, @object
	.size	REG_TP, 8
REG_TP:
	.quad	4
	.globl	REG_T0
	.align 8
	.type	REG_T0, @object
	.size	REG_T0, 8
REG_T0:
	.quad	5
	.globl	REG_T1
	.align 8
	.type	REG_T1, @object
	.size	REG_T1, 8
REG_T1:
	.quad	6
	.globl	REG_T2
	.align 8
	.type	REG_T2, @object
	.size	REG_T2, 8
REG_T2:
	.quad	7
	.globl	REG_FP
	.align 8
	.type	REG_FP, @object
	.size	REG_FP, 8
REG_FP:
	.quad	8
	.globl	REG_S1
	.align 8
	.type	REG_S1, @object
	.size	REG_S1, 8
REG_S1:
	.quad	9
	.globl	REG_A0
	.align 8
	.type	REG_A0, @object
	.size	REG_A0, 8
REG_A0:
	.quad	10
	.globl	REG_A1
	.align 8
	.type	REG_A1, @object
	.size	REG_A1, 8
REG_A1:
	.quad	11
	.globl	REG_A2
	.align 8
	.type	REG_A2, @object
	.size	REG_A2, 8
REG_A2:
	.quad	12
	.globl	REG_A3
	.align 8
	.type	REG_A3, @object
	.size	REG_A3, 8
REG_A3:
	.quad	13
	.globl	REG_A4
	.align 8
	.type	REG_A4, @object
	.size	REG_A4, 8
REG_A4:
	.quad	14
	.globl	REG_A5
	.align 8
	.type	REG_A5, @object
	.size	REG_A5, 8
REG_A5:
	.quad	15
	.globl	REG_A6
	.align 8
	.type	REG_A6, @object
	.size	REG_A6, 8
REG_A6:
	.quad	16
	.globl	REG_A7
	.align 8
	.type	REG_A7, @object
	.size	REG_A7, 8
REG_A7:
	.quad	17
	.globl	REG_S2
	.align 8
	.type	REG_S2, @object
	.size	REG_S2, 8
REG_S2:
	.quad	18
	.globl	REG_S3
	.align 8
	.type	REG_S3, @object
	.size	REG_S3, 8
REG_S3:
	.quad	19
	.globl	REG_S4
	.align 8
	.type	REG_S4, @object
	.size	REG_S4, 8
REG_S4:
	.quad	20
	.globl	REG_S5
	.align 8
	.type	REG_S5, @object
	.size	REG_S5, 8
REG_S5:
	.quad	21
	.globl	REG_S6
	.align 8
	.type	REG_S6, @object
	.size	REG_S6, 8
REG_S6:
	.quad	22
	.globl	REG_S7
	.align 8
	.type	REG_S7, @object
	.size	REG_S7, 8
REG_S7:
	.quad	23
	.globl	REG_S8
	.align 8
	.type	REG_S8, @object
	.size	REG_S8, 8
REG_S8:
	.quad	24
	.globl	REG_S9
	.align 8
	.type	REG_S9, @object
	.size	REG_S9, 8
REG_S9:
	.quad	25
	.globl	REG_S10
	.align 8
	.type	REG_S10, @object
	.size	REG_S10, 8
REG_S10:
	.quad	26
	.globl	REG_S11
	.align 8
	.type	REG_S11, @object
	.size	REG_S11, 8
REG_S11:
	.quad	27
	.globl	REG_T3
	.align 8
	.type	REG_T3, @object
	.size	REG_T3, 8
REG_T3:
	.quad	28
	.globl	REG_T4
	.align 8
	.type	REG_T4, @object
	.size	REG_T4, 8
REG_T4:
	.quad	29
	.globl	REG_T5
	.align 8
	.type	REG_T5, @object
	.size	REG_T5, 8
REG_T5:
	.quad	30
	.globl	REG_T6
	.align 8
	.type	REG_T6, @object
	.size	REG_T6, 8
REG_T6:
	.quad	31
	.globl	REGISTERS
	.bss
	.align 8
	.type	REGISTERS, @object
	.size	REGISTERS, 8
REGISTERS:
	.zero	8
	.section	.rodata
.LC28:
	.string	"$zero"
.LC29:
	.string	"$ra"
.LC30:
	.string	"$sp"
.LC31:
	.string	"$gp"
.LC32:
	.string	"$tp"
.LC33:
	.string	"$t0"
.LC34:
	.string	"$t1"
.LC35:
	.string	"$t2"
.LC36:
	.string	"$fp"
.LC37:
	.string	"$s1"
.LC38:
	.string	"$a0"
.LC39:
	.string	"$a1"
.LC40:
	.string	"$a2"
.LC41:
	.string	"$a3"
.LC42:
	.string	"$a4"
.LC43:
	.string	"$a5"
.LC44:
	.string	"$a6"
.LC45:
	.string	"$a7"
.LC46:
	.string	"$s2"
.LC47:
	.string	"$s3"
.LC48:
	.string	"$s4"
.LC49:
	.string	"$s5"
.LC50:
	.string	"$s6"
.LC51:
	.string	"$s7"
.LC52:
	.string	"$s8"
.LC53:
	.string	"$s9"
.LC54:
	.string	"$s10"
.LC55:
	.string	"$s11"
.LC56:
	.string	"$t3"
.LC57:
	.string	"$t4"
.LC58:
	.string	"$t5"
.LC59:
	.string	"$t6"
	.text
	.globl	init_register
	.type	init_register, @function
init_register:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR NUMBEROFREGISTERS[rip]
	mov	rax, QWORD PTR SIZEOFUINT64STAR[rip]
	imul	rax, rdx
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR REGISTERS[rip], rax
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC28[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_RA[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC29[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC30[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_GP[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC31[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_TP[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC32[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T0[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC33[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T1[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC34[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T2[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC35[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_FP[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC36[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S1[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC37[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC38[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC39[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A2[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC40[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A3[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC41[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A4[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC42[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A5[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC43[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A6[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC44[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC45[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S2[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC46[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S3[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC47[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S4[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC48[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S5[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC49[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S6[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC50[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S7[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC51[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S8[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC52[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S9[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC53[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S10[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC54[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_S11[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC55[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T3[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC56[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T4[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC57[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T5[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC58[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR REG_T6[rip]
	sal	rax, 3
	add	rax, rdx
	lea	rdx, .LC59[rip]
	mov	QWORD PTR [rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	init_register, .-init_register
	.globl	OP_LD
	.data
	.align 8
	.type	OP_LD, @object
	.size	OP_LD, 8
OP_LD:
	.quad	3
	.globl	OP_IMM
	.align 8
	.type	OP_IMM, @object
	.size	OP_IMM, 8
OP_IMM:
	.quad	19
	.globl	OP_SD
	.align 8
	.type	OP_SD, @object
	.size	OP_SD, 8
OP_SD:
	.quad	35
	.globl	OP_OP
	.align 8
	.type	OP_OP, @object
	.size	OP_OP, 8
OP_OP:
	.quad	51
	.globl	OP_LUI
	.align 8
	.type	OP_LUI, @object
	.size	OP_LUI, 8
OP_LUI:
	.quad	55
	.globl	OP_BRANCH
	.align 8
	.type	OP_BRANCH, @object
	.size	OP_BRANCH, 8
OP_BRANCH:
	.quad	99
	.globl	OP_JALR
	.align 8
	.type	OP_JALR, @object
	.size	OP_JALR, 8
OP_JALR:
	.quad	103
	.globl	OP_JAL
	.align 8
	.type	OP_JAL, @object
	.size	OP_JAL, 8
OP_JAL:
	.quad	111
	.globl	OP_SYSTEM
	.align 8
	.type	OP_SYSTEM, @object
	.size	OP_SYSTEM, 8
OP_SYSTEM:
	.quad	115
	.globl	F3_NOP
	.bss
	.align 8
	.type	F3_NOP, @object
	.size	F3_NOP, 8
F3_NOP:
	.zero	8
	.globl	F3_ADDI
	.align 8
	.type	F3_ADDI, @object
	.size	F3_ADDI, 8
F3_ADDI:
	.zero	8
	.globl	F3_ADD
	.align 8
	.type	F3_ADD, @object
	.size	F3_ADD, 8
F3_ADD:
	.zero	8
	.globl	F3_SUB
	.align 8
	.type	F3_SUB, @object
	.size	F3_SUB, 8
F3_SUB:
	.zero	8
	.globl	F3_MUL
	.align 8
	.type	F3_MUL, @object
	.size	F3_MUL, 8
F3_MUL:
	.zero	8
	.globl	F3_XOR
	.data
	.align 8
	.type	F3_XOR, @object
	.size	F3_XOR, 8
F3_XOR:
	.quad	4
	.globl	F3_DIVU
	.align 8
	.type	F3_DIVU, @object
	.size	F3_DIVU, 8
F3_DIVU:
	.quad	5
	.globl	F3_REMU
	.align 8
	.type	F3_REMU, @object
	.size	F3_REMU, 8
F3_REMU:
	.quad	7
	.globl	F3_SLTU
	.align 8
	.type	F3_SLTU, @object
	.size	F3_SLTU, 8
F3_SLTU:
	.quad	3
	.globl	F3_LD
	.align 8
	.type	F3_LD, @object
	.size	F3_LD, 8
F3_LD:
	.quad	3
	.globl	F3_SD
	.align 8
	.type	F3_SD, @object
	.size	F3_SD, 8
F3_SD:
	.quad	3
	.globl	F3_BEQ
	.bss
	.align 8
	.type	F3_BEQ, @object
	.size	F3_BEQ, 8
F3_BEQ:
	.zero	8
	.globl	F3_JALR
	.align 8
	.type	F3_JALR, @object
	.size	F3_JALR, 8
F3_JALR:
	.zero	8
	.globl	F3_ECALL
	.align 8
	.type	F3_ECALL, @object
	.size	F3_ECALL, 8
F3_ECALL:
	.zero	8
	.globl	F7_ADD
	.align 8
	.type	F7_ADD, @object
	.size	F7_ADD, 8
F7_ADD:
	.zero	8
	.globl	F7_MUL
	.data
	.align 8
	.type	F7_MUL, @object
	.size	F7_MUL, 8
F7_MUL:
	.quad	1
	.globl	F7_SUB
	.align 8
	.type	F7_SUB, @object
	.size	F7_SUB, 8
F7_SUB:
	.quad	32
	.globl	F7_DIVU
	.align 8
	.type	F7_DIVU, @object
	.size	F7_DIVU, 8
F7_DIVU:
	.quad	1
	.globl	F7_REMU
	.align 8
	.type	F7_REMU, @object
	.size	F7_REMU, 8
F7_REMU:
	.quad	1
	.globl	F7_SLTU
	.bss
	.align 8
	.type	F7_SLTU, @object
	.size	F7_SLTU, 8
F7_SLTU:
	.zero	8
	.globl	F7_XOR
	.align 8
	.type	F7_XOR, @object
	.size	F7_XOR, 8
F7_XOR:
	.zero	8
	.globl	F12_ECALL
	.align 8
	.type	F12_ECALL, @object
	.size	F12_ECALL, 8
F12_ECALL:
	.zero	8
	.globl	opcode
	.align 8
	.type	opcode, @object
	.size	opcode, 8
opcode:
	.zero	8
	.globl	rs1
	.align 8
	.type	rs1, @object
	.size	rs1, 8
rs1:
	.zero	8
	.globl	rs2
	.align 8
	.type	rs2, @object
	.size	rs2, 8
rs2:
	.zero	8
	.globl	rd
	.align 8
	.type	rd, @object
	.size	rd, 8
rd:
	.zero	8
	.globl	imm
	.align 8
	.type	imm, @object
	.size	imm, 8
imm:
	.zero	8
	.globl	funct3
	.align 8
	.type	funct3, @object
	.size	funct3, 8
funct3:
	.zero	8
	.globl	funct7
	.align 8
	.type	funct7, @object
	.size	funct7, 8
funct7:
	.zero	8
	.globl	MAX_BINARY_LENGTH
	.data
	.align 8
	.type	MAX_BINARY_LENGTH, @object
	.size	MAX_BINARY_LENGTH, 8
MAX_BINARY_LENGTH:
	.quad	262144
	.globl	MAX_CODE_LENGTH
	.align 8
	.type	MAX_CODE_LENGTH, @object
	.size	MAX_CODE_LENGTH, 8
MAX_CODE_LENGTH:
	.quad	245760
	.globl	MAX_DATA_LENGTH
	.align 8
	.type	MAX_DATA_LENGTH, @object
	.size	MAX_DATA_LENGTH, 8
MAX_DATA_LENGTH:
	.quad	16384
	.globl	ELF_HEADER_LEN
	.align 8
	.type	ELF_HEADER_LEN, @object
	.size	ELF_HEADER_LEN, 8
ELF_HEADER_LEN:
	.quad	120
	.globl	ELF_ENTRY_POINT
	.align 8
	.type	ELF_ENTRY_POINT, @object
	.size	ELF_ENTRY_POINT, 8
ELF_ENTRY_POINT:
	.quad	65536
	.globl	ic_lui
	.bss
	.align 8
	.type	ic_lui, @object
	.size	ic_lui, 8
ic_lui:
	.zero	8
	.globl	ic_addi
	.align 8
	.type	ic_addi, @object
	.size	ic_addi, 8
ic_addi:
	.zero	8
	.globl	ic_add
	.align 8
	.type	ic_add, @object
	.size	ic_add, 8
ic_add:
	.zero	8
	.globl	ic_sub
	.align 8
	.type	ic_sub, @object
	.size	ic_sub, 8
ic_sub:
	.zero	8
	.globl	ic_mul
	.align 8
	.type	ic_mul, @object
	.size	ic_mul, 8
ic_mul:
	.zero	8
	.globl	ic_divu
	.align 8
	.type	ic_divu, @object
	.size	ic_divu, 8
ic_divu:
	.zero	8
	.globl	ic_remu
	.align 8
	.type	ic_remu, @object
	.size	ic_remu, 8
ic_remu:
	.zero	8
	.globl	ic_xor
	.align 8
	.type	ic_xor, @object
	.size	ic_xor, 8
ic_xor:
	.zero	8
	.globl	ic_sltu
	.align 8
	.type	ic_sltu, @object
	.size	ic_sltu, 8
ic_sltu:
	.zero	8
	.globl	ic_ld
	.align 8
	.type	ic_ld, @object
	.size	ic_ld, 8
ic_ld:
	.zero	8
	.globl	ic_sd
	.align 8
	.type	ic_sd, @object
	.size	ic_sd, 8
ic_sd:
	.zero	8
	.globl	ic_beq
	.align 8
	.type	ic_beq, @object
	.size	ic_beq, 8
ic_beq:
	.zero	8
	.globl	ic_jal
	.align 8
	.type	ic_jal, @object
	.size	ic_jal, 8
ic_jal:
	.zero	8
	.globl	ic_jalr
	.align 8
	.type	ic_jalr, @object
	.size	ic_jalr, 8
ic_jalr:
	.zero	8
	.globl	ic_ecall
	.align 8
	.type	ic_ecall, @object
	.size	ic_ecall, 8
ic_ecall:
	.zero	8
	.globl	binary
	.align 8
	.type	binary, @object
	.size	binary, 8
binary:
	.zero	8
	.globl	binary_length
	.align 8
	.type	binary_length, @object
	.size	binary_length, 8
binary_length:
	.zero	8
	.globl	binary_name
	.align 8
	.type	binary_name, @object
	.size	binary_name, 8
binary_name:
	.zero	8
	.globl	code_length
	.align 8
	.type	code_length, @object
	.size	code_length, 8
code_length:
	.zero	8
	.globl	entry_point
	.align 8
	.type	entry_point, @object
	.size	entry_point, 8
entry_point:
	.zero	8
	.globl	code_line_number
	.align 8
	.type	code_line_number, @object
	.size	code_line_number, 8
code_line_number:
	.zero	8
	.globl	data_line_number
	.align 8
	.type	data_line_number, @object
	.size	data_line_number, 8
data_line_number:
	.zero	8
	.globl	assembly_name
	.align 8
	.type	assembly_name, @object
	.size	assembly_name, 8
assembly_name:
	.zero	8
	.globl	assembly_fd
	.align 8
	.type	assembly_fd, @object
	.size	assembly_fd, 8
assembly_fd:
	.zero	8
	.globl	ELF_header
	.align 8
	.type	ELF_header, @object
	.size	ELF_header, 8
ELF_header:
	.zero	8
	.globl	SYSCALL_EXIT
	.data
	.align 8
	.type	SYSCALL_EXIT, @object
	.size	SYSCALL_EXIT, 8
SYSCALL_EXIT:
	.quad	93
	.globl	SYSCALL_READ
	.align 8
	.type	SYSCALL_READ, @object
	.size	SYSCALL_READ, 8
SYSCALL_READ:
	.quad	63
	.globl	SYSCALL_WRITE
	.align 8
	.type	SYSCALL_WRITE, @object
	.size	SYSCALL_WRITE, 8
SYSCALL_WRITE:
	.quad	64
	.globl	SYSCALL_OPEN
	.align 8
	.type	SYSCALL_OPEN, @object
	.size	SYSCALL_OPEN, 8
SYSCALL_OPEN:
	.quad	1024
	.globl	SYSCALL_BRK
	.align 8
	.type	SYSCALL_BRK, @object
	.size	SYSCALL_BRK, 8
SYSCALL_BRK:
	.quad	214
	.globl	SYSCALL_SYMBOLIC_INPUT
	.align 8
	.type	SYSCALL_SYMBOLIC_INPUT, @object
	.size	SYSCALL_SYMBOLIC_INPUT, 8
SYSCALL_SYMBOLIC_INPUT:
	.quad	42
	.globl	SYSCALL_PRINTSV
	.align 8
	.type	SYSCALL_PRINTSV, @object
	.size	SYSCALL_PRINTSV, 8
SYSCALL_PRINTSV:
	.quad	43
	.globl	SYSCALL_ASSERT_ZONE_BGN
	.align 8
	.type	SYSCALL_ASSERT_ZONE_BGN, @object
	.size	SYSCALL_ASSERT_ZONE_BGN, 8
SYSCALL_ASSERT_ZONE_BGN:
	.quad	44
	.globl	SYSCALL_ASSERT
	.align 8
	.type	SYSCALL_ASSERT, @object
	.size	SYSCALL_ASSERT, 8
SYSCALL_ASSERT:
	.quad	45
	.globl	SYSCALL_ASSERT_ZONE_END
	.align 8
	.type	SYSCALL_ASSERT_ZONE_END, @object
	.size	SYSCALL_ASSERT_ZONE_END, 8
SYSCALL_ASSERT_ZONE_END:
	.quad	46
	.globl	SYSCALL_SWITCH
	.align 8
	.type	SYSCALL_SWITCH, @object
	.size	SYSCALL_SWITCH, 8
SYSCALL_SWITCH:
	.quad	401
	.globl	WORDSIZE
	.align 8
	.type	WORDSIZE, @object
	.size	WORDSIZE, 8
WORDSIZE:
	.quad	4
	.globl	WORDSIZEINBITS
	.align 8
	.type	WORDSIZEINBITS, @object
	.size	WORDSIZEINBITS, 8
WORDSIZEINBITS:
	.quad	32
	.globl	INSTRUCTIONSIZE
	.align 8
	.type	INSTRUCTIONSIZE, @object
	.size	INSTRUCTIONSIZE, 8
INSTRUCTIONSIZE:
	.quad	4
	.globl	REGISTERSIZE
	.align 8
	.type	REGISTERSIZE, @object
	.size	REGISTERSIZE, 8
REGISTERSIZE:
	.quad	8
	.globl	PAGESIZE
	.align 8
	.type	PAGESIZE, @object
	.size	PAGESIZE, 8
PAGESIZE:
	.quad	4096
	.globl	disassemble
	.bss
	.align 8
	.type	disassemble, @object
	.size	disassemble, 8
disassemble:
	.zero	8
	.globl	disassemble_verbose
	.align 8
	.type	disassemble_verbose, @object
	.size	disassemble_verbose, 8
disassemble_verbose:
	.zero	8
	.globl	pc
	.align 8
	.type	pc, @object
	.size	pc, 8
pc:
	.zero	8
	.globl	ir
	.align 8
	.type	ir, @object
	.size	ir, 8
ir:
	.zero	8
	.globl	registers
	.align 8
	.type	registers, @object
	.size	registers, 8
registers:
	.zero	8
	.text
	.globl	reset_interpreter
	.type	reset_interpreter, @function
reset_interpreter:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR pc[rip], 0
	mov	QWORD PTR ir[rip], 0
	mov	QWORD PTR registers[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	reset_interpreter, .-reset_interpreter
	.globl	DONOTEXIT
	.bss
	.align 8
	.type	DONOTEXIT, @object
	.size	DONOTEXIT, 8
DONOTEXIT:
	.zero	8
	.globl	EXIT
	.data
	.align 8
	.type	EXIT, @object
	.size	EXIT, 8
EXIT:
	.quad	1
	.globl	EXITCODE_NOERROR
	.bss
	.align 8
	.type	EXITCODE_NOERROR, @object
	.size	EXITCODE_NOERROR, 8
EXITCODE_NOERROR:
	.zero	8
	.globl	EXITCODE_BADARGUMENTS
	.data
	.align 8
	.type	EXITCODE_BADARGUMENTS, @object
	.size	EXITCODE_BADARGUMENTS, 8
EXITCODE_BADARGUMENTS:
	.quad	1
	.globl	EXITCODE_IOERROR
	.align 8
	.type	EXITCODE_IOERROR, @object
	.size	EXITCODE_IOERROR, 8
EXITCODE_IOERROR:
	.quad	2
	.globl	EXITCODE_SCANNERERROR
	.align 8
	.type	EXITCODE_SCANNERERROR, @object
	.size	EXITCODE_SCANNERERROR, 8
EXITCODE_SCANNERERROR:
	.quad	3
	.globl	EXITCODE_PARSERERROR
	.align 8
	.type	EXITCODE_PARSERERROR, @object
	.size	EXITCODE_PARSERERROR, 8
EXITCODE_PARSERERROR:
	.quad	4
	.globl	EXITCODE_COMPILERERROR
	.align 8
	.type	EXITCODE_COMPILERERROR, @object
	.size	EXITCODE_COMPILERERROR, 8
EXITCODE_COMPILERERROR:
	.quad	5
	.globl	EXITCODE_OUTOFVIRTUALMEMORY
	.align 8
	.type	EXITCODE_OUTOFVIRTUALMEMORY, @object
	.size	EXITCODE_OUTOFVIRTUALMEMORY, 8
EXITCODE_OUTOFVIRTUALMEMORY:
	.quad	6
	.globl	EXITCODE_OUTOFPHYSICALMEMORY
	.align 8
	.type	EXITCODE_OUTOFPHYSICALMEMORY, @object
	.size	EXITCODE_OUTOFPHYSICALMEMORY, 8
EXITCODE_OUTOFPHYSICALMEMORY:
	.quad	7
	.globl	EXITCODE_DIVISIONBYZERO
	.align 8
	.type	EXITCODE_DIVISIONBYZERO, @object
	.size	EXITCODE_DIVISIONBYZERO, 8
EXITCODE_DIVISIONBYZERO:
	.quad	8
	.globl	EXITCODE_UNKNOWNINSTRUCTION
	.align 8
	.type	EXITCODE_UNKNOWNINSTRUCTION, @object
	.size	EXITCODE_UNKNOWNINSTRUCTION, 8
EXITCODE_UNKNOWNINSTRUCTION:
	.quad	9
	.globl	EXITCODE_UNKNOWNSYSCALL
	.align 8
	.type	EXITCODE_UNKNOWNSYSCALL, @object
	.size	EXITCODE_UNKNOWNSYSCALL, 8
EXITCODE_UNKNOWNSYSCALL:
	.quad	10
	.globl	EXITCODE_MULTIPLEEXCEPTIONERROR
	.align 8
	.type	EXITCODE_MULTIPLEEXCEPTIONERROR, @object
	.size	EXITCODE_MULTIPLEEXCEPTIONERROR, 8
EXITCODE_MULTIPLEEXCEPTIONERROR:
	.quad	11
	.globl	EXITCODE_SYMBOLICEXECUTIONERROR
	.align 8
	.type	EXITCODE_SYMBOLICEXECUTIONERROR, @object
	.size	EXITCODE_SYMBOLICEXECUTIONERROR, 8
EXITCODE_SYMBOLICEXECUTIONERROR:
	.quad	12
	.globl	EXITCODE_OUTOFTRACEMEMORY
	.align 8
	.type	EXITCODE_OUTOFTRACEMEMORY, @object
	.size	EXITCODE_OUTOFTRACEMEMORY, 8
EXITCODE_OUTOFTRACEMEMORY:
	.quad	13
	.globl	EXITCODE_UNCAUGHTEXCEPTION
	.align 8
	.type	EXITCODE_UNCAUGHTEXCEPTION, @object
	.size	EXITCODE_UNCAUGHTEXCEPTION, 8
EXITCODE_UNCAUGHTEXCEPTION:
	.quad	14
	.globl	SYSCALL_BITWIDTH
	.align 8
	.type	SYSCALL_BITWIDTH, @object
	.size	SYSCALL_BITWIDTH, 8
SYSCALL_BITWIDTH:
	.quad	32
	.globl	selfie_argc
	.bss
	.align 8
	.type	selfie_argc, @object
	.size	selfie_argc, 8
selfie_argc:
	.zero	8
	.globl	selfie_argv
	.align 8
	.type	selfie_argv, @object
	.size	selfie_argv, 8
selfie_argv:
	.zero	8
	.globl	selfie_name
	.align 8
	.type	selfie_name, @object
	.size	selfie_name, 8
selfie_name:
	.zero	8
	.text
	.globl	init_selfie
	.type	init_selfie, @function
init_selfie:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR selfie_argc[rip], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR selfie_argv[rip], rax
	mov	eax, 0
	call	get_argument
	mov	QWORD PTR selfie_name[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	init_selfie, .-init_selfie
	.globl	two_to_the_power_of
	.type	two_to_the_power_of, @function
two_to_the_power_of:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rdx, QWORD PTR power_of_two_table[rip]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	two_to_the_power_of, .-two_to_the_power_of
	.globl	ten_to_the_power_of
	.type	ten_to_the_power_of, @function
ten_to_the_power_of:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L39
	mov	eax, 1
	jmp	.L40
.L39:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, 1
	mov	rdi, rax
	call	ten_to_the_power_of
	mov	rdx, rax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rax
.L40:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	ten_to_the_power_of, .-ten_to_the_power_of
	.globl	left_shift
	.type	left_shift, @function
left_shift:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	two_to_the_power_of
	imul	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	left_shift, .-left_shift
	.globl	right_shift
	.type	right_shift, @function
right_shift:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	two_to_the_power_of
	mov	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rcx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	right_shift, .-right_shift
	.globl	get_bits
	.type	get_bits, @function
get_bits:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -16[rbp], rdi
	mov	QWORD PTR -24[rbp], rsi
	mov	QWORD PTR -32[rbp], rdx
	cmp	QWORD PTR -24[rbp], 0
	jne	.L46
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	two_to_the_power_of
	mov	rbx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, 0
	div	rbx
	mov	rcx, rdx
	mov	rax, rcx
	jmp	.L47
.L46:
	mov	rax, QWORD PTR CPUBITWIDTH[rip]
	sub	rax, QWORD PTR -32[rbp]
	mov	rbx, rax
	mov	rax, QWORD PTR CPUBITWIDTH[rip]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	add	rcx, rdx
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	left_shift
	mov	rsi, rbx
	mov	rdi, rax
	call	right_shift
.L47:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	get_bits, .-get_bits
	.globl	get_low_word
	.type	get_low_word, @function
get_low_word:
.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, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rdx, QWORD PTR WORDSIZEINBITS[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	get_low_word, .-get_low_word
	.globl	get_high_word
	.type	get_high_word, @function
get_high_word:
.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, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rdx, QWORD PTR WORDSIZEINBITS[rip]
	mov	rcx, QWORD PTR WORDSIZEINBITS[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	get_high_word, .-get_high_word
	.globl	abs
	.type	abs, @function
abs:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L53
	mov	rax, QWORD PTR -8[rbp]
	neg	rax
	jmp	.L54
.L53:
	mov	rax, QWORD PTR -8[rbp]
.L54:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	abs, .-abs
	.globl	signed_less_than
	.type	signed_less_than, @function
signed_less_than:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR INT64_MIN[rip]
	mov	rax, QWORD PTR -8[rbp]
	add	rdx, rax
	mov	rcx, QWORD PTR INT64_MIN[rip]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	cmp	rdx, rax
	setb	al
	movzx	eax, al
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	signed_less_than, .-signed_less_than
	.globl	signed_division
	.type	signed_division, @function
signed_division:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR INT64_MIN[rip]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L58
	mov	rax, QWORD PTR INT64_MIN[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L59
	mov	eax, 1
	jmp	.L60
.L59:
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L61
	mov	rbx, QWORD PTR INT64_MIN[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	abs
	mov	rcx, rax
	mov	rax, rbx
	mov	edx, 0
	div	rcx
	jmp	.L60
.L61:
	mov	rax, QWORD PTR INT64_MIN[rip]
	mov	edx, 0
	div	QWORD PTR -32[rbp]
	neg	rax
	jmp	.L60
.L58:
	mov	rax, QWORD PTR INT64_MIN[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L62
	mov	eax, 0
	jmp	.L60
.L62:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L63
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L64
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	abs
	mov	rbx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	abs
	mov	rcx, rax
	mov	rax, rbx
	mov	edx, 0
	div	rcx
	jmp	.L60
.L64:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	abs
	mov	edx, 0
	div	QWORD PTR -32[rbp]
	neg	rax
	jmp	.L60
.L63:
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L65
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	abs
	mov	rcx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	rcx
	neg	rax
	jmp	.L60
.L65:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	QWORD PTR -32[rbp]
.L60:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	signed_division, .-signed_division
	.globl	is_signed_integer
	.type	is_signed_integer, @function
is_signed_integer:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -16[rbp]
	sub	rax, 1
	mov	rdi, rax
	call	two_to_the_power_of
	cmp	QWORD PTR -8[rbp], rax
	jnb	.L67
	mov	eax, 1
	jmp	.L68
.L67:
	mov	rax, QWORD PTR -16[rbp]
	sub	rax, 1
	mov	rdi, rax
	call	two_to_the_power_of
	neg	rax
	cmp	QWORD PTR -8[rbp], rax
	jb	.L69
	mov	eax, 1
	jmp	.L68
.L69:
	mov	eax, 0
.L68:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	is_signed_integer, .-is_signed_integer
	.globl	sign_extend
	.type	sign_extend, @function
sign_extend:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -16[rbp]
	sub	rax, 1
	mov	rdi, rax
	call	two_to_the_power_of
	cmp	QWORD PTR -8[rbp], rax
	jnb	.L71
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L72
.L71:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	two_to_the_power_of
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, rdx
.L72:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	sign_extend, .-sign_extend
	.globl	sign_shrink
	.type	sign_shrink, @function
sign_shrink:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	sign_shrink, .-sign_shrink
	.globl	load_character
	.type	load_character, @function
load_character:
.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
	mov	rsi, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 0
	div	rsi
	mov	QWORD PTR -8[rbp], rax
	mov	rcx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	edx, 8
	mov	rsi, rcx
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	load_character, .-load_character
	.globl	store_character
	.type	store_character, @function
store_character:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 40
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	rsi, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -48[rbp]
	mov	edx, 0
	div	rsi
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	r12, QWORD PTR [rax]
	mov	rcx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -48[rbp]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	lea	rbx, 0[0+rax*8]
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rsi, rbx
	mov	rdi, rax
	call	left_shift
	mov	rbx, r12
	sub	rbx, rax
	mov	rcx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -48[rbp]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	left_shift
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rcx
	add	rdx, rbx
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	add	rsp, 40
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	store_character, .-store_character
	.globl	string_length
	.type	string_length, @function
string_length:
.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, 24
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -8[rbp], 0
	jmp	.L80
.L81:
	add	QWORD PTR -8[rbp], 1
.L80:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	test	rax, rax
	jne	.L81
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	string_length, .-string_length
	.globl	string_copy
	.type	string_copy, @function
string_copy:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	string_length
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	mov	rdi, rax
	call	zalloc
	mov	QWORD PTR -8[rbp], rax
	mov	QWORD PTR -24[rbp], 0
	jmp	.L84
.L85:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdx, rax
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -24[rbp], 1
.L84:
	mov	rax, QWORD PTR -24[rbp]
	cmp	rax, QWORD PTR -16[rbp]
	jbe	.L85
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	string_copy, .-string_copy
	.globl	string_reverse
	.type	string_reverse, @function
string_reverse:
.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, 40
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -24[rbp], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	string_length
	sub	rax, 1
	mov	QWORD PTR -16[rbp], rax
	jmp	.L88
.L89:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdx, rax
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -24[rbp], 1
	sub	QWORD PTR -16[rbp], 1
.L88:
	mov	rax, QWORD PTR -24[rbp]
	cmp	rax, QWORD PTR -16[rbp]
	jb	.L89
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	string_reverse, .-string_reverse
	.globl	string_compare
	.type	string_compare, @function
string_compare:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 32
	.cfi_offset 3, -24
	mov	QWORD PTR -32[rbp], rdi
	mov	QWORD PTR -40[rbp], rsi
	mov	QWORD PTR -16[rbp], 0
.L96:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	test	rax, rax
	jne	.L91
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	test	rax, rax
	jne	.L92
	mov	eax, 1
	jmp	.L93
.L92:
	mov	eax, 0
	jmp	.L93
.L91:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rbx, rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rbx, rax
	jne	.L94
	add	QWORD PTR -16[rbp], 1
	jmp	.L96
.L94:
	mov	eax, 0
.L93:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	string_compare, .-string_compare
	.section	.rodata
	.align 8
.LC60:
	.string	"%s: cannot convert non-decimal number %s\n"
	.align 8
.LC61:
	.string	"%s: cannot convert out-of-bound number %s\n"
	.text
	.globl	atoi
	.type	atoi, @function
atoi:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -24[rbp], 0
	mov	QWORD PTR -16[rbp], 0
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	QWORD PTR -8[rbp], rax
	jmp	.L99
.L105:
	sub	QWORD PTR -8[rbp], 48
	cmp	QWORD PTR -8[rbp], 9
	jbe	.L100
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC60[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_BADARGUMENTS[rip]
	mov	rdi, rax
	call	exit@PLT
.L100:
	mov	rax, QWORD PTR UINT64_MAX[rip]
	movabs	rdx, -3689348814741910323
	mul	rdx
	mov	rax, rdx
	shr	rax, 3
	cmp	QWORD PTR -16[rbp], rax
	jnb	.L101
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rax
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	jmp	.L102
.L101:
	mov	rax, QWORD PTR UINT64_MAX[rip]
	movabs	rdx, -3689348814741910323
	mul	rdx
	mov	rax, rdx
	shr	rax, 3
	cmp	QWORD PTR -16[rbp], rax
	jne	.L103
	mov	rcx, QWORD PTR UINT64_MAX[rip]
	movabs	rdx, -3689348814741910323
	mov	rax, rcx
	mul	rdx
	shr	rdx, 3
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rax
	sub	rcx, rax
	mov	rdx, rcx
	cmp	QWORD PTR -8[rbp], rdx
	ja	.L104
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rax
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	jmp	.L102
.L104:
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC61[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_BADARGUMENTS[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L102
.L103:
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC61[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_BADARGUMENTS[rip]
	mov	rdi, rax
	call	exit@PLT
.L102:
	add	QWORD PTR -24[rbp], 1
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	QWORD PTR -8[rbp], rax
.L99:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L105
	mov	rax, QWORD PTR -16[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	atoi, .-atoi
	.globl	itoa
	.type	itoa, @function
itoa:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	QWORD PTR -16[rbp], 0
	mov	QWORD PTR -8[rbp], 0
	cmp	QWORD PTR -24[rbp], 0
	jne	.L108
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 48
	mov	esi, 0
	mov	rdi, rax
	call	store_character
	mov	QWORD PTR -16[rbp], 1
	jmp	.L110
.L108:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L110
	cmp	QWORD PTR -40[rbp], 10
	jne	.L110
	neg	QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], 1
	jmp	.L110
.L113:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	QWORD PTR -40[rbp]
	mov	rax, rdx
	cmp	rax, 9
	jbe	.L111
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	QWORD PTR -40[rbp]
	mov	rax, rdx
	lea	rdx, 55[rax]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	jmp	.L112
.L111:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	QWORD PTR -40[rbp]
	mov	rax, rdx
	lea	rdx, 48[rax]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
.L112:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	QWORD PTR -40[rbp]
	mov	QWORD PTR -24[rbp], rax
	add	QWORD PTR -16[rbp], 1
.L110:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L113
	cmp	QWORD PTR -40[rbp], 10
	jne	.L119
	cmp	QWORD PTR -8[rbp], 0
	je	.L116
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 45
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -16[rbp], 1
	jmp	.L116
.L117:
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 32
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -16[rbp], 1
.L116:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -48[rbp]
	jb	.L117
	jmp	.L118
.L120:
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 48
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -16[rbp], 1
.L119:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -48[rbp]
	jb	.L120
	cmp	QWORD PTR -40[rbp], 8
	jne	.L121
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 48
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	rax, QWORD PTR -16[rbp]
	lea	rcx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 48
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -16[rbp], 2
	jmp	.L118
.L121:
	cmp	QWORD PTR -40[rbp], 16
	jne	.L118
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 120
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	rax, QWORD PTR -16[rbp]
	lea	rcx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 48
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -16[rbp], 2
.L118:
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	string_reverse
	mov	rax, QWORD PTR -32[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	itoa, .-itoa
	.globl	fixed_point_ratio
	.type	fixed_point_ratio, @function
fixed_point_ratio:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 56
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L124
.L127:
	mov	rbx, QWORD PTR UINT64_MAX[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	ten_to_the_power_of
	mov	rcx, rax
	mov	rax, rbx
	mov	edx, 0
	div	rcx
	cmp	QWORD PTR -40[rbp], rax
	ja	.L125
	mov	rax, QWORD PTR -56[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	ten_to_the_power_of
	cmp	QWORD PTR -48[rbp], rax
	jb	.L125
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	ten_to_the_power_of
	imul	rax, QWORD PTR -40[rbp]
	mov	rbx, rax
	mov	rax, QWORD PTR -56[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	ten_to_the_power_of
	mov	rsi, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	edx, 0
	div	rsi
	mov	rcx, rax
	mov	rax, rbx
	mov	edx, 0
	div	rcx
	jmp	.L126
.L125:
	sub	QWORD PTR -24[rbp], 1
.L124:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L127
	mov	eax, 0
.L126:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	fixed_point_ratio, .-fixed_point_ratio
	.globl	fixed_point_percentage
	.type	fixed_point_percentage, @function
fixed_point_percentage:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	cmp	QWORD PTR -8[rbp], 0
	je	.L129
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 4
	mov	rdi, rax
	call	ten_to_the_power_of
	mov	edx, 0
	div	QWORD PTR -8[rbp]
	jmp	.L130
.L129:
	mov	eax, 0
.L130:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	fixed_point_percentage, .-fixed_point_percentage
	.section	.rodata
	.align 8
.LC62:
	.string	"%s: could not write character to output file %s\n"
	.text
	.globl	put_character
	.type	put_character, @function
put_character:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR character_buffer[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rcx, QWORD PTR character_buffer[rip]
	mov	rax, QWORD PTR output_fd[rip]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	write@PLT
	cmp	rax, 1
	jne	.L132
	mov	rax, QWORD PTR output_fd[rip]
	cmp	rax, 1
	je	.L135
	mov	rax, QWORD PTR number_of_written_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_written_characters[rip], rax
	jmp	.L135
.L132:
	mov	rax, QWORD PTR output_fd[rip]
	cmp	rax, 1
	je	.L134
	mov	QWORD PTR output_fd[rip], 1
	mov	rdx, QWORD PTR output_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC62[rip]
	call	printf2
.L134:
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L135:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	put_character, .-put_character
	.section	.rodata
.LC63:
	.string	"NULL"
	.text
	.globl	print
	.type	print, @function
print:
.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L137
	lea	rdi, .LC63[rip]
	call	print
	jmp	.L141
.L137:
	mov	QWORD PTR -8[rbp], 0
	jmp	.L139
.L140:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdi, rax
	call	put_character
	add	QWORD PTR -8[rbp], 1
.L139:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	test	rax, rax
	jne	.L140
.L141:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	print, .-print
	.globl	println
	.type	println, @function
println:
.LFB50:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR CHAR_LF[rip]
	mov	rdi, rax
	call	put_character
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	println, .-println
	.section	.rodata
.LC64:
	.string	"end of file"
.LC65:
	.string	"tabulator"
.LC66:
	.string	"line feed"
.LC67:
	.string	"carriage return"
	.text
	.globl	print_character
	.type	print_character, @function
print_character:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	mov	rdi, rax
	call	put_character
	mov	rax, QWORD PTR CHAR_EOF[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L144
	lea	rdi, .LC64[rip]
	call	print
	jmp	.L145
.L144:
	mov	rax, QWORD PTR CHAR_TAB[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L146
	lea	rdi, .LC65[rip]
	call	print
	jmp	.L145
.L146:
	mov	rax, QWORD PTR CHAR_LF[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L147
	lea	rdi, .LC66[rip]
	call	print
	jmp	.L145
.L147:
	mov	rax, QWORD PTR CHAR_CR[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L148
	lea	rdi, .LC67[rip]
	call	print
	jmp	.L145
.L148:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	put_character
.L145:
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	mov	rdi, rax
	call	put_character
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	print_character, .-print_character
	.globl	print_string
	.type	print_string, @function
print_string:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	mov	rdi, rax
	call	put_character
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	mov	rdi, rax
	call	put_character
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	print_string, .-print_string
	.globl	print_integer
	.type	print_integer, @function
print_integer:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rsi, QWORD PTR integer_buffer[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, 0
	mov	edx, 10
	mov	rdi, rax
	call	itoa
	mov	rdi, rax
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	print_integer, .-print_integer
	.globl	unprint_integer
	.type	unprint_integer, @function
unprint_integer:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rsi, QWORD PTR integer_buffer[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, 0
	mov	edx, 10
	mov	rdi, rax
	call	itoa
	mov	rdi, rax
	call	string_length
	mov	QWORD PTR -8[rbp], rax
	jmp	.L152
.L153:
	mov	rax, QWORD PTR CHAR_BACKSPACE[rip]
	mov	rdi, rax
	call	put_character
	sub	QWORD PTR -8[rbp], 1
.L152:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L153
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	unprint_integer, .-unprint_integer
	.globl	print_hexadecimal
	.type	print_hexadecimal, @function
print_hexadecimal:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rsi, QWORD PTR integer_buffer[rip]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rdx
	mov	edx, 16
	mov	rdi, rax
	call	itoa
	mov	rdi, rax
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	print_hexadecimal, .-print_hexadecimal
	.globl	print_octal
	.type	print_octal, @function
print_octal:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rsi, QWORD PTR integer_buffer[rip]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rdx
	mov	edx, 8
	mov	rdi, rax
	call	itoa
	mov	rdi, rax
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	print_octal, .-print_octal
	.globl	print_binary
	.type	print_binary, @function
print_binary:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rsi, QWORD PTR integer_buffer[rip]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	itoa
	mov	rdi, rax
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	print_binary, .-print_binary
	.globl	print_format0
	.type	print_format0, @function
print_format0:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L160
	mov	eax, 0
	jmp	.L159
.L163:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 37
	je	.L161
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdi, rax
	call	put_character
	add	QWORD PTR -16[rbp], 1
	jmp	.L160
.L161:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 37
	jne	.L162
	mov	edi, 37
	call	put_character
	add	QWORD PTR -16[rbp], 2
	jmp	.L160
.L162:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdi, rax
	call	put_character
	add	QWORD PTR -16[rbp], 1
.L160:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	test	rax, rax
	jne	.L163
	mov	rax, QWORD PTR -16[rbp]
.L159:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	print_format0, .-print_format0
	.globl	print_format1
	.type	print_format1, @function
print_format1:
.LFB59:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 48
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	cmp	QWORD PTR -40[rbp], 0
	jne	.L167
	mov	eax, 0
	jmp	.L166
.L182:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 37
	je	.L168
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdi, rax
	call	put_character
	add	QWORD PTR -48[rbp], 1
	jmp	.L167
.L168:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 115
	jne	.L169
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	print
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L169:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 99
	jne	.L170
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	put_character
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L170:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 100
	jne	.L171
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	print_integer
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L171:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 46
	jne	.L172
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	sub	rax, 48
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 9
	ja	.L173
	mov	rbx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	ten_to_the_power_of
	mov	rcx, rax
	mov	rax, rbx
	mov	edx, 0
	div	rcx
	mov	rdi, rax
	call	print_integer
	cmp	QWORD PTR -24[rbp], 0
	je	.L174
	mov	rbx, QWORD PTR integer_buffer[rip]
	mov	r12, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	ten_to_the_power_of
	mov	rcx, rax
	mov	rax, r12
	mov	edx, 0
	div	rcx
	mov	rcx, rdx
	mov	rax, rcx
	mov	ecx, 0
	mov	edx, 10
	mov	rsi, rbx
	mov	rdi, rax
	call	itoa
	mov	rax, QWORD PTR integer_buffer[rip]
	mov	rdi, rax
	call	string_length
	sub	QWORD PTR -24[rbp], rax
	mov	edi, 46
	call	put_character
	jmp	.L175
.L176:
	mov	edi, 48
	call	put_character
	sub	QWORD PTR -24[rbp], 1
.L175:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L176
	mov	rax, QWORD PTR integer_buffer[rip]
	mov	rdi, rax
	call	print
.L174:
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 4
	jmp	.L166
.L173:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdi, rax
	call	put_character
	add	QWORD PTR -48[rbp], 1
	jmp	.L167
.L172:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 112
	jne	.L177
	mov	rdx, QWORD PTR SIZEOFUINT64STAR[rip]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_hexadecimal
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L177:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 120
	jne	.L178
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_hexadecimal
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L178:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 111
	jne	.L179
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_octal
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L179:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 98
	jne	.L180
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_binary
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 2
	jmp	.L166
.L180:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	cmp	rax, 37
	jne	.L181
	mov	edi, 37
	call	put_character
	add	QWORD PTR -48[rbp], 2
	jmp	.L167
.L181:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	mov	rdi, rax
	call	put_character
	add	QWORD PTR -48[rbp], 1
.L167:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_character
	test	rax, rax
	jne	.L182
	mov	rax, QWORD PTR -48[rbp]
.L166:
	add	rsp, 48
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	print_format1, .-print_format1
	.globl	printf1
	.type	printf1, @function
printf1:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_format1
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_format0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	printf1, .-printf1
	.globl	printf2
	.type	printf2, @function
printf2:
.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_format0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	printf2, .-printf2
	.globl	printf3
	.type	printf3, @function
printf3:
.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_format0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	printf3, .-printf3
	.globl	printf4
	.type	printf4, @function
printf4:
.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, 48
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	QWORD PTR -40[rbp], r8
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_format0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	printf4, .-printf4
	.globl	printf5
	.type	printf5, @function
printf5:
.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	QWORD PTR -40[rbp], r8
	mov	QWORD PTR -48[rbp], r9
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_format0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	printf5, .-printf5
	.globl	printf6
	.type	printf6, @function
printf6:
.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, 48
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	QWORD PTR -40[rbp], r8
	mov	QWORD PTR -48[rbp], r9
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 16[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_format1
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_format0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	printf6, .-printf6
	.globl	round_up
	.type	round_up, @function
round_up:
.LFB66:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	QWORD PTR -16[rbp]
	mov	rax, rdx
	test	rax, rax
	jne	.L190
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L191
.L190:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	QWORD PTR -16[rbp]
	mov	rcx, rdx
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
.L191:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE66:
	.size	round_up, .-round_up
	.section	.rodata
.LC68:
	.string	"%s: malloc out of memory\n"
	.text
	.globl	smalloc
	.type	smalloc, @function
smalloc:
.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
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L193
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L194
.L193:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L195
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC68[rip]
	call	printf1
	mov	rax, QWORD PTR EXITCODE_OUTOFVIRTUALMEMORY[rip]
	mov	rdi, rax
	call	exit@PLT
.L195:
	mov	rax, QWORD PTR -8[rbp]
.L194:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE67:
	.size	smalloc, .-smalloc
	.globl	zalloc
	.type	zalloc, @function
zalloc:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	round_up
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR -8[rbp], rax
	mov	rcx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	div	rcx
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -16[rbp], 0
	jmp	.L197
.L198:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	QWORD PTR [rax], 0
	add	QWORD PTR -16[rbp], 1
.L197:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jb	.L198
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE68:
	.size	zalloc, .-zalloc
	.globl	print_symbol
	.type	print_symbol, @function
print_symbol:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	mov	rdi, rax
	call	put_character
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L201
	lea	rdi, .LC64[rip]
	call	print
	jmp	.L202
.L201:
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	print
.L202:
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	mov	rdi, rax
	call	put_character
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE69:
	.size	print_symbol, .-print_symbol
	.section	.rodata
.LC69:
	.string	"%s: %s in %s in line %d: "
	.text
	.globl	print_line_number
	.type	print_line_number, @function
print_line_number:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rsi, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR source_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	r8, rsi
	mov	rsi, rax
	lea	rdi, .LC69[rip]
	call	printf4
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE70:
	.size	print_line_number, .-print_line_number
	.section	.rodata
.LC70:
	.string	"syntax error"
.LC71:
	.string	"%s\n"
	.text
	.globl	syntax_error_message
	.type	syntax_error_message, @function
syntax_error_message:
.LFB71:
	.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	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC71[rip]
	call	printf1
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE71:
	.size	syntax_error_message, .-syntax_error_message
	.section	.rodata
.LC72:
	.string	" expected but "
.LC73:
	.string	" found\n"
	.text
	.globl	syntax_error_character
	.type	syntax_error_character, @function
syntax_error_character:
.LFB72:
	.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	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print_character
	lea	rdi, .LC72[rip]
	call	print
	mov	rax, QWORD PTR character[rip]
	mov	rdi, rax
	call	print_character
	lea	rdi, .LC73[rip]
	call	print
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE72:
	.size	syntax_error_character, .-syntax_error_character
	.globl	syntax_error_identifier
	.type	syntax_error_identifier, @function
syntax_error_identifier:
.LFB73:
	.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	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print_string
	lea	rdi, .LC72[rip]
	call	print
	mov	rax, QWORD PTR identifier[rip]
	mov	rdi, rax
	call	print_string
	lea	rdi, .LC73[rip]
	call	print
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE73:
	.size	syntax_error_identifier, .-syntax_error_identifier
	.section	.rodata
	.align 8
.LC74:
	.string	"%s: could not read character from input file %s\n"
	.text
	.globl	get_character
	.type	get_character, @function
get_character:
.LFB74:
	.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	rcx, QWORD PTR character_buffer[rip]
	mov	rax, QWORD PTR source_fd[rip]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	read@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 1
	jne	.L208
	mov	rax, QWORD PTR character_buffer[rip]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR character[rip], rax
	mov	rax, QWORD PTR number_of_read_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_read_characters[rip], rax
	jmp	.L211
.L208:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L210
	mov	rax, QWORD PTR CHAR_EOF[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L211
.L210:
	mov	rdx, QWORD PTR source_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC74[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L211:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE74:
	.size	get_character, .-get_character
	.globl	is_character_new_line
	.type	is_character_new_line, @function
is_character_new_line:
.LFB75:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_LF[rip]
	cmp	rdx, rax
	jne	.L213
	mov	eax, 1
	jmp	.L214
.L213:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_CR[rip]
	cmp	rdx, rax
	jne	.L215
	mov	eax, 1
	jmp	.L214
.L215:
	mov	eax, 0
.L214:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE75:
	.size	is_character_new_line, .-is_character_new_line
	.globl	is_character_whitespace
	.type	is_character_whitespace, @function
is_character_whitespace:
.LFB76:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SPACE[rip]
	cmp	rdx, rax
	jne	.L217
	mov	eax, 1
	jmp	.L218
.L217:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_TAB[rip]
	cmp	rdx, rax
	jne	.L219
	mov	eax, 1
	jmp	.L218
.L219:
	mov	eax, 0
	call	is_character_new_line
.L218:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE76:
	.size	is_character_whitespace, .-is_character_whitespace
	.section	.rodata
.LC75:
	.string	"runaway multi-line comment"
	.text
	.globl	find_next_character
	.type	find_next_character, @function
find_next_character:
.LFB77:
	.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 -16[rbp], 0
	mov	QWORD PTR -8[rbp], 0
.L235:
	cmp	QWORD PTR -16[rbp], 0
	je	.L221
	mov	eax, 0
	call	get_character
	mov	eax, 0
	call	is_character_new_line
	test	rax, rax
	je	.L222
	mov	QWORD PTR -16[rbp], 0
	jmp	.L235
.L222:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EOF[rip]
	cmp	rdx, rax
	jne	.L224
	mov	rax, QWORD PTR character[rip]
	jmp	.L225
.L224:
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	jmp	.L235
.L221:
	cmp	QWORD PTR -8[rbp], 0
	je	.L226
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L227
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SLASH[rip]
	cmp	rdx, rax
	jne	.L227
	mov	QWORD PTR -8[rbp], 0
	mov	eax, 0
	call	get_character
.L227:
	cmp	QWORD PTR -8[rbp], 0
	je	.L228
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_LF[rip]
	cmp	rdx, rax
	jne	.L229
	mov	rax, QWORD PTR line_number[rip]
	add	rax, 1
	mov	QWORD PTR line_number[rip], rax
	jmp	.L228
.L229:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EOF[rip]
	cmp	rdx, rax
	jne	.L228
	lea	rdi, .LC75[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L228:
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	jmp	.L235
.L226:
	mov	eax, 0
	call	is_character_whitespace
	test	rax, rax
	je	.L230
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_LF[rip]
	cmp	rdx, rax
	jne	.L231
	mov	rax, QWORD PTR line_number[rip]
	add	rax, 1
	mov	QWORD PTR line_number[rip], rax
.L231:
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	mov	eax, 0
	call	get_character
	jmp	.L235
.L230:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SLASH[rip]
	cmp	rdx, rax
	jne	.L232
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SLASH[rip]
	cmp	rdx, rax
	jne	.L233
	mov	QWORD PTR -16[rbp], 1
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 2
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	mov	rax, QWORD PTR number_of_comments[rip]
	add	rax, 1
	mov	QWORD PTR number_of_comments[rip], rax
	jmp	.L235
.L233:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L234
	mov	QWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 2
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	mov	rax, QWORD PTR number_of_comments[rip]
	add	rax, 1
	mov	QWORD PTR number_of_comments[rip], rax
	jmp	.L235
.L234:
	mov	rax, QWORD PTR SYM_DIV[rip]
	mov	QWORD PTR symbol[rip], rax
	mov	rax, QWORD PTR character[rip]
	jmp	.L225
.L232:
	mov	rax, QWORD PTR character[rip]
.L225:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE77:
	.size	find_next_character, .-find_next_character
	.globl	is_character_letter
	.type	is_character_letter, @function
is_character_letter:
.LFB78:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 96
	jbe	.L237
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 122
	ja	.L238
	mov	eax, 1
	jmp	.L239
.L238:
	mov	eax, 0
	jmp	.L239
.L237:
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 64
	jbe	.L240
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 90
	ja	.L241
	mov	eax, 1
	jmp	.L239
.L241:
	mov	eax, 0
	jmp	.L239
.L240:
	mov	eax, 0
.L239:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE78:
	.size	is_character_letter, .-is_character_letter
	.globl	is_character_digit
	.type	is_character_digit, @function
is_character_digit:
.LFB79:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 47
	jbe	.L243
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 57
	ja	.L244
	mov	eax, 1
	jmp	.L245
.L244:
	mov	eax, 0
	jmp	.L245
.L243:
	mov	eax, 0
.L245:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE79:
	.size	is_character_digit, .-is_character_digit
	.globl	is_character_letter_or_digit_or_underscore
	.type	is_character_letter_or_digit_or_underscore, @function
is_character_letter_or_digit_or_underscore:
.LFB80:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, 0
	call	is_character_letter
	test	rax, rax
	je	.L247
	mov	eax, 1
	jmp	.L248
.L247:
	mov	eax, 0
	call	is_character_digit
	test	rax, rax
	je	.L249
	mov	eax, 1
	jmp	.L248
.L249:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_UNDERSCORE[rip]
	cmp	rdx, rax
	jne	.L250
	mov	eax, 1
	jmp	.L248
.L250:
	mov	eax, 0
.L248:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE80:
	.size	is_character_letter_or_digit_or_underscore, .-is_character_letter_or_digit_or_underscore
	.globl	is_character_not_double_quote_or_new_line_or_eof
	.type	is_character_not_double_quote_or_new_line_or_eof, @function
is_character_not_double_quote_or_new_line_or_eof:
.LFB81:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L252
	mov	eax, 0
	jmp	.L253
.L252:
	mov	eax, 0
	call	is_character_new_line
	test	rax, rax
	je	.L254
	mov	eax, 0
	jmp	.L253
.L254:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EOF[rip]
	cmp	rdx, rax
	jne	.L255
	mov	eax, 0
	jmp	.L253
.L255:
	mov	eax, 1
.L253:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE81:
	.size	is_character_not_double_quote_or_new_line_or_eof, .-is_character_not_double_quote_or_new_line_or_eof
	.globl	identifier_string_match
	.type	identifier_string_match, @function
identifier_string_match:
.LFB82:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rdx, QWORD PTR SYMBOLS[rip]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, rax
	mov	rax, QWORD PTR identifier[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	string_compare
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE82:
	.size	identifier_string_match, .-identifier_string_match
	.globl	identifier_or_keyword
	.type	identifier_or_keyword, @function
identifier_or_keyword:
.LFB83:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR SYM_WHILE[rip]
	mov	rdi, rax
	call	identifier_string_match
	test	rax, rax
	je	.L259
	mov	rax, QWORD PTR SYM_WHILE[rip]
	jmp	.L260
.L259:
	mov	rax, QWORD PTR SYM_IF[rip]
	mov	rdi, rax
	call	identifier_string_match
	test	rax, rax
	je	.L261
	mov	rax, QWORD PTR SYM_IF[rip]
	jmp	.L260
.L261:
	mov	rax, QWORD PTR SYM_UINT64[rip]
	mov	rdi, rax
	call	identifier_string_match
	test	rax, rax
	je	.L262
	mov	rax, QWORD PTR SYM_UINT64[rip]
	jmp	.L260
.L262:
	mov	rax, QWORD PTR SYM_ELSE[rip]
	mov	rdi, rax
	call	identifier_string_match
	test	rax, rax
	je	.L263
	mov	rax, QWORD PTR SYM_ELSE[rip]
	jmp	.L260
.L263:
	mov	rax, QWORD PTR SYM_RETURN[rip]
	mov	rdi, rax
	call	identifier_string_match
	test	rax, rax
	je	.L264
	mov	rax, QWORD PTR SYM_RETURN[rip]
	jmp	.L260
.L264:
	mov	rax, QWORD PTR SYM_VOID[rip]
	mov	rdi, rax
	call	identifier_string_match
	test	rax, rax
	je	.L265
	mov	rax, QWORD PTR SYM_VOID[rip]
	jmp	.L260
.L265:
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
.L260:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE83:
	.size	identifier_or_keyword, .-identifier_or_keyword
	.section	.rodata
.LC76:
	.string	"identifier too long"
.LC77:
	.string	"signed integer out of bound"
.LC78:
	.string	"integer out of bound"
	.align 8
.LC79:
	.string	"reached end of file looking for a character literal"
.LC80:
	.string	"string too long"
.LC81:
	.string	"found unknown character "
	.text
	.globl	get_symbol
	.type	get_symbol, @function
get_symbol:
.LFB84:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	rax, QWORD PTR SYM_EOF[rip]
	mov	QWORD PTR symbol[rip], rax
	mov	eax, 0
	call	find_next_character
	mov	rdx, QWORD PTR CHAR_EOF[rip]
	cmp	rax, rdx
	je	.L312
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_DIV[rip]
	cmp	rdx, rax
	je	.L268
	mov	eax, 0
	call	is_character_letter
	test	rax, rax
	je	.L269
	mov	rax, QWORD PTR MAX_IDENTIFIER_LENGTH[rip]
	add	rax, 1
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR identifier[rip], rax
	mov	QWORD PTR -8[rbp], 0
	jmp	.L270
.L272:
	mov	rax, QWORD PTR MAX_IDENTIFIER_LENGTH[rip]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L271
	lea	rdi, .LC76[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L271:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR identifier[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -8[rbp], 1
	mov	eax, 0
	call	get_character
.L270:
	mov	eax, 0
	call	is_character_letter_or_digit_or_underscore
	test	rax, rax
	jne	.L272
	mov	rax, QWORD PTR identifier[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	eax, 0
	call	identifier_or_keyword
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L269:
	mov	eax, 0
	call	is_character_digit
	test	rax, rax
	je	.L273
	mov	rax, QWORD PTR MAX_INTEGER_LENGTH[rip]
	add	rax, 1
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR integer[rip], rax
	mov	QWORD PTR -8[rbp], 0
	jmp	.L274
.L278:
	mov	rax, QWORD PTR MAX_INTEGER_LENGTH[rip]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L275
	mov	rax, QWORD PTR integer_is_signed[rip]
	test	rax, rax
	je	.L276
	lea	rdi, .LC77[rip]
	call	syntax_error_message
	jmp	.L277
.L276:
	lea	rdi, .LC78[rip]
	call	syntax_error_message
.L277:
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L275:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR integer[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -8[rbp], 1
	mov	eax, 0
	call	get_character
.L274:
	mov	eax, 0
	call	is_character_digit
	test	rax, rax
	jne	.L278
	mov	rax, QWORD PTR integer[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	rax, QWORD PTR integer[rip]
	mov	rdi, rax
	call	atoi
	mov	QWORD PTR literal[rip], rax
	mov	rax, QWORD PTR integer_is_signed[rip]
	test	rax, rax
	je	.L279
	mov	rdx, QWORD PTR literal[rip]
	mov	rax, QWORD PTR INT64_MIN[rip]
	cmp	rdx, rax
	jbe	.L279
	lea	rdi, .LC77[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L279:
	mov	rax, QWORD PTR SYM_INTEGER[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L273:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L280
	mov	eax, 0
	call	get_character
	mov	QWORD PTR literal[rip], 0
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EOF[rip]
	cmp	rdx, rax
	jne	.L281
	lea	rdi, .LC79[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L282
.L281:
	mov	rax, QWORD PTR character[rip]
	mov	QWORD PTR literal[rip], rax
.L282:
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L283
	mov	eax, 0
	call	get_character
	jmp	.L284
.L283:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EOF[rip]
	cmp	rdx, rax
	jne	.L285
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	mov	rdi, rax
	call	syntax_error_character
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L284
.L285:
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	mov	rdi, rax
	call	syntax_error_character
.L284:
	mov	rax, QWORD PTR SYM_CHARACTER[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L280:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L286
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR MAX_STRING_LENGTH[rip]
	add	rax, 1
	mov	rdi, rax
	call	zalloc
	mov	QWORD PTR string[rip], rax
	mov	QWORD PTR -8[rbp], 0
	jmp	.L287
.L290:
	mov	rax, QWORD PTR MAX_STRING_LENGTH[rip]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L288
	lea	rdi, .LC80[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L288:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_BACKSLASH[rip]
	cmp	rdx, rax
	jne	.L289
	mov	eax, 0
	call	handle_escape_sequence
.L289:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR string[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	add	QWORD PTR -8[rbp], 1
	mov	eax, 0
	call	get_character
.L287:
	mov	eax, 0
	call	is_character_not_double_quote_or_new_line_or_eof
	test	rax, rax
	jne	.L290
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L291
	mov	eax, 0
	call	get_character
	jmp	.L292
.L291:
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	mov	rdi, rax
	call	syntax_error_character
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L292:
	mov	rax, QWORD PTR string[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	store_character
	mov	rax, QWORD PTR SYM_STRING[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L286:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L293
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L293:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_PLUS[rip]
	cmp	rdx, rax
	jne	.L294
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_PLUS[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L294:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_DASH[rip]
	cmp	rdx, rax
	jne	.L295
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_MINUS[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L295:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L296
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L296:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EQUAL[rip]
	cmp	rdx, rax
	jne	.L297
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EQUAL[rip]
	cmp	rdx, rax
	jne	.L298
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_EQUALITY[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L298:
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L297:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L299
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L299:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L300
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L300:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_LBRACE[rip]
	cmp	rdx, rax
	jne	.L301
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_LBRACE[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L301:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_RBRACE[rip]
	cmp	rdx, rax
	jne	.L302
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L302:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_COMMA[rip]
	cmp	rdx, rax
	jne	.L303
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_COMMA[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L303:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_LT[rip]
	cmp	rdx, rax
	jne	.L304
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EQUAL[rip]
	cmp	rdx, rax
	jne	.L305
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_LEQ[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L305:
	mov	rax, QWORD PTR SYM_LT[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L304:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_GT[rip]
	cmp	rdx, rax
	jne	.L306
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EQUAL[rip]
	cmp	rdx, rax
	jne	.L307
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_GEQ[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L307:
	mov	rax, QWORD PTR SYM_GT[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L306:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EXCLAMATION[rip]
	cmp	rdx, rax
	jne	.L308
	mov	eax, 0
	call	get_character
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_EQUAL[rip]
	cmp	rdx, rax
	jne	.L309
	mov	eax, 0
	call	get_character
	jmp	.L310
.L309:
	mov	rax, QWORD PTR CHAR_EQUAL[rip]
	mov	rdi, rax
	call	syntax_error_character
.L310:
	mov	rax, QWORD PTR SYM_NOTEQ[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L308:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_PERCENTAGE[rip]
	cmp	rdx, rax
	jne	.L311
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR SYM_MOD[rip]
	mov	QWORD PTR symbol[rip], rax
	jmp	.L268
.L311:
	mov	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	lea	rdi, .LC81[rip]
	call	print
	mov	rax, QWORD PTR character[rip]
	mov	rdi, rax
	call	print_character
	mov	eax, 0
	call	println
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L268:
	mov	rax, QWORD PTR number_of_scanned_symbols[rip]
	add	rax, 1
	mov	QWORD PTR number_of_scanned_symbols[rip], rax
.L312:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE84:
	.size	get_symbol, .-get_symbol
	.section	.rodata
.LC82:
	.string	"unknown escape sequence found"
	.text
	.globl	handle_escape_sequence
	.type	handle_escape_sequence, @function
handle_escape_sequence:
.LFB85:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR number_of_ignored_characters[rip]
	add	rax, 1
	mov	QWORD PTR number_of_ignored_characters[rip], rax
	mov	eax, 0
	call	get_character
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 110
	jne	.L314
	mov	rax, QWORD PTR CHAR_LF[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L314:
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 116
	jne	.L316
	mov	rax, QWORD PTR CHAR_TAB[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L316:
	mov	rax, QWORD PTR character[rip]
	cmp	rax, 98
	jne	.L317
	mov	rax, QWORD PTR CHAR_BACKSPACE[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L317:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L318
	mov	rax, QWORD PTR CHAR_SINGLEQUOTE[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L318:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	cmp	rdx, rax
	jne	.L319
	mov	rax, QWORD PTR CHAR_DOUBLEQUOTE[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L319:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_PERCENTAGE[rip]
	cmp	rdx, rax
	jne	.L320
	mov	rax, QWORD PTR CHAR_PERCENTAGE[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L320:
	mov	rdx, QWORD PTR character[rip]
	mov	rax, QWORD PTR CHAR_BACKSLASH[rip]
	cmp	rdx, rax
	jne	.L321
	mov	rax, QWORD PTR CHAR_BACKSLASH[rip]
	mov	QWORD PTR character[rip], rax
	jmp	.L322
.L321:
	lea	rdi, .LC82[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L322:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE85:
	.size	handle_escape_sequence, .-handle_escape_sequence
	.globl	hash
	.type	hash, @function
hash:
.LFB86:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	r8, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	r9, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	r10, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	edx, 0
	div	r10
	add	rax, r9
	mov	r11, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	edx, 0
	div	r11
	add	rax, r8
	mov	r8, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	edx, 0
	div	r8
	add	rax, rdi
	mov	rdi, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	edx, 0
	div	rdi
	add	rax, rsi
	mov	rsi, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	edx, 0
	div	rsi
	add	rax, rcx
	mov	rcx, QWORD PTR HASH_TABLE_SIZE[rip]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE86:
	.size	hash, .-hash
	.globl	create_symbol_table_entry
	.type	create_symbol_table_entry, @function
create_symbol_table_entry:
.LFB87:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 72
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	QWORD PTR -64[rbp], rcx
	mov	QWORD PTR -72[rbp], r8
	mov	QWORD PTR -80[rbp], r9
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, rdx
	add	rax, rax
	add	rdx, rax
	mov	rax, QWORD PTR SIZEOFUINT64STAR[rip]
	add	rax, rdx
	add	rax, rax
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_string
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_line_number
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_class
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_type
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_value
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, QWORD PTR 16[rbp]
	mov	rdi, rax
	call	set_address
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	cmp	QWORD PTR -40[rbp], rax
	jne	.L326
	mov	rdx, QWORD PTR REG_GP[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_scope
	mov	rbx, QWORD PTR global_symbol_table[rip]
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	hash
	sal	rax, 3
	add	rax, rbx
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_next_entry
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR VARIABLE[rip]
	cmp	QWORD PTR -64[rbp], rax
	jne	.L327
	mov	rax, QWORD PTR number_of_global_variables[rip]
	add	rax, 1
	mov	QWORD PTR number_of_global_variables[rip], rax
	jmp	.L331
.L327:
	mov	rax, QWORD PTR PROCEDURE[rip]
	cmp	QWORD PTR -64[rbp], rax
	jne	.L329
	mov	rax, QWORD PTR number_of_procedures[rip]
	add	rax, 1
	mov	QWORD PTR number_of_procedures[rip], rax
	jmp	.L331
.L329:
	mov	rax, QWORD PTR STRING[rip]
	cmp	QWORD PTR -64[rbp], rax
	jne	.L331
	mov	rax, QWORD PTR number_of_strings[rip]
	add	rax, 1
	mov	QWORD PTR number_of_strings[rip], rax
	jmp	.L331
.L326:
	mov	rax, QWORD PTR LOCAL_TABLE[rip]
	cmp	QWORD PTR -40[rbp], rax
	jne	.L330
	mov	rdx, QWORD PTR REG_FP[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_scope
	mov	rdx, QWORD PTR local_symbol_table[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_next_entry
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR local_symbol_table[rip], rax
	jmp	.L331
.L330:
	mov	rdx, QWORD PTR REG_GP[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_scope
	mov	rdx, QWORD PTR library_symbol_table[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_next_entry
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR library_symbol_table[rip], rax
.L331:
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE87:
	.size	create_symbol_table_entry, .-create_symbol_table_entry
	.globl	search_symbol_table
	.type	search_symbol_table, @function
search_symbol_table:
.LFB88:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 24
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR number_of_searches[rip]
	add	rax, 1
	mov	QWORD PTR number_of_searches[rip], rax
	jmp	.L333
.L336:
	mov	rax, QWORD PTR total_search_time[rip]
	add	rax, 1
	mov	QWORD PTR total_search_time[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_string
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	string_compare
	test	rax, rax
	je	.L334
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_class
	cmp	QWORD PTR -24[rbp], rax
	jne	.L334
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L335
.L334:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_next_entry
	mov	QWORD PTR -8[rbp], rax
.L333:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L336
	mov	eax, 0
.L335:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE88:
	.size	search_symbol_table, .-search_symbol_table
	.globl	search_global_symbol_table
	.type	search_global_symbol_table, @function
search_global_symbol_table:
.LFB89:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 16
	.cfi_offset 3, -24
	mov	QWORD PTR -16[rbp], rdi
	mov	QWORD PTR -24[rbp], rsi
	mov	rbx, QWORD PTR global_symbol_table[rip]
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	hash
	sal	rax, 3
	add	rax, rbx
	mov	rax, QWORD PTR [rax]
	mov	rcx, rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	search_symbol_table
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE89:
	.size	search_global_symbol_table, .-search_global_symbol_table
	.globl	get_scoped_symbol_table_entry
	.type	get_scoped_symbol_table_entry, @function
get_scoped_symbol_table_entry:
.LFB90:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR VARIABLE[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L340
	mov	rdx, QWORD PTR VARIABLE[rip]
	mov	rax, QWORD PTR local_symbol_table[rip]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	search_symbol_table
	mov	QWORD PTR -8[rbp], rax
	jmp	.L341
.L340:
	mov	rax, QWORD PTR PROCEDURE[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L342
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR library_symbol_table[rip]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	search_symbol_table
	mov	QWORD PTR -8[rbp], rax
	jmp	.L341
.L342:
	mov	QWORD PTR -8[rbp], 0
.L341:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L343
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	search_global_symbol_table
	jmp	.L344
.L343:
	mov	rax, QWORD PTR -8[rbp]
.L344:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE90:
	.size	get_scoped_symbol_table_entry, .-get_scoped_symbol_table_entry
	.globl	is_undefined_procedure
	.type	is_undefined_procedure, @function
is_undefined_procedure:
.LFB91:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_class
	mov	rdx, QWORD PTR PROCEDURE[rip]
	cmp	rax, rdx
	jne	.L346
	mov	rbx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_string
	mov	rcx, rax
	mov	rax, QWORD PTR library_symbol_table[rip]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	search_symbol_table
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L347
	mov	eax, 0
	jmp	.L348
.L347:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_address
	test	rax, rax
	jne	.L349
	mov	eax, 1
	jmp	.L348
.L349:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_address
	mov	rdi, rax
	call	load_instruction
	mov	rdi, rax
	call	get_opcode
	mov	rdx, QWORD PTR OP_JAL[rip]
	cmp	rax, rdx
	jne	.L346
	mov	eax, 1
	jmp	.L348
.L346:
	mov	eax, 0
.L348:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE91:
	.size	is_undefined_procedure, .-is_undefined_procedure
	.section	.rodata
.LC83:
	.string	"procedure %s undefined\n"
	.text
	.globl	report_undefined_procedures
	.type	report_undefined_procedures, @function
report_undefined_procedures:
.LFB92:
	.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], 0
	mov	QWORD PTR -16[rbp], 0
	jmp	.L351
.L355:
	mov	rdx, QWORD PTR global_symbol_table[rip]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L352
.L354:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	is_undefined_procedure
	test	rax, rax
	je	.L353
	mov	QWORD PTR -24[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_line_number
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_string
	mov	rsi, rax
	lea	rdi, .LC83[rip]
	call	printf1
.L353:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_next_entry
	mov	QWORD PTR -8[rbp], rax
.L352:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L354
	add	QWORD PTR -16[rbp], 1
.L351:
	mov	rax, QWORD PTR HASH_TABLE_SIZE[rip]
	cmp	QWORD PTR -16[rbp], rax
	jb	.L355
	mov	rax, QWORD PTR -24[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE92:
	.size	report_undefined_procedures, .-report_undefined_procedures
	.globl	is_not_rbrace_or_eof
	.type	is_not_rbrace_or_eof, @function
is_not_rbrace_or_eof:
.LFB93:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	cmp	rdx, rax
	jne	.L358
	mov	eax, 0
	jmp	.L359
.L358:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L360
	mov	eax, 0
	jmp	.L359
.L360:
	mov	eax, 1
.L359:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE93:
	.size	is_not_rbrace_or_eof, .-is_not_rbrace_or_eof
	.globl	is_expression
	.type	is_expression, @function
is_expression:
.LFB94:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_MINUS[rip]
	cmp	rdx, rax
	jne	.L362
	mov	eax, 1
	jmp	.L363
.L362:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L364
	mov	eax, 1
	jmp	.L363
.L364:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L365
	mov	eax, 1
	jmp	.L363
.L365:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_INTEGER[rip]
	cmp	rdx, rax
	jne	.L366
	mov	eax, 1
	jmp	.L363
.L366:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L367
	mov	eax, 1
	jmp	.L363
.L367:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_STRING[rip]
	cmp	rdx, rax
	jne	.L368
	mov	eax, 1
	jmp	.L363
.L368:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_CHARACTER[rip]
	cmp	rdx, rax
	jne	.L369
	mov	eax, 1
	jmp	.L363
.L369:
	mov	eax, 0
.L363:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE94:
	.size	is_expression, .-is_expression
	.globl	is_literal
	.type	is_literal, @function
is_literal:
.LFB95:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_INTEGER[rip]
	cmp	rdx, rax
	jne	.L371
	mov	eax, 1
	jmp	.L372
.L371:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_CHARACTER[rip]
	cmp	rdx, rax
	jne	.L373
	mov	eax, 1
	jmp	.L372
.L373:
	mov	eax, 0
.L372:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE95:
	.size	is_literal, .-is_literal
	.globl	is_star_or_div_or_modulo
	.type	is_star_or_div_or_modulo, @function
is_star_or_div_or_modulo:
.LFB96:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L375
	mov	eax, 1
	jmp	.L376
.L375:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_DIV[rip]
	cmp	rdx, rax
	jne	.L377
	mov	eax, 1
	jmp	.L376
.L377:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_MOD[rip]
	cmp	rdx, rax
	jne	.L378
	mov	eax, 1
	jmp	.L376
.L378:
	mov	eax, 0
.L376:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE96:
	.size	is_star_or_div_or_modulo, .-is_star_or_div_or_modulo
	.globl	is_plus_or_minus
	.type	is_plus_or_minus, @function
is_plus_or_minus:
.LFB97:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_MINUS[rip]
	cmp	rdx, rax
	jne	.L380
	mov	eax, 1
	jmp	.L381
.L380:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_PLUS[rip]
	cmp	rdx, rax
	jne	.L382
	mov	eax, 1
	jmp	.L381
.L382:
	mov	eax, 0
.L381:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE97:
	.size	is_plus_or_minus, .-is_plus_or_minus
	.globl	is_comparison
	.type	is_comparison, @function
is_comparison:
.LFB98:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EQUALITY[rip]
	cmp	rdx, rax
	jne	.L384
	mov	eax, 1
	jmp	.L385
.L384:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_NOTEQ[rip]
	cmp	rdx, rax
	jne	.L386
	mov	eax, 1
	jmp	.L385
.L386:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LT[rip]
	cmp	rdx, rax
	jne	.L387
	mov	eax, 1
	jmp	.L385
.L387:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_GT[rip]
	cmp	rdx, rax
	jne	.L388
	mov	eax, 1
	jmp	.L385
.L388:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LEQ[rip]
	cmp	rdx, rax
	jne	.L389
	mov	eax, 1
	jmp	.L385
.L389:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_GEQ[rip]
	cmp	rdx, rax
	jne	.L390
	mov	eax, 1
	jmp	.L385
.L390:
	mov	eax, 0
.L385:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE98:
	.size	is_comparison, .-is_comparison
	.globl	look_for_factor
	.type	look_for_factor, @function
look_for_factor:
.LFB99:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L392
	mov	eax, 0
	jmp	.L393
.L392:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_MINUS[rip]
	cmp	rdx, rax
	jne	.L394
	mov	eax, 0
	jmp	.L393
.L394:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L395
	mov	eax, 0
	jmp	.L393
.L395:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_INTEGER[rip]
	cmp	rdx, rax
	jne	.L396
	mov	eax, 0
	jmp	.L393
.L396:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_CHARACTER[rip]
	cmp	rdx, rax
	jne	.L397
	mov	eax, 0
	jmp	.L393
.L397:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_STRING[rip]
	cmp	rdx, rax
	jne	.L398
	mov	eax, 0
	jmp	.L393
.L398:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L399
	mov	eax, 0
	jmp	.L393
.L399:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L400
	mov	eax, 0
	jmp	.L393
.L400:
	mov	eax, 1
.L393:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE99:
	.size	look_for_factor, .-look_for_factor
	.globl	look_for_statement
	.type	look_for_statement, @function
look_for_statement:
.LFB100:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L402
	mov	eax, 0
	jmp	.L403
.L402:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L404
	mov	eax, 0
	jmp	.L403
.L404:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_WHILE[rip]
	cmp	rdx, rax
	jne	.L405
	mov	eax, 0
	jmp	.L403
.L405:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IF[rip]
	cmp	rdx, rax
	jne	.L406
	mov	eax, 0
	jmp	.L403
.L406:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RETURN[rip]
	cmp	rdx, rax
	jne	.L407
	mov	eax, 0
	jmp	.L403
.L407:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L408
	mov	eax, 0
	jmp	.L403
.L408:
	mov	eax, 1
.L403:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE100:
	.size	look_for_statement, .-look_for_statement
	.globl	look_for_type
	.type	look_for_type, @function
look_for_type:
.LFB101:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_UINT64[rip]
	cmp	rdx, rax
	jne	.L410
	mov	eax, 0
	jmp	.L411
.L410:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_VOID[rip]
	cmp	rdx, rax
	jne	.L412
	mov	eax, 0
	jmp	.L411
.L412:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L413
	mov	eax, 0
	jmp	.L411
.L413:
	mov	eax, 1
.L411:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE101:
	.size	look_for_type, .-look_for_type
	.section	.rodata
.LC84:
	.string	"out of registers"
	.text
	.globl	talloc
	.type	talloc, @function
talloc:
.LFB102:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR allocated_temporaries[rip]
	mov	rax, QWORD PTR NUMBEROFTEMPORARIES[rip]
	cmp	rdx, rax
	jnb	.L415
	mov	rax, QWORD PTR allocated_temporaries[rip]
	add	rax, 1
	mov	QWORD PTR allocated_temporaries[rip], rax
	jmp	.L417
.L415:
	lea	rdi, .LC84[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L417:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE102:
	.size	talloc, .-talloc
	.section	.rodata
.LC85:
	.string	"illegal register access"
	.text
	.globl	current_temporary
	.type	current_temporary, @function
current_temporary:
.LFB103:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR allocated_temporaries[rip]
	test	rax, rax
	je	.L419
	mov	rax, QWORD PTR allocated_temporaries[rip]
	cmp	rax, 3
	ja	.L420
	mov	rdx, QWORD PTR REG_TP[rip]
	mov	rax, QWORD PTR allocated_temporaries[rip]
	add	rax, rdx
	jmp	.L418
.L420:
	mov	rdx, QWORD PTR REG_S11[rip]
	mov	rax, QWORD PTR allocated_temporaries[rip]
	add	rax, rdx
	sub	rax, 3
	jmp	.L418
.L419:
	lea	rdi, .LC85[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L418:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE103:
	.size	current_temporary, .-current_temporary
	.globl	previous_temporary
	.type	previous_temporary, @function
previous_temporary:
.LFB104:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR allocated_temporaries[rip]
	cmp	rax, 1
	jbe	.L423
	mov	rax, QWORD PTR allocated_temporaries[rip]
	cmp	rax, 4
	jne	.L424
	mov	rax, QWORD PTR REG_T2[rip]
	jmp	.L422
.L424:
	mov	eax, 0
	call	current_temporary
	sub	rax, 1
	jmp	.L422
.L423:
	lea	rdi, .LC85[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L422:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE104:
	.size	previous_temporary, .-previous_temporary
	.globl	next_temporary
	.type	next_temporary, @function
next_temporary:
.LFB105:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR allocated_temporaries[rip]
	mov	rax, QWORD PTR NUMBEROFTEMPORARIES[rip]
	cmp	rdx, rax
	jnb	.L427
	mov	rax, QWORD PTR allocated_temporaries[rip]
	cmp	rax, 3
	jne	.L428
	mov	rax, QWORD PTR REG_T3[rip]
	jmp	.L426
.L428:
	mov	eax, 0
	call	current_temporary
	add	rax, 1
	jmp	.L426
.L427:
	lea	rdi, .LC84[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L426:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE105:
	.size	next_temporary, .-next_temporary
	.section	.rodata
.LC86:
	.string	"illegal register deallocation"
	.text
	.globl	tfree
	.type	tfree, @function
tfree:
.LFB106:
	.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	rax, QWORD PTR allocated_temporaries[rip]
	cmp	QWORD PTR -8[rbp], rax
	ja	.L431
	mov	rax, QWORD PTR allocated_temporaries[rip]
	sub	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR allocated_temporaries[rip], rax
	jmp	.L433
.L431:
	lea	rdi, .LC86[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L433:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE106:
	.size	tfree, .-tfree
	.globl	save_temporaries
	.type	save_temporaries, @function
save_temporaries:
.LFB107:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	jmp	.L435
.L436:
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	rdx, rax
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	edi, 1
	call	tfree
.L435:
	mov	rax, QWORD PTR allocated_temporaries[rip]
	test	rax, rax
	jne	.L436
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE107:
	.size	save_temporaries, .-save_temporaries
	.globl	restore_temporaries
	.type	restore_temporaries, @function
restore_temporaries:
.LFB108:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	jmp	.L438
.L439:
	mov	eax, 0
	call	talloc
	mov	rbx, QWORD PTR REG_SP[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 0
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
.L438:
	mov	rax, QWORD PTR allocated_temporaries[rip]
	cmp	QWORD PTR -24[rbp], rax
	ja	.L439
	nop
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE108:
	.size	restore_temporaries, .-restore_temporaries
	.globl	syntax_error_symbol
	.type	syntax_error_symbol, @function
syntax_error_symbol:
.LFB109:
	.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	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print_symbol
	lea	rdi, .LC72[rip]
	call	print
	mov	rax, QWORD PTR symbol[rip]
	mov	rdi, rax
	call	print_symbol
	lea	rdi, .LC73[rip]
	call	print
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE109:
	.size	syntax_error_symbol, .-syntax_error_symbol
	.section	.rodata
.LC87:
	.string	"unexpected symbol "
	.text
	.globl	syntax_error_unexpected
	.type	syntax_error_unexpected, @function
syntax_error_unexpected:
.LFB110:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	lea	rdi, .LC87[rip]
	call	print
	mov	rax, QWORD PTR symbol[rip]
	mov	rdi, rax
	call	print_symbol
	lea	rdi, .LC73[rip]
	call	print
	mov	rax, QWORD PTR EXITCODE_SCANNERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE110:
	.size	syntax_error_unexpected, .-syntax_error_unexpected
	.section	.rodata
.LC88:
	.string	"uint64_t*"
.LC89:
	.string	"unknown"
	.text
	.globl	print_type
	.type	print_type, @function
print_type:
.LFB111:
	.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	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L443
	lea	rdi, .LC3[rip]
	call	print
	jmp	.L447
.L443:
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L445
	lea	rdi, .LC88[rip]
	call	print
	jmp	.L447
.L445:
	mov	rax, QWORD PTR VOID_T[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L446
	lea	rdi, .LC2[rip]
	call	print
	jmp	.L447
.L446:
	lea	rdi, .LC89[rip]
	call	print
.L447:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE111:
	.size	print_type, .-print_type
	.section	.rodata
.LC90:
	.string	"warning"
.LC91:
	.string	"type mismatch, "
	.text
	.globl	type_warning
	.type	type_warning, @function
type_warning:
.LFB112:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC90[rip]
	call	print_line_number
	lea	rdi, .LC91[rip]
	call	print
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print_type
	lea	rdi, .LC72[rip]
	call	print
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	print_type
	lea	rdi, .LC73[rip]
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE112:
	.size	type_warning, .-type_warning
	.section	.rodata
.LC92:
	.string	"%s undeclared\n"
	.text
	.globl	get_variable_or_big_int
	.type	get_variable_or_big_int, @function
get_variable_or_big_int:
.LFB113:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR BIGINT[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L450
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	search_global_symbol_table
	jmp	.L451
.L450:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_scoped_symbol_table_entry
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L452
	mov	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	call	print_line_number
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC92[rip]
	call	printf1
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L452:
	mov	rax, QWORD PTR -8[rbp]
.L451:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE113:
	.size	get_variable_or_big_int, .-get_variable_or_big_int
	.globl	load_upper_base_address
	.type	load_upper_base_address, @function
load_upper_base_address:
.LFB114:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_address
	mov	edx, 12
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_address
	mov	edx, 20
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -32[rbp], rax
	mov	edi, 11
	call	two_to_the_power_of
	cmp	QWORD PTR -24[rbp], rax
	jb	.L454
	add	QWORD PTR -32[rbp], 1
.L454:
	mov	eax, 0
	call	talloc
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	sign_extend
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_lui
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_scope
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_add
	nop
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE114:
	.size	load_upper_base_address, .-load_upper_base_address
	.globl	load_variable_or_big_int
	.type	load_variable_or_big_int, @function
load_variable_or_big_int:
.LFB115:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_variable_or_big_int
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	get_address
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	is_signed_integer
	test	rax, rax
	je	.L456
	mov	eax, 0
	call	talloc
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	get_scope
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, rax
	mov	rsi, rbx
	mov	rdi, rcx
	call	emit_ld
	jmp	.L457
.L456:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	load_upper_base_address
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 12
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	mov	esi, 12
	mov	rdi, rax
	call	sign_extend
	mov	r12, rax
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_ld
.L457:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	get_type
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE115:
	.size	load_variable_or_big_int, .-load_variable_or_big_int
	.globl	load_integer
	.type	load_integer, @function
load_integer:
.LFB116:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 48
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	is_signed_integer
	test	rax, rax
	je	.L460
	mov	eax, 0
	call	talloc
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, rax
	mov	rsi, rbx
	mov	rdi, rcx
	call	emit_addi
	jmp	.L466
.L460:
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	is_signed_integer
	test	rax, rax
	je	.L462
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 12
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 20
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -24[rbp], rax
	mov	eax, 0
	call	talloc
	mov	edi, 11
	call	two_to_the_power_of
	cmp	QWORD PTR -32[rbp], rax
	jb	.L463
	add	QWORD PTR -24[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	sign_extend
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_lui
	mov	edi, 19
	call	two_to_the_power_of
	cmp	QWORD PTR -24[rbp], rax
	jne	.L464
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
	jmp	.L464
.L463:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	sign_extend
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_lui
.L464:
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	sign_extend
	mov	r12, rax
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	jmp	.L466
.L462:
	mov	rdx, QWORD PTR BIGINT[rip]
	mov	rax, QWORD PTR integer[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	search_global_symbol_table
	mov	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -40[rbp], 0
	jne	.L465
	mov	rdx, QWORD PTR allocated_memory[rip]
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	add	rax, rdx
	mov	QWORD PTR allocated_memory[rip], rax
	mov	rax, QWORD PTR allocated_memory[rip]
	neg	rax
	mov	rdi, rax
	mov	r8, QWORD PTR UINT64_T[rip]
	mov	rcx, QWORD PTR BIGINT[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rsi, QWORD PTR integer[rip]
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	mov	r9, QWORD PTR -56[rbp]
	sub	rsp, 8
	push	rdi
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
.L465:
	mov	rdx, QWORD PTR BIGINT[rip]
	mov	rax, QWORD PTR integer[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_variable_or_big_int
.L466:
	nop
	lea	rsp, -16[rbp]
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE116:
	.size	load_integer, .-load_integer
	.globl	load_string
	.type	load_string, @function
load_string:
.LFB117:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	string_length
	add	rax, 1
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	round_up
	mov	rdx, QWORD PTR allocated_memory[rip]
	add	rax, rdx
	mov	QWORD PTR allocated_memory[rip], rax
	mov	rax, QWORD PTR allocated_memory[rip]
	neg	rax
	mov	rdi, rax
	mov	r8, QWORD PTR UINT64STAR_T[rip]
	mov	rcx, QWORD PTR STRING[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	mov	rsi, QWORD PTR -40[rbp]
	sub	rsp, 8
	push	rdi
	mov	r9d, 0
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rax, QWORD PTR allocated_memory[rip]
	neg	rax
	mov	rdi, rax
	call	load_integer
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	rbx, QWORD PTR REG_GP[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_add
	nop
	lea	rsp, -16[rbp]
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE117:
	.size	load_string, .-load_string
	.globl	help_call_codegen
	.type	help_call_codegen, @function
help_call_codegen:
.LFB118:
	.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	.L469
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rdi, QWORD PTR binary_length[rip]
	mov	rcx, QWORD PTR PROCEDURE[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	mov	r8, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	sub	rsp, 8
	push	rdi
	mov	r9d, 0
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rax, QWORD PTR REG_RA[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_jal
	jmp	.L470
.L469:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_type
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	test	rax, rax
	jne	.L471
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_address
	mov	rax, QWORD PTR REG_RA[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_jal
	jmp	.L470
.L471:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rdi, rax
	call	load_instruction
	mov	rdi, rax
	call	get_opcode
	mov	rdx, QWORD PTR OP_JAL[rip]
	cmp	rax, rdx
	jne	.L472
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rdx, rax
	mov	rax, QWORD PTR REG_RA[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	emit_jal
	mov	rax, QWORD PTR binary_length[rip]
	mov	rcx, QWORD PTR INSTRUCTIONSIZE[rip]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_address
	jmp	.L470
.L472:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rcx, QWORD PTR binary_length[rip]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR REG_RA[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	emit_jal
.L470:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE118:
	.size	help_call_codegen, .-help_call_codegen
	.globl	help_procedure_prologue
	.type	help_procedure_prologue, @function
help_procedure_prologue:
.LFB119:
	.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	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR REG_FP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_FP[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	cmp	QWORD PTR -8[rbp], 0
	je	.L477
	mov	rax, QWORD PTR -8[rbp]
	neg	rax
	mov	esi, 12
	mov	rdi, rax
	call	is_signed_integer
	test	rax, rax
	je	.L476
	mov	rax, QWORD PTR -8[rbp]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	jmp	.L477
.L476:
	mov	rax, QWORD PTR -8[rbp]
	neg	rax
	mov	rdi, rax
	call	load_integer
	mov	eax, 0
	call	current_temporary
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_add
	mov	edi, 1
	call	tfree
.L477:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE119:
	.size	help_procedure_prologue, .-help_procedure_prologue
	.globl	help_procedure_epilogue
	.type	help_procedure_epilogue, @function
help_procedure_epilogue:
.LFB120:
	.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	rcx, QWORD PTR REG_FP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_FP[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_RA[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	add	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE120:
	.size	help_procedure_epilogue, .-help_procedure_epilogue
	.globl	compile_call
	.type	compile_call, @function
compile_call:
.LFB121:
	.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	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_scoped_symbol_table_entry
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR allocated_temporaries[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	eax, 0
	call	save_temporaries
	mov	eax, 0
	call	is_expression
	test	rax, rax
	je	.L480
	mov	eax, 0
	call	compile_expression
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	rdx, rax
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	edi, 1
	call	tfree
	jmp	.L481
.L482:
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	rdx, rax
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	edi, 1
	call	tfree
.L481:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_COMMA[rip]
	cmp	rdx, rax
	je	.L482
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L483
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	help_call_codegen
	mov	QWORD PTR -24[rbp], rax
	jmp	.L484
.L483:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L484
.L480:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L485
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	help_call_codegen
	mov	QWORD PTR -24[rbp], rax
	jmp	.L484
.L485:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -24[rbp], rax
.L484:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	restore_temporaries
	mov	rax, QWORD PTR number_of_calls[rip]
	add	rax, 1
	mov	QWORD PTR number_of_calls[rip], rax
	mov	rax, QWORD PTR -24[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE121:
	.size	compile_call, .-compile_call
	.globl	compile_factor
	.type	compile_factor, @function
compile_factor:
.LFB122:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 48
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	jmp	.L488
.L490:
	mov	eax, 0
	call	syntax_error_unexpected
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L489
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L488
.L489:
	mov	eax, 0
	call	get_symbol
.L488:
	mov	eax, 0
	call	look_for_factor
	test	rax, rax
	jne	.L490
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L491
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_UINT64[rip]
	cmp	rdx, rax
	jne	.L492
	mov	QWORD PTR -64[rbp], 1
	mov	eax, 0
	call	compile_type
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L493
	mov	eax, 0
	call	get_symbol
	jmp	.L494
.L493:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L494
.L492:
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L495
	mov	eax, 0
	call	get_symbol
	jmp	.L496
.L495:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L496:
	mov	rax, QWORD PTR -48[rbp]
	jmp	.L497
.L491:
	mov	QWORD PTR -64[rbp], 0
.L494:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_MINUS[rip]
	cmp	rdx, rax
	jne	.L498
	mov	QWORD PTR -40[rbp], 1
	mov	QWORD PTR integer_is_signed[rip], 1
	mov	eax, 0
	call	get_symbol
	mov	QWORD PTR integer_is_signed[rip], 0
	jmp	.L499
.L498:
	mov	QWORD PTR -40[rbp], 0
.L499:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L500
	mov	QWORD PTR -32[rbp], 1
	mov	eax, 0
	call	get_symbol
	jmp	.L501
.L500:
	mov	QWORD PTR -32[rbp], 0
.L501:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L502
	mov	rax, QWORD PTR identifier[rip]
	mov	QWORD PTR -24[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L503
	mov	eax, 0
	call	get_symbol
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	compile_call
	mov	QWORD PTR -48[rbp], rax
	mov	eax, 0
	call	talloc
	mov	rbx, QWORD PTR REG_A0[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 0
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	jmp	.L504
.L503:
	mov	rdx, QWORD PTR VARIABLE[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_variable_or_big_int
	mov	QWORD PTR -48[rbp], rax
	jmp	.L504
.L502:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_INTEGER[rip]
	cmp	rdx, rax
	jne	.L505
	mov	rax, QWORD PTR literal[rip]
	mov	rdi, rax
	call	load_integer
	mov	eax, 0
	call	get_symbol
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -48[rbp], rax
	jmp	.L504
.L505:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_CHARACTER[rip]
	cmp	rdx, rax
	jne	.L506
	mov	eax, 0
	call	talloc
	mov	r12, QWORD PTR literal[rip]
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	get_symbol
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -48[rbp], rax
	jmp	.L504
.L506:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_STRING[rip]
	cmp	rdx, rax
	jne	.L507
	mov	rax, QWORD PTR string[rip]
	mov	rdi, rax
	call	load_string
	mov	eax, 0
	call	get_symbol
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	mov	QWORD PTR -48[rbp], rax
	jmp	.L504
.L507:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L508
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L509
	mov	eax, 0
	call	get_symbol
	jmp	.L504
.L509:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L504
.L508:
	mov	eax, 0
	call	syntax_error_unexpected
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -48[rbp], rax
.L504:
	cmp	QWORD PTR -32[rbp], 0
	je	.L510
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -48[rbp], rax
	je	.L511
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	mov	rdx, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L511:
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	edx, 0
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_ld
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -48[rbp], rax
.L510:
	cmp	QWORD PTR -40[rbp], 0
	je	.L512
	mov	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -48[rbp], rax
	je	.L513
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -48[rbp], rax
.L513:
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
.L512:
	cmp	QWORD PTR -64[rbp], 0
	je	.L514
	mov	rax, QWORD PTR -56[rbp]
	jmp	.L497
.L514:
	mov	rax, QWORD PTR -48[rbp]
.L497:
	add	rsp, 48
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE122:
	.size	compile_factor, .-compile_factor
	.globl	compile_term
	.type	compile_term, @function
compile_term:
.LFB123:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	eax, 0
	call	compile_factor
	mov	QWORD PTR -40[rbp], rax
	jmp	.L516
.L521:
	mov	rax, QWORD PTR symbol[rip]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_factor
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	je	.L517
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L517:
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L518
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_mul
	jmp	.L519
.L518:
	mov	rax, QWORD PTR SYM_DIV[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L520
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_divu
	jmp	.L519
.L520:
	mov	rax, QWORD PTR SYM_MOD[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L519
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_remu
.L519:
	mov	edi, 1
	call	tfree
.L516:
	mov	eax, 0
	call	is_star_or_div_or_modulo
	test	rax, rax
	jne	.L521
	mov	rax, QWORD PTR -40[rbp]
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE123:
	.size	compile_term, .-compile_term
	.section	.rodata
	.align 8
.LC93:
	.string	"(uint64_t*) + (uint64_t*) is undefined"
	.align 8
.LC94:
	.string	"(uint64_t) - (uint64_t*) is undefined"
	.text
	.globl	compile_simple_expression
	.type	compile_simple_expression, @function
compile_simple_expression:
.LFB124:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	eax, 0
	call	compile_term
	mov	QWORD PTR -40[rbp], rax
	jmp	.L524
.L533:
	mov	rax, QWORD PTR symbol[rip]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_term
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR SYM_PLUS[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L525
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -40[rbp], rax
	jne	.L526
	mov	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L527
	mov	eax, 0
	call	current_temporary
	mov	esi, 3
	mov	rdi, rax
	call	emit_left_shift_by
	jmp	.L528
.L527:
	lea	rdi, .LC93[rip]
	call	syntax_error_message
	jmp	.L528
.L526:
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L528
	mov	eax, 0
	call	previous_temporary
	mov	esi, 3
	mov	rdi, rax
	call	emit_left_shift_by
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	mov	QWORD PTR -40[rbp], rax
.L528:
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_add
	jmp	.L529
.L525:
	mov	rax, QWORD PTR SYM_MINUS[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L529
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -40[rbp], rax
	jne	.L530
	mov	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L531
	mov	eax, 0
	call	current_temporary
	mov	esi, 3
	mov	rdi, rax
	call	emit_left_shift_by
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
	jmp	.L529
.L531:
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
	mov	r12, QWORD PTR SIZEOFUINT64[rip]
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_divu
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -40[rbp], rax
	jmp	.L529
.L530:
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L532
	lea	rdi, .LC94[rip]
	call	syntax_error_message
	jmp	.L529
.L532:
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
.L529:
	mov	edi, 1
	call	tfree
.L524:
	mov	eax, 0
	call	is_plus_or_minus
	test	rax, rax
	jne	.L533
	mov	rax, QWORD PTR -40[rbp]
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE124:
	.size	compile_simple_expression, .-compile_simple_expression
	.globl	compile_expression
	.type	compile_expression, @function
compile_expression:
.LFB125:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	eax, 0
	call	compile_simple_expression
	mov	QWORD PTR -40[rbp], rax
	mov	eax, 0
	call	is_comparison
	test	rax, rax
	je	.L536
	mov	rax, QWORD PTR symbol[rip]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_simple_expression
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	je	.L537
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L537:
	mov	rax, QWORD PTR SYM_EQUALITY[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L538
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_xor
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 1
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sltu
	mov	edi, 1
	call	tfree
	jmp	.L536
.L538:
	mov	rax, QWORD PTR SYM_NOTEQ[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L539
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_xor
	mov	edi, 1
	call	tfree
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sltu
	jmp	.L536
.L539:
	mov	rax, QWORD PTR SYM_LT[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L540
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sltu
	mov	edi, 1
	call	tfree
	jmp	.L536
.L540:
	mov	rax, QWORD PTR SYM_GT[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L541
	mov	eax, 0
	call	previous_temporary
	mov	r12, rax
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sltu
	mov	edi, 1
	call	tfree
	jmp	.L536
.L541:
	mov	rax, QWORD PTR SYM_LEQ[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L542
	mov	eax, 0
	call	previous_temporary
	mov	r12, rax
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sltu
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 1
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	previous_temporary
	mov	r12, rax
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
	mov	edi, 1
	call	tfree
	jmp	.L536
.L542:
	mov	rax, QWORD PTR SYM_GEQ[rip]
	cmp	QWORD PTR -32[rbp], rax
	jne	.L536
	mov	eax, 0
	call	current_temporary
	mov	r12, rax
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sltu
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 1
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	previous_temporary
	mov	r12, rax
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sub
	mov	edi, 1
	call	tfree
.L536:
	mov	rax, QWORD PTR -40[rbp]
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE125:
	.size	compile_expression, .-compile_expression
	.globl	compile_while
	.type	compile_while, @function
compile_while:
.LFB126:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	rax, QWORD PTR binary_length[rip]
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -32[rbp], 0
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_WHILE[rip]
	cmp	rdx, rax
	jne	.L545
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L546
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	rax, QWORD PTR binary_length[rip]
	mov	QWORD PTR -32[rbp], rax
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 0
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_beq
	mov	edi, 1
	call	tfree
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L547
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LBRACE[rip]
	cmp	rdx, rax
	jne	.L548
	mov	eax, 0
	call	get_symbol
	jmp	.L549
.L550:
	mov	eax, 0
	call	compile_statement
.L549:
	mov	eax, 0
	call	is_not_rbrace_or_eof
	test	rax, rax
	jne	.L550
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	cmp	rdx, rax
	jne	.L551
	mov	eax, 0
	call	get_symbol
	jmp	.L552
.L551:
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L552
.L548:
	mov	eax, 0
	call	compile_statement
	jmp	.L552
.L547:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L552
.L546:
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L552
.L545:
	mov	rax, QWORD PTR SYM_WHILE[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L552:
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	emit_jal
	cmp	QWORD PTR -32[rbp], 0
	je	.L553
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	fixup_relative_BFormat
.L553:
	mov	rax, QWORD PTR number_of_while[rip]
	add	rax, 1
	mov	QWORD PTR number_of_while[rip], rax
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE126:
	.size	compile_while, .-compile_while
	.globl	compile_if
	.type	compile_if, @function
compile_if:
.LFB127:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IF[rip]
	cmp	rdx, rax
	jne	.L555
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L556
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	rax, QWORD PTR binary_length[rip]
	mov	QWORD PTR -32[rbp], rax
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 0
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_beq
	mov	edi, 1
	call	tfree
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L557
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LBRACE[rip]
	cmp	rdx, rax
	jne	.L558
	mov	eax, 0
	call	get_symbol
	jmp	.L559
.L560:
	mov	eax, 0
	call	compile_statement
.L559:
	mov	eax, 0
	call	is_not_rbrace_or_eof
	test	rax, rax
	jne	.L560
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	cmp	rdx, rax
	jne	.L561
	mov	eax, 0
	call	get_symbol
	jmp	.L562
.L561:
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L562
.L558:
	mov	eax, 0
	call	compile_statement
.L562:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ELSE[rip]
	cmp	rdx, rax
	jne	.L563
	mov	eax, 0
	call	get_symbol
	mov	rax, QWORD PTR binary_length[rip]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_jal
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	fixup_relative_BFormat
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LBRACE[rip]
	cmp	rdx, rax
	jne	.L564
	mov	eax, 0
	call	get_symbol
	jmp	.L565
.L566:
	mov	eax, 0
	call	compile_statement
.L565:
	mov	eax, 0
	call	is_not_rbrace_or_eof
	test	rax, rax
	jne	.L566
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	cmp	rdx, rax
	jne	.L567
	mov	eax, 0
	call	get_symbol
	jmp	.L568
.L567:
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L568
.L564:
	mov	eax, 0
	call	compile_statement
.L568:
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	fixup_relative_JFormat
	jmp	.L569
.L563:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	fixup_relative_BFormat
	jmp	.L569
.L557:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L569
.L556:
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L569
.L555:
	mov	rax, QWORD PTR SYM_IF[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L569:
	mov	rax, QWORD PTR number_of_if[rip]
	add	rax, 1
	mov	QWORD PTR number_of_if[rip], rax
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE127:
	.size	compile_if, .-compile_if
	.globl	compile_return
	.type	compile_return, @function
compile_return:
.LFB128:
	.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	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RETURN[rip]
	cmp	rdx, rax
	jne	.L571
	mov	eax, 0
	call	get_symbol
	jmp	.L572
.L571:
	mov	rax, QWORD PTR SYM_RETURN[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L572:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	je	.L573
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR return_type[rip]
	cmp	QWORD PTR -8[rbp], rax
	je	.L574
	mov	rax, QWORD PTR return_type[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L574:
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	edi, 1
	call	tfree
	jmp	.L575
.L573:
	mov	rdx, QWORD PTR return_type[rip]
	mov	rax, QWORD PTR VOID_T[rip]
	cmp	rdx, rax
	je	.L575
	mov	rdx, QWORD PTR VOID_T[rip]
	mov	rax, QWORD PTR return_type[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L575:
	mov	rdx, QWORD PTR return_branches[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	emit_jal
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdx, QWORD PTR INSTRUCTIONSIZE[rip]
	sub	rax, rdx
	mov	QWORD PTR return_branches[rip], rax
	mov	rax, QWORD PTR number_of_return[rip]
	add	rax, 1
	mov	QWORD PTR number_of_return[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE128:
	.size	compile_return, .-compile_return
	.globl	compile_statement
	.type	compile_statement, @function
compile_statement:
.LFB129:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 48
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	jmp	.L577
.L579:
	mov	eax, 0
	call	syntax_error_unexpected
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L578
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L577
.L578:
	mov	eax, 0
	call	get_symbol
.L577:
	mov	eax, 0
	call	look_for_statement
	test	rax, rax
	jne	.L579
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L580
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L581
	mov	rdx, QWORD PTR VARIABLE[rip]
	mov	rax, QWORD PTR identifier[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	load_variable_or_big_int
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -40[rbp], rax
	je	.L582
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L582:
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	cmp	rdx, rax
	jne	.L583
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -32[rbp], rax
	je	.L584
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L584:
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, rbx
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	edi, 2
	call	tfree
	mov	rax, QWORD PTR number_of_assignments[rip]
	add	rax, 1
	mov	QWORD PTR number_of_assignments[rip], rax
	jmp	.L585
.L583:
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	edi, 1
	call	tfree
.L585:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L586
	mov	eax, 0
	call	get_symbol
	jmp	.L606
.L586:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L606
.L581:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L588
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	cmp	QWORD PTR -40[rbp], rax
	je	.L589
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L589:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L590
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	cmp	rdx, rax
	jne	.L591
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -32[rbp], rax
	je	.L592
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L592:
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	previous_temporary
	mov	rdx, rbx
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	edi, 2
	call	tfree
	mov	rax, QWORD PTR number_of_assignments[rip]
	add	rax, 1
	mov	QWORD PTR number_of_assignments[rip], rax
	jmp	.L593
.L591:
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	edi, 1
	call	tfree
.L593:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L594
	mov	eax, 0
	call	get_symbol
	jmp	.L606
.L594:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L606
.L590:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L606
.L588:
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L606
.L580:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L595
	mov	rax, QWORD PTR identifier[rip]
	mov	QWORD PTR -56[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L596
	mov	eax, 0
	call	get_symbol
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	compile_call
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L597
	mov	eax, 0
	call	get_symbol
	jmp	.L606
.L597:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L606
.L596:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	cmp	rdx, rax
	jne	.L598
	mov	rdx, QWORD PTR VARIABLE[rip]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_variable_or_big_int
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	get_type
	mov	QWORD PTR -40[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_expression
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	je	.L599
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L599:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	get_address
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	is_signed_integer
	test	rax, rax
	je	.L600
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	get_scope
	mov	rcx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, rbx
	mov	rsi, rax
	mov	rdi, rcx
	call	emit_sd
	mov	edi, 1
	call	tfree
	jmp	.L601
.L600:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	load_upper_base_address
	mov	eax, 0
	call	previous_temporary
	mov	r12, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 12
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	mov	esi, 12
	mov	rdi, rax
	call	sign_extend
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_sd
	mov	edi, 2
	call	tfree
.L601:
	mov	rax, QWORD PTR number_of_assignments[rip]
	add	rax, 1
	mov	QWORD PTR number_of_assignments[rip], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L602
	mov	eax, 0
	call	get_symbol
	jmp	.L606
.L602:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L606
.L598:
	mov	eax, 0
	call	syntax_error_unexpected
	jmp	.L606
.L595:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_WHILE[rip]
	cmp	rdx, rax
	jne	.L603
	mov	eax, 0
	call	compile_while
	jmp	.L606
.L603:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IF[rip]
	cmp	rdx, rax
	jne	.L604
	mov	eax, 0
	call	compile_if
	jmp	.L606
.L604:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RETURN[rip]
	cmp	rdx, rax
	jne	.L606
	mov	eax, 0
	call	compile_return
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L605
	mov	eax, 0
	call	get_symbol
	jmp	.L606
.L605:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L606:
	nop
	add	rsp, 48
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE129:
	.size	compile_statement, .-compile_statement
	.globl	compile_type
	.type	compile_type, @function
compile_type:
.LFB130:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	rax, QWORD PTR UINT64_T[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_UINT64[rip]
	cmp	rdx, rax
	jne	.L608
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASTERISK[rip]
	cmp	rdx, rax
	jne	.L609
	mov	rax, QWORD PTR UINT64STAR_T[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	eax, 0
	call	get_symbol
	jmp	.L609
.L608:
	mov	rax, QWORD PTR SYM_UINT64[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L609:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE130:
	.size	compile_type, .-compile_type
	.section	.rodata
.LC95:
	.string	"missing variable name"
	.text
	.globl	compile_variable
	.type	compile_variable, @function
compile_variable:
.LFB131:
	.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	eax, 0
	call	compile_type
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L612
	mov	rcx, QWORD PTR VARIABLE[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rsi, QWORD PTR identifier[rip]
	mov	rax, QWORD PTR LOCAL_TABLE[rip]
	mov	rdi, QWORD PTR -8[rbp]
	sub	rsp, 8
	push	QWORD PTR -24[rbp]
	mov	r9d, 0
	mov	r8, rdi
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	eax, 0
	call	get_symbol
	jmp	.L614
.L612:
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rcx, QWORD PTR VARIABLE[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rax, QWORD PTR LOCAL_TABLE[rip]
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsp, 8
	push	QWORD PTR -24[rbp]
	mov	r9d, 0
	mov	r8, rsi
	lea	rsi, .LC95[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
.L614:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE131:
	.size	compile_variable, .-compile_variable
	.globl	compile_initialization
	.type	compile_initialization, @function
compile_initialization:
.LFB132:
	.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 -24[rbp], 0
	mov	QWORD PTR -16[rbp], 0
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	cmp	rdx, rax
	jne	.L616
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L617
	mov	QWORD PTR -16[rbp], 1
	mov	eax, 0
	call	get_symbol
	mov	eax, 0
	call	compile_type
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L618
	mov	eax, 0
	call	get_symbol
	jmp	.L617
.L618:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L617:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_MINUS[rip]
	cmp	rdx, rax
	jne	.L619
	mov	QWORD PTR integer_is_signed[rip], 1
	mov	eax, 0
	call	get_symbol
	mov	QWORD PTR integer_is_signed[rip], 0
	mov	rax, QWORD PTR literal[rip]
	neg	rax
	mov	QWORD PTR -24[rbp], rax
	jmp	.L620
.L619:
	mov	rax, QWORD PTR literal[rip]
	mov	QWORD PTR -24[rbp], rax
.L620:
	mov	eax, 0
	call	is_literal
	test	rax, rax
	je	.L621
	mov	eax, 0
	call	get_symbol
	jmp	.L622
.L621:
	mov	eax, 0
	call	syntax_error_unexpected
.L622:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L623
	mov	eax, 0
	call	get_symbol
	jmp	.L624
.L623:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L624
.L616:
	mov	rax, QWORD PTR SYM_ASSIGN[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L624:
	cmp	QWORD PTR -16[rbp], 0
	je	.L625
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	je	.L626
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
	jmp	.L626
.L625:
	mov	rax, QWORD PTR UINT64_T[rip]
	cmp	QWORD PTR -40[rbp], rax
	je	.L626
	mov	rdx, QWORD PTR UINT64_T[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	type_warning
.L626:
	mov	rax, QWORD PTR -24[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE132:
	.size	compile_initialization, .-compile_initialization
	.section	.rodata
.LC96:
	.string	"main"
	.align 8
.LC97:
	.string	"redefinition of procedure %s ignored\n"
	.text
	.globl	compile_procedure
	.type	compile_procedure, @function
compile_procedure:
.LFB133:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 72
	.cfi_offset 3, -24
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	QWORD PTR -56[rbp], 1
	mov	QWORD PTR -48[rbp], 0
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L629
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	je	.L630
	mov	edi, 0
	call	compile_variable
	mov	QWORD PTR -48[rbp], 1
	jmp	.L631
.L632:
	mov	eax, 0
	call	get_symbol
	mov	edi, 0
	call	compile_variable
	add	QWORD PTR -48[rbp], 1
.L631:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_COMMA[rip]
	cmp	rdx, rax
	je	.L632
	mov	rax, QWORD PTR local_symbol_table[rip]
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -40[rbp], 0
	jmp	.L633
.L634:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	imul	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_address
	add	QWORD PTR -40[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_next_entry
	mov	QWORD PTR -24[rbp], rax
.L633:
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -48[rbp]
	jb	.L634
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L635
	mov	eax, 0
	call	get_symbol
	jmp	.L636
.L635:
	mov	rax, QWORD PTR SYM_RPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L636
.L630:
	mov	eax, 0
	call	get_symbol
	jmp	.L636
.L629:
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L636:
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	search_global_symbol_table
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L637
	cmp	QWORD PTR -24[rbp], 0
	jne	.L638
	mov	rcx, QWORD PTR PROCEDURE[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	mov	rdi, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	sub	rsp, 8
	push	0
	mov	r9d, 0
	mov	r8, rdi
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	jmp	.L639
.L638:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_type
	cmp	QWORD PTR -80[rbp], rax
	je	.L639
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_type
	mov	rdx, rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	type_warning
.L639:
	mov	eax, 0
	call	get_symbol
	jmp	.L640
.L637:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LBRACE[rip]
	cmp	rdx, rax
	jne	.L641
	cmp	QWORD PTR -24[rbp], 0
	jne	.L642
	mov	rdi, QWORD PTR binary_length[rip]
	mov	rcx, QWORD PTR PROCEDURE[rip]
	mov	rdx, QWORD PTR line_number[rip]
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	mov	r8, QWORD PTR -80[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	sub	rsp, 8
	push	rdi
	mov	r9d, 0
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	jmp	.L643
.L642:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	test	rax, rax
	je	.L644
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rdi, rax
	call	load_instruction
	mov	rdi, rax
	call	get_opcode
	mov	rdx, QWORD PTR OP_JAL[rip]
	cmp	rax, rdx
	jne	.L645
	mov	rbx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rsi, rbx
	mov	rdi, rax
	call	fixlink_relative
	jmp	.L644
.L645:
	mov	QWORD PTR -56[rbp], 0
.L644:
	cmp	QWORD PTR -56[rbp], 0
	je	.L646
	mov	rdx, QWORD PTR line_number[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_line_number
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_type
	cmp	QWORD PTR -80[rbp], rax
	je	.L647
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_type
	mov	rdx, rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	type_warning
.L647:
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_type
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_address
	mov	rax, QWORD PTR -72[rbp]
	lea	rsi, .LC96[rip]
	mov	rdi, rax
	call	string_compare
	test	rax, rax
	je	.L643
	mov	rax, QWORD PTR source_name[rip]
	mov	QWORD PTR binary_name[rip], rax
	mov	rax, QWORD PTR number_of_calls[rip]
	add	rax, 1
	mov	QWORD PTR number_of_calls[rip], rax
	jmp	.L643
.L646:
	mov	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC90[rip]
	call	print_line_number
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rax
	lea	rdi, .LC97[rip]
	call	printf1
.L643:
	mov	eax, 0
	call	get_symbol
	mov	QWORD PTR -32[rbp], 0
	jmp	.L648
.L650:
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	add	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	neg	rax
	mov	rdi, rax
	call	compile_variable
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L649
	mov	eax, 0
	call	get_symbol
	jmp	.L648
.L649:
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L648:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_UINT64[rip]
	cmp	rdx, rax
	je	.L650
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	help_procedure_prologue
	mov	QWORD PTR return_branches[rip], 0
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR return_type[rip], rax
	jmp	.L651
.L652:
	mov	eax, 0
	call	compile_statement
.L651:
	mov	eax, 0
	call	is_not_rbrace_or_eof
	test	rax, rax
	jne	.L652
	mov	QWORD PTR return_type[rip], 0
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	cmp	rdx, rax
	jne	.L653
	mov	eax, 0
	call	get_symbol
	jmp	.L654
.L653:
	mov	rax, QWORD PTR SYM_RBRACE[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L654:
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR return_branches[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	fixlink_relative
	mov	QWORD PTR return_branches[rip], 0
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	imul	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	help_procedure_epilogue
	jmp	.L640
.L641:
	mov	eax, 0
	call	syntax_error_unexpected
.L640:
	mov	QWORD PTR local_symbol_table[rip], 0
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE133:
	.size	compile_procedure, .-compile_procedure
	.section	.rodata
	.align 8
.LC98:
	.string	"redefinition of global variable %s ignored\n"
	.text
	.globl	compile_cstar
	.type	compile_cstar, @function
compile_cstar:
.LFB134:
	.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
	jmp	.L656
.L659:
	mov	eax, 0
	call	syntax_error_unexpected
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L658
	mov	rax, QWORD PTR EXITCODE_PARSERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L657
.L658:
	mov	eax, 0
	call	get_symbol
.L657:
	mov	eax, 0
	call	look_for_type
	test	rax, rax
	jne	.L659
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_VOID[rip]
	cmp	rdx, rax
	jne	.L660
	mov	rax, QWORD PTR VOID_T[rip]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L661
	mov	rax, QWORD PTR identifier[rip]
	mov	QWORD PTR -24[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	compile_procedure
	jmp	.L656
.L661:
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	mov	rdi, rax
	call	syntax_error_symbol
	jmp	.L656
.L660:
	mov	eax, 0
	call	compile_type
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	cmp	rdx, rax
	jne	.L662
	mov	rax, QWORD PTR identifier[rip]
	mov	QWORD PTR -24[rbp], rax
	mov	eax, 0
	call	get_symbol
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_LPARENTHESIS[rip]
	cmp	rdx, rax
	jne	.L663
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	compile_procedure
	jmp	.L656
.L663:
	mov	rax, QWORD PTR line_number[rip]
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_SEMICOLON[rip]
	cmp	rdx, rax
	jne	.L664
	mov	eax, 0
	call	get_symbol
	mov	QWORD PTR -40[rbp], 0
	jmp	.L665
.L664:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	compile_initialization
	mov	QWORD PTR -40[rbp], rax
.L665:
	mov	rdx, QWORD PTR VARIABLE[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	search_global_symbol_table
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L666
	mov	rdx, QWORD PTR allocated_memory[rip]
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	add	rax, rdx
	mov	QWORD PTR allocated_memory[rip], rax
	mov	rax, QWORD PTR allocated_memory[rip]
	neg	rax
	mov	rdi, rax
	mov	rcx, QWORD PTR VARIABLE[rip]
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	mov	r9, QWORD PTR -40[rbp]
	mov	r8, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	sub	rsp, 8
	push	rdi
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	jmp	.L656
.L666:
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC90[rip]
	call	print_line_number
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC98[rip]
	call	printf1
	jmp	.L656
.L662:
	mov	rax, QWORD PTR SYM_IDENTIFIER[rip]
	mov	rdi, rax
	call	syntax_error_symbol
.L656:
	mov	rdx, QWORD PTR symbol[rip]
	mov	rax, QWORD PTR SYM_EOF[rip]
	cmp	rdx, rax
	jne	.L657
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE134:
	.size	compile_cstar, .-compile_cstar
	.globl	emit_round_up
	.type	emit_round_up, @function
emit_round_up:
.LFB135:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, 0
	call	talloc
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, -1[rax]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, rax
	mov	rsi, rbx
	mov	rdi, rcx
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, rbx
	mov	rsi, rax
	mov	rdi, rcx
	call	emit_remu
	mov	eax, 0
	call	current_temporary
	mov	rdx, rax
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_sub
	mov	edi, 1
	call	tfree
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE135:
	.size	emit_round_up, .-emit_round_up
	.globl	emit_left_shift_by
	.type	emit_left_shift_by, @function
emit_left_shift_by:
.LFB136:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 16
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	two_to_the_power_of
	mov	r12, rax
	mov	rbx, QWORD PTR REG_ZR[rip]
	mov	eax, 0
	call	next_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	next_temporary
	mov	rdx, rax
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_mul
	nop
	add	rsp, 16
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE136:
	.size	emit_left_shift_by, .-emit_left_shift_by
	.globl	emit_program_entry
	.type	emit_program_entry, @function
emit_program_entry:
.LFB137:
	.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], 0
	jmp	.L671
.L672:
	mov	eax, 0
	call	emit_nop
	add	QWORD PTR -8[rbp], 1
.L671:
	cmp	QWORD PTR -8[rbp], 19
	jbe	.L672
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE137:
	.size	emit_program_entry, .-emit_program_entry
	.section	.rodata
	.align 8
.LC99:
	.string	"maximum program break exceeded"
.LC100:
	.string	"_bump"
	.text
	.globl	emit_bootstrapping
	.type	emit_bootstrapping, @function
emit_bootstrapping:
.LFB138:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rdx, QWORD PTR ELF_ENTRY_POINT[rip]
	mov	rax, QWORD PTR binary_length[rip]
	add	rdx, rax
	mov	rax, QWORD PTR allocated_memory[rip]
	add	rax, rdx
	mov	QWORD PTR -40[rbp], rax
	mov	rcx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 0
	div	rcx
	mov	QWORD PTR -32[rbp], rdx
	mov	rax, QWORD PTR -32[rbp]
	add	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	je	.L674
	mov	eax, 0
	call	emit_nop
.L674:
	mov	rax, QWORD PTR binary_length[rip]
	mov	QWORD PTR code_length[rip], rax
	mov	QWORD PTR binary_length[rip], 0
	mov	eax, 0
	call	report_undefined_procedures
	test	rax, rax
	je	.L675
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	jmp	.L676
.L675:
	mov	edi, 31
	call	two_to_the_power_of
	mov	rbx, rax
	mov	edi, 11
	call	two_to_the_power_of
	mov	rdx, rax
	mov	rax, rbx
	sub	rax, rdx
	cmp	QWORD PTR -40[rbp], rax
	jnb	.L677
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	load_integer
	jmp	.L678
.L677:
	lea	rdi, .LC99[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L678:
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR REG_GP[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	edi, 1
	call	tfree
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_BRK[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	emit_round_up
	mov	rdx, QWORD PTR SYSCALL_BRK[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rbx, QWORD PTR VARIABLE[rip]
	lea	rdi, .LC100[rip]
	call	string_copy
	mov	rsi, rbx
	mov	rdi, rax
	call	search_global_symbol_table
	mov	QWORD PTR -24[rbp], rax
	mov	rbx, QWORD PTR REG_A0[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	r12, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_scope
	mov	rdx, rbx
	mov	rsi, r12
	mov	rdi, rax
	call	emit_sd
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	talloc
	mov	r12, QWORD PTR REGISTERSIZE[rip]
	mov	rbx, QWORD PTR REG_SP[rip]
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_addi
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	current_temporary
	mov	rdx, rax
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	edi, 1
	call	tfree
	mov	rbx, QWORD PTR PROCEDURE[rip]
	lea	rdi, .LC96[rip]
	call	string_copy
	mov	rsi, rbx
	mov	rdi, rax
	call	get_scoped_symbol_table_entry
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC96[rip]
	mov	rdi, rax
	call	help_call_codegen
.L676:
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR REG_A0[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	rcx, QWORD PTR ic_addi[rip]
	mov	rax, QWORD PTR binary_length[rip]
	mov	rbx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rbx
	mov	rdx, rax
	mov	rax, rcx
	sub	rax, rdx
	mov	QWORD PTR ic_addi[rip], rax
	mov	rax, QWORD PTR code_length[rip]
	mov	QWORD PTR binary_length[rip], rax
	nop
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE138:
	.size	emit_bootstrapping, .-emit_bootstrapping
	.section	.rodata
.LC101:
	.string	"library"
	.align 8
.LC102:
	.string	"%s: selfie compiling %s with starc\n"
	.align 8
.LC103:
	.string	"%s: could not open input file %s\n"
	.align 8
.LC104:
	.string	"%s: %d characters read in %d lines and %d comments\n"
	.align 8
.LC105:
	.string	"%s: with %d(%.2d%%) characters in %d actual symbols\n"
	.align 8
.LC106:
	.string	"%s: %d global variables, %d procedures, %d string literals\n"
	.align 8
.LC107:
	.string	"%s: %d calls, %d assignments, %d while, %d if, %d return\n"
	.align 8
.LC108:
	.string	"%s: nothing to compile, only library generated\n"
	.align 8
.LC109:
	.string	"%s: symbol table search time was %d iterations on average and %d in total\n"
	.align 8
.LC110:
	.string	"%s: %d bytes generated with %d instructions and %d bytes of data\n"
	.text
	.globl	selfie_compile
	.type	selfie_compile, @function
selfie_compile:
.LFB139:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 16
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -32[rbp], 1
	mov	QWORD PTR -24[rbp], 0
	lea	rax, .LC101[rip]
	mov	QWORD PTR source_name[rip], rax
	mov	rax, QWORD PTR source_name[rip]
	mov	QWORD PTR binary_name[rip], rax
	mov	rax, QWORD PTR MAX_BINARY_LENGTH[rip]
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR binary[rip], rax
	mov	QWORD PTR binary_length[rip], 0
	mov	QWORD PTR code_length[rip], 0
	mov	rax, QWORD PTR MAX_CODE_LENGTH[rip]
	mov	rbx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rbx
	mov	rdx, rax
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	imul	rax, rdx
	mov	rdi, rax
	call	zalloc
	mov	QWORD PTR code_line_number[rip], rax
	mov	rax, QWORD PTR MAX_DATA_LENGTH[rip]
	mov	rbx, QWORD PTR REGISTERSIZE[rip]
	mov	edx, 0
	div	rbx
	mov	rdx, rax
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	imul	rax, rdx
	mov	rdi, rax
	call	zalloc
	mov	QWORD PTR data_line_number[rip], rax
	mov	eax, 0
	call	reset_symbol_tables
	mov	eax, 0
	call	reset_instruction_counters
	mov	eax, 0
	call	emit_program_entry
	mov	eax, 0
	call	emit_exit
	mov	eax, 0
	call	emit_read
	mov	eax, 0
	call	emit_write
	mov	eax, 0
	call	emit_open
	mov	eax, 0
	call	emit_malloc
	mov	eax, 0
	call	emit_switch
	mov	eax, 0
	call	emit_symbolic_input
	mov	eax, 0
	call	emit_printsv
	mov	eax, 0
	call	emit_assert_begin
	mov	eax, 0
	call	emit_assert_end
	mov	eax, 0
	call	emit_assert
	mov	r12, QWORD PTR UINT64_T[rip]
	mov	rbx, QWORD PTR PROCEDURE[rip]
	lea	rdi, .LC96[rip]
	call	string_copy
	mov	rsi, rax
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	sub	rsp, 8
	push	0
	mov	r9d, 0
	mov	r8, r12
	mov	rcx, rbx
	mov	edx, 0
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	jmp	.L680
.L684:
	mov	eax, 0
	call	number_of_remaining_arguments
	test	rax, rax
	jne	.L681
	mov	QWORD PTR -32[rbp], 0
	jmp	.L680
.L681:
	mov	eax, 0
	call	peek_argument
	mov	esi, 0
	mov	rdi, rax
	call	load_character
	cmp	rax, 45
	jne	.L682
	mov	QWORD PTR -32[rbp], 0
	jmp	.L680
.L682:
	mov	eax, 0
	call	get_argument
	mov	QWORD PTR source_name[rip], rax
	add	QWORD PTR -24[rbp], 1
	mov	rdx, QWORD PTR source_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC102[rip]
	call	printf2
	mov	rbx, QWORD PTR SYSCALL_BITWIDTH[rip]
	mov	rcx, QWORD PTR O_RDONLY[rip]
	mov	rax, QWORD PTR source_name[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	open@PLT
	mov	rsi, rbx
	mov	rdi, rax
	call	sign_extend
	mov	QWORD PTR source_fd[rip], rax
	mov	rax, QWORD PTR source_fd[rip]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L683
	mov	rdx, QWORD PTR source_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC103[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L683:
	mov	eax, 0
	call	reset_scanner
	mov	eax, 0
	call	reset_parser
	mov	eax, 0
	call	compile_cstar
	mov	rax, QWORD PTR number_of_comments[rip]
	mov	rsi, rax
	mov	rax, QWORD PTR line_number[rip]
	mov	rcx, rax
	mov	rax, QWORD PTR number_of_read_characters[rip]
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	r8, rsi
	mov	rsi, rax
	lea	rdi, .LC104[rip]
	call	printf4
	mov	rax, QWORD PTR number_of_scanned_symbols[rip]
	mov	rbx, rax
	mov	rax, QWORD PTR number_of_read_characters[rip]
	mov	rdx, QWORD PTR number_of_ignored_characters[rip]
	sub	rax, rdx
	mov	rcx, rax
	mov	rax, QWORD PTR number_of_read_characters[rip]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	fixed_point_ratio
	mov	esi, 4
	mov	rdi, rax
	call	fixed_point_percentage
	mov	rcx, rax
	mov	rax, QWORD PTR number_of_read_characters[rip]
	mov	rdx, QWORD PTR number_of_ignored_characters[rip]
	sub	rax, rdx
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	r8, rbx
	mov	rsi, rax
	lea	rdi, .LC105[rip]
	call	printf4
	mov	rax, QWORD PTR number_of_strings[rip]
	mov	rsi, rax
	mov	rax, QWORD PTR number_of_procedures[rip]
	mov	rcx, rax
	mov	rax, QWORD PTR number_of_global_variables[rip]
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	r8, rsi
	mov	rsi, rax
	lea	rdi, .LC106[rip]
	call	printf4
	mov	rax, QWORD PTR number_of_return[rip]
	mov	rsi, rax
	mov	rax, QWORD PTR number_of_if[rip]
	mov	r8, rax
	mov	rax, QWORD PTR number_of_while[rip]
	mov	rdi, rax
	mov	rax, QWORD PTR number_of_assignments[rip]
	mov	rcx, rax
	mov	rax, QWORD PTR number_of_calls[rip]
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	sub	rsp, 8
	push	rsi
	mov	r9, r8
	mov	r8, rdi
	mov	rsi, rax
	lea	rdi, .LC107[rip]
	call	printf6
	add	rsp, 16
.L680:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L684
	cmp	QWORD PTR -24[rbp], 0
	jne	.L685
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC108[rip]
	call	printf1
.L685:
	mov	eax, 0
	call	emit_bootstrapping
	mov	eax, 0
	call	emit_data_segment
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdi, rax
	call	create_elf_header
	mov	QWORD PTR ELF_header[rip], rax
	mov	rax, QWORD PTR ELF_ENTRY_POINT[rip]
	mov	QWORD PTR entry_point[rip], rax
	mov	rax, QWORD PTR total_search_time[rip]
	mov	rcx, rax
	mov	rax, QWORD PTR total_search_time[rip]
	mov	rbx, QWORD PTR number_of_searches[rip]
	mov	edx, 0
	div	rbx
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC109[rip]
	call	printf3
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdx, QWORD PTR code_length[rip]
	sub	rax, rdx
	mov	rsi, rax
	mov	rax, QWORD PTR code_length[rip]
	mov	rbx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rbx
	mov	rcx, rax
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	r8, rsi
	mov	rsi, rax
	lea	rdi, .LC110[rip]
	call	printf4
	mov	eax, 0
	call	print_instruction_counters
	nop
	lea	rsp, -16[rbp]
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE139:
	.size	selfie_compile, .-selfie_compile
	.globl	get_register_name
	.type	get_register_name, @function
get_register_name:
.LFB140:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rdx, QWORD PTR REGISTERS[rip]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE140:
	.size	get_register_name, .-get_register_name
	.globl	print_register_name
	.type	print_register_name, @function
print_register_name:
.LFB141:
	.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	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	get_register_name
	mov	rdi, rax
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE141:
	.size	print_register_name, .-print_register_name
	.section	.rodata
.LC111:
	.string	"encoding error"
	.align 8
.LC112:
	.string	"%d expected between %d and %d\n"
	.text
	.globl	check_immediate_range
	.type	check_immediate_range, @function
check_immediate_range:
.LFB142:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	is_signed_integer
	test	rax, rax
	jne	.L691
	mov	rax, QWORD PTR line_number[rip]
	mov	rsi, rax
	lea	rdi, .LC111[rip]
	call	print_line_number
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, 1
	mov	rdi, rax
	call	two_to_the_power_of
	sub	rax, 8
	mov	rbx, rax
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, 1
	mov	rdi, rax
	call	two_to_the_power_of
	neg	rax
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, rbx
	mov	rsi, rax
	lea	rdi, .LC112[rip]
	call	printf3
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L691:
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE142:
	.size	check_immediate_range, .-check_immediate_range
	.globl	encode_r_format
	.type	encode_r_format, @function
encode_r_format:
.LFB143:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	QWORD PTR -40[rbp], r8
	mov	QWORD PTR -48[rbp], r9
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	esi, 3
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	esi, 7
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -48[rbp]
	add	rax, rdx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE143:
	.size	encode_r_format, .-encode_r_format
	.globl	get_funct7
	.type	get_funct7, @function
get_funct7:
.LFB144:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 7
	mov	esi, 25
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE144:
	.size	get_funct7, .-get_funct7
	.globl	get_rs2
	.type	get_rs2, @function
get_rs2:
.LFB145:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 5
	mov	esi, 20
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE145:
	.size	get_rs2, .-get_rs2
	.globl	get_rs1
	.type	get_rs1, @function
get_rs1:
.LFB146:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 5
	mov	esi, 15
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE146:
	.size	get_rs1, .-get_rs1
	.globl	get_funct3
	.type	get_funct3, @function
get_funct3:
.LFB147:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 3
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE147:
	.size	get_funct3, .-get_funct3
	.globl	get_rd
	.type	get_rd, @function
get_rd:
.LFB148:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 5
	mov	esi, 7
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE148:
	.size	get_rd, .-get_rd
	.globl	get_opcode
	.type	get_opcode, @function
get_opcode:
.LFB149:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 7
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE149:
	.size	get_opcode, .-get_opcode
	.globl	decode_r_format
	.type	decode_r_format, @function
decode_r_format:
.LFB150:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_funct7
	mov	QWORD PTR funct7[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs2
	mov	QWORD PTR rs2[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs1
	mov	QWORD PTR rs1[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_funct3
	mov	QWORD PTR funct3[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rd
	mov	QWORD PTR rd[rip], rax
	mov	QWORD PTR imm[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE150:
	.size	decode_r_format, .-decode_r_format
	.globl	encode_i_format
	.type	encode_i_format, @function
encode_i_format:
.LFB151:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	QWORD PTR -40[rbp], r8
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	check_immediate_range
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	sign_shrink
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 3
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	esi, 7
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -40[rbp]
	add	rax, rdx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE151:
	.size	encode_i_format, .-encode_i_format
	.globl	get_immediate_i_format
	.type	get_immediate_i_format, @function
get_immediate_i_format:
.LFB152:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 12
	mov	esi, 20
	mov	rdi, rax
	call	get_bits
	mov	esi, 12
	mov	rdi, rax
	call	sign_extend
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE152:
	.size	get_immediate_i_format, .-get_immediate_i_format
	.globl	decode_i_format
	.type	decode_i_format, @function
decode_i_format:
.LFB153:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR funct7[rip], 0
	mov	QWORD PTR rs2[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs1
	mov	QWORD PTR rs1[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_funct3
	mov	QWORD PTR funct3[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rd
	mov	QWORD PTR rd[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_immediate_i_format
	mov	QWORD PTR imm[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE153:
	.size	decode_i_format, .-decode_i_format
	.globl	encode_s_format
	.type	encode_s_format, @function
encode_s_format:
.LFB154:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	QWORD PTR -56[rbp], r8
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	check_immediate_range
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	sign_shrink
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 7
	mov	esi, 5
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 5
	mov	esi, 0
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	esi, 3
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	esi, 7
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -56[rbp]
	add	rax, rdx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE154:
	.size	encode_s_format, .-encode_s_format
	.globl	get_immediate_s_format
	.type	get_immediate_s_format, @function
get_immediate_s_format:
.LFB155:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 24
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 7
	mov	esi, 25
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 5
	mov	esi, 7
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	esi, 12
	mov	rdi, rax
	call	sign_extend
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE155:
	.size	get_immediate_s_format, .-get_immediate_s_format
	.globl	decode_s_format
	.type	decode_s_format, @function
decode_s_format:
.LFB156:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR funct7[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs2
	mov	QWORD PTR rs2[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs1
	mov	QWORD PTR rs1[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_funct3
	mov	QWORD PTR funct3[rip], rax
	mov	QWORD PTR rd[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_immediate_s_format
	mov	QWORD PTR imm[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE156:
	.size	decode_s_format, .-decode_s_format
	.globl	encode_b_format
	.type	encode_b_format, @function
encode_b_format:
.LFB157:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	QWORD PTR -64[rbp], rcx
	mov	QWORD PTR -72[rbp], r8
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 13
	mov	rdi, rax
	call	check_immediate_range
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 13
	mov	rdi, rax
	call	sign_shrink
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 6
	mov	esi, 5
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 4
	mov	esi, 1
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 11
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 6
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -56[rbp]
	add	rax, rdx
	mov	esi, 3
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	esi, 4
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 1
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	esi, 7
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -72[rbp]
	add	rax, rdx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE157:
	.size	encode_b_format, .-encode_b_format
	.globl	get_immediate_b_format
	.type	get_immediate_b_format, @function
get_immediate_b_format:
.LFB158:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 40
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 31
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 6
	mov	esi, 25
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 4
	mov	esi, 8
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 7
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	esi, 6
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	esi, 4
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 1
	mov	rdi, rax
	call	left_shift
	mov	esi, 13
	mov	rdi, rax
	call	sign_extend
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE158:
	.size	get_immediate_b_format, .-get_immediate_b_format
	.globl	decode_b_format
	.type	decode_b_format, @function
decode_b_format:
.LFB159:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR funct7[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs2
	mov	QWORD PTR rs2[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rs1
	mov	QWORD PTR rs1[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_funct3
	mov	QWORD PTR funct3[rip], rax
	mov	QWORD PTR rd[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_immediate_b_format
	mov	QWORD PTR imm[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE159:
	.size	decode_b_format, .-decode_b_format
	.globl	encode_j_format
	.type	encode_j_format, @function
encode_j_format:
.LFB160:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 21
	mov	rdi, rax
	call	check_immediate_range
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 21
	mov	rdi, rax
	call	sign_shrink
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 20
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 10
	mov	esi, 1
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 11
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 8
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	esi, 1
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 8
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	esi, 7
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -56[rbp]
	add	rax, rdx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE160:
	.size	encode_j_format, .-encode_j_format
	.globl	get_immediate_j_format
	.type	get_immediate_j_format, @function
get_immediate_j_format:
.LFB161:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 40
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 31
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 10
	mov	esi, 21
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	esi, 20
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 8
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 8
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	esi, 1
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 10
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	esi, 1
	mov	rdi, rax
	call	left_shift
	mov	esi, 21
	mov	rdi, rax
	call	sign_extend
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE161:
	.size	get_immediate_j_format, .-get_immediate_j_format
	.globl	decode_j_format
	.type	decode_j_format, @function
decode_j_format:
.LFB162:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR funct7[rip], 0
	mov	QWORD PTR rs2[rip], 0
	mov	QWORD PTR rs1[rip], 0
	mov	QWORD PTR funct3[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rd
	mov	QWORD PTR rd[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_immediate_j_format
	mov	QWORD PTR imm[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE162:
	.size	decode_j_format, .-decode_j_format
	.globl	encode_u_format
	.type	encode_u_format, @function
encode_u_format:
.LFB163:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	check_immediate_range
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	sign_shrink
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	esi, 7
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE163:
	.size	encode_u_format, .-encode_u_format
	.globl	get_immediate_u_format
	.type	get_immediate_u_format, @function
get_immediate_u_format:
.LFB164:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 20
	mov	esi, 12
	mov	rdi, rax
	call	get_bits
	mov	esi, 20
	mov	rdi, rax
	call	sign_extend
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE164:
	.size	get_immediate_u_format, .-get_immediate_u_format
	.globl	decode_u_format
	.type	decode_u_format, @function
decode_u_format:
.LFB165:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR funct7[rip], 0
	mov	QWORD PTR rs2[rip], 0
	mov	QWORD PTR rs1[rip], 0
	mov	QWORD PTR funct3[rip], 0
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_rd
	mov	QWORD PTR rd[rip], rax
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_immediate_u_format
	mov	QWORD PTR imm[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE165:
	.size	decode_u_format, .-decode_u_format
	.globl	reset_instruction_counters
	.type	reset_instruction_counters, @function
reset_instruction_counters:
.LFB166:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR ic_lui[rip], 0
	mov	QWORD PTR ic_addi[rip], 0
	mov	QWORD PTR ic_add[rip], 0
	mov	QWORD PTR ic_sub[rip], 0
	mov	QWORD PTR ic_mul[rip], 0
	mov	QWORD PTR ic_divu[rip], 0
	mov	QWORD PTR ic_remu[rip], 0
	mov	QWORD PTR ic_xor[rip], 0
	mov	QWORD PTR ic_sltu[rip], 0
	mov	QWORD PTR ic_ld[rip], 0
	mov	QWORD PTR ic_sd[rip], 0
	mov	QWORD PTR ic_beq[rip], 0
	mov	QWORD PTR ic_jal[rip], 0
	mov	QWORD PTR ic_jalr[rip], 0
	mov	QWORD PTR ic_ecall[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE166:
	.size	reset_instruction_counters, .-reset_instruction_counters
	.globl	get_total_number_of_instructions
	.type	get_total_number_of_instructions, @function
get_total_number_of_instructions:
.LFB167:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdx, QWORD PTR ic_lui[rip]
	mov	rax, QWORD PTR ic_addi[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_add[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_sub[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_mul[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_divu[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_remu[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_xor[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_sltu[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_ld[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_sd[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_beq[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_jal[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_jalr[rip]
	add	rdx, rax
	mov	rax, QWORD PTR ic_ecall[rip]
	add	rax, rdx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE167:
	.size	get_total_number_of_instructions, .-get_total_number_of_instructions
	.section	.rodata
.LC113:
	.string	"%s: %d(%.2d%%)"
	.text
	.globl	print_instruction_counter
	.type	print_instruction_counter, @function
print_instruction_counter:
.LFB168:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	fixed_point_ratio
	mov	esi, 4
	mov	rdi, rax
	call	fixed_point_percentage
	mov	rcx, rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC113[rip]
	call	printf3
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE168:
	.size	print_instruction_counter, .-print_instruction_counter
	.section	.rodata
.LC114:
	.string	"%s: init:    "
.LC115:
	.string	"lui"
.LC116:
	.string	", "
.LC117:
	.string	"addi"
.LC118:
	.string	"%s: memory:  "
.LC119:
	.string	"ld"
.LC120:
	.string	"sd"
.LC121:
	.string	"%s: compute: "
.LC122:
	.string	"add"
.LC123:
	.string	"sub"
.LC124:
	.string	"mul"
.LC125:
	.string	"divu"
.LC126:
	.string	"remu"
.LC127:
	.string	"xor"
.LC128:
	.string	"%s: control: "
.LC129:
	.string	"sltu"
.LC130:
	.string	"beq"
.LC131:
	.string	"jal"
.LC132:
	.string	"jalr"
.LC133:
	.string	"ecall"
	.text
	.globl	print_instruction_counters
	.type	print_instruction_counters, @function
print_instruction_counters:
.LFB169:
	.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	eax, 0
	call	get_total_number_of_instructions
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC114[rip]
	call	printf1
	mov	rcx, QWORD PTR ic_lui[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC115[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_addi[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC117[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	mov	eax, 0
	call	println
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC118[rip]
	call	printf1
	mov	rcx, QWORD PTR ic_ld[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC119[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_sd[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC120[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	mov	eax, 0
	call	println
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC121[rip]
	call	printf1
	mov	rcx, QWORD PTR ic_add[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC122[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_sub[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC123[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_mul[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC124[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_divu[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC125[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_remu[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC126[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_xor[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC127[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	mov	eax, 0
	call	println
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC128[rip]
	call	printf1
	mov	rcx, QWORD PTR ic_sltu[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC129[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_beq[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC130[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_jal[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC131[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_jalr[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC132[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	lea	rdi, .LC116[rip]
	call	print
	mov	rcx, QWORD PTR ic_ecall[rip]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, .LC133[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	print_instruction_counter
	mov	eax, 0
	call	println
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE169:
	.size	print_instruction_counters, .-print_instruction_counters
	.globl	load_instruction
	.type	load_instruction, @function
load_instruction:
.LFB170:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rcx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	test	rax, rax
	jne	.L738
	mov	rcx, QWORD PTR binary[rip]
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	get_low_word
	jmp	.L739
.L738:
	mov	rcx, QWORD PTR binary[rip]
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	get_high_word
.L739:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE170:
	.size	load_instruction, .-load_instruction
	.section	.rodata
.LC134:
	.string	"maximum code length exceeded"
	.text
	.globl	store_instruction
	.type	store_instruction, @function
store_instruction:
.LFB171:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, QWORD PTR MAX_CODE_LENGTH[rip]
	cmp	QWORD PTR -40[rbp], rax
	jb	.L741
	lea	rdi, .LC134[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L741:
	mov	rcx, QWORD PTR binary[rip]
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -24[rbp], rax
	mov	rcx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	test	rax, rax
	jne	.L742
	mov	rbx, QWORD PTR WORDSIZEINBITS[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_high_word
	mov	rsi, rbx
	mov	rdi, rax
	call	left_shift
	mov	rdx, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	jmp	.L743
.L742:
	mov	rdx, QWORD PTR WORDSIZEINBITS[rip]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	left_shift
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_low_word
	add	rax, rbx
	mov	QWORD PTR -24[rbp], rax
.L743:
	mov	rcx, QWORD PTR binary[rip]
	mov	rbx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 0
	div	rbx
	sal	rax, 3
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE171:
	.size	store_instruction, .-store_instruction
	.globl	load_data
	.type	load_data, @function
load_data:
.LFB172:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rcx, QWORD PTR binary[rip]
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE172:
	.size	load_data, .-load_data
	.section	.rodata
.LC135:
	.string	"maximum data length exceeded"
	.text
	.globl	store_data
	.type	store_data, @function
store_data:
.LFB173:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR MAX_CODE_LENGTH[rip]
	mov	rax, QWORD PTR MAX_DATA_LENGTH[rip]
	add	rax, rdx
	cmp	QWORD PTR -8[rbp], rax
	jb	.L747
	lea	rdi, .LC135[rip]
	call	syntax_error_message
	mov	rax, QWORD PTR EXITCODE_COMPILERERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L747:
	mov	rcx, QWORD PTR binary[rip]
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE173:
	.size	store_data, .-store_data
	.globl	emit_instruction
	.type	emit_instruction, @function
emit_instruction:
.LFB174:
	.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	rax, QWORD PTR binary_length[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	store_instruction
	mov	rcx, QWORD PTR code_line_number[rip]
	mov	rax, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L749
	mov	rcx, QWORD PTR code_line_number[rip]
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdi, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rdi
	sal	rax, 3
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR line_number[rip]
	mov	QWORD PTR [rdx], rax
.L749:
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR INSTRUCTIONSIZE[rip]
	add	rax, rdx
	mov	QWORD PTR binary_length[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE174:
	.size	emit_instruction, .-emit_instruction
	.globl	emit_nop
	.type	emit_nop, @function
emit_nop:
.LFB175:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rsi, QWORD PTR OP_IMM[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rdx, QWORD PTR F3_NOP[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	r8, rsi
	mov	rsi, rax
	mov	edi, 0
	call	encode_i_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_addi[rip]
	add	rax, 1
	mov	QWORD PTR ic_addi[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE175:
	.size	emit_nop, .-emit_nop
	.globl	emit_lui
	.type	emit_lui, @function
emit_lui:
.LFB176:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR OP_LUI[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	encode_u_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_lui[rip]
	add	rax, 1
	mov	QWORD PTR ic_lui[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE176:
	.size	emit_lui, .-emit_lui
	.globl	emit_addi
	.type	emit_addi, @function
emit_addi:
.LFB177:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdi, QWORD PTR OP_IMM[rip]
	mov	rdx, QWORD PTR F3_ADDI[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	encode_i_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_addi[rip]
	add	rax, 1
	mov	QWORD PTR ic_addi[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE177:
	.size	emit_addi, .-emit_addi
	.globl	emit_add
	.type	emit_add, @function
emit_add:
.LFB178:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_ADD[rip]
	mov	rax, QWORD PTR F7_ADD[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_add[rip]
	add	rax, 1
	mov	QWORD PTR ic_add[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE178:
	.size	emit_add, .-emit_add
	.globl	emit_sub
	.type	emit_sub, @function
emit_sub:
.LFB179:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_SUB[rip]
	mov	rax, QWORD PTR F7_SUB[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_sub[rip]
	add	rax, 1
	mov	QWORD PTR ic_sub[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE179:
	.size	emit_sub, .-emit_sub
	.globl	emit_mul
	.type	emit_mul, @function
emit_mul:
.LFB180:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_MUL[rip]
	mov	rax, QWORD PTR F7_MUL[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_mul[rip]
	add	rax, 1
	mov	QWORD PTR ic_mul[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE180:
	.size	emit_mul, .-emit_mul
	.globl	emit_divu
	.type	emit_divu, @function
emit_divu:
.LFB181:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_DIVU[rip]
	mov	rax, QWORD PTR F7_DIVU[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_divu[rip]
	add	rax, 1
	mov	QWORD PTR ic_divu[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE181:
	.size	emit_divu, .-emit_divu
	.globl	emit_remu
	.type	emit_remu, @function
emit_remu:
.LFB182:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_REMU[rip]
	mov	rax, QWORD PTR F7_REMU[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_remu[rip]
	add	rax, 1
	mov	QWORD PTR ic_remu[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE182:
	.size	emit_remu, .-emit_remu
	.globl	emit_xor
	.type	emit_xor, @function
emit_xor:
.LFB183:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_XOR[rip]
	mov	rax, QWORD PTR F7_XOR[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_xor[rip]
	add	rax, 1
	mov	QWORD PTR ic_xor[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE183:
	.size	emit_xor, .-emit_xor
	.globl	emit_sltu
	.type	emit_sltu, @function
emit_sltu:
.LFB184:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	r8, QWORD PTR OP_OP[rip]
	mov	rcx, QWORD PTR F3_SLTU[rip]
	mov	rax, QWORD PTR F7_SLTU[rip]
	mov	rdi, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, r8
	mov	r8, rdi
	mov	rdi, rax
	call	encode_r_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_sltu[rip]
	add	rax, 1
	mov	QWORD PTR ic_sltu[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE184:
	.size	emit_sltu, .-emit_sltu
	.globl	emit_ld
	.type	emit_ld, @function
emit_ld:
.LFB185:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdi, QWORD PTR OP_LD[rip]
	mov	rdx, QWORD PTR F3_LD[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	encode_i_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_ld[rip]
	add	rax, 1
	mov	QWORD PTR ic_ld[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE185:
	.size	emit_ld, .-emit_ld
	.globl	emit_sd
	.type	emit_sd, @function
emit_sd:
.LFB186:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdi, QWORD PTR OP_SD[rip]
	mov	rcx, QWORD PTR F3_SD[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	encode_s_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_sd[rip]
	add	rax, 1
	mov	QWORD PTR ic_sd[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE186:
	.size	emit_sd, .-emit_sd
	.globl	emit_beq
	.type	emit_beq, @function
emit_beq:
.LFB187:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdi, QWORD PTR OP_BRANCH[rip]
	mov	rcx, QWORD PTR F3_BEQ[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	encode_b_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_beq[rip]
	add	rax, 1
	mov	QWORD PTR ic_beq[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE187:
	.size	emit_beq, .-emit_beq
	.globl	emit_jal
	.type	emit_jal, @function
emit_jal:
.LFB188:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR OP_JAL[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	encode_j_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_jal[rip]
	add	rax, 1
	mov	QWORD PTR ic_jal[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE188:
	.size	emit_jal, .-emit_jal
	.globl	emit_jalr
	.type	emit_jalr, @function
emit_jalr:
.LFB189:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdi, QWORD PTR OP_JALR[rip]
	mov	rdx, QWORD PTR F3_JALR[rip]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	encode_i_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_jalr[rip]
	add	rax, 1
	mov	QWORD PTR ic_jalr[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE189:
	.size	emit_jalr, .-emit_jalr
	.globl	emit_ecall
	.type	emit_ecall, @function
emit_ecall:
.LFB190:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdi, QWORD PTR OP_SYSTEM[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rdx, QWORD PTR F3_ECALL[rip]
	mov	rsi, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR F12_ECALL[rip]
	mov	r8, rdi
	mov	rdi, rax
	call	encode_i_format
	mov	rdi, rax
	call	emit_instruction
	mov	rax, QWORD PTR ic_ecall[rip]
	add	rax, 1
	mov	QWORD PTR ic_ecall[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE190:
	.size	emit_ecall, .-emit_ecall
	.globl	fixup_relative_BFormat
	.type	fixup_relative_BFormat, @function
fixup_relative_BFormat:
.LFB191:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r13
	push	r12
	push	rbx
	sub	rsp, 40
	.cfi_offset 13, -24
	.cfi_offset 12, -32
	.cfi_offset 3, -40
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	load_instruction
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_opcode
	mov	r13, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_funct3
	mov	r12, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_rs1
	mov	rbx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_rs2
	mov	rsi, rax
	mov	rax, QWORD PTR binary_length[rip]
	sub	rax, QWORD PTR -56[rbp]
	mov	r8, r13
	mov	rcx, r12
	mov	rdx, rbx
	mov	rdi, rax
	call	encode_b_format
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	store_instruction
	nop
	add	rsp, 40
	pop	rbx
	pop	r12
	pop	r13
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE191:
	.size	fixup_relative_BFormat, .-fixup_relative_BFormat
	.globl	fixup_relative_JFormat
	.type	fixup_relative_JFormat, @function
fixup_relative_JFormat:
.LFB192:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	load_instruction
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_opcode
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_rd
	mov	rcx, rax
	mov	rax, QWORD PTR -48[rbp]
	sub	rax, QWORD PTR -40[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	encode_j_format
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	store_instruction
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE192:
	.size	fixup_relative_JFormat, .-fixup_relative_JFormat
	.globl	fixlink_relative
	.type	fixlink_relative, @function
fixlink_relative:
.LFB193:
	.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
	jmp	.L769
.L770:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	load_instruction
	mov	rdi, rax
	call	get_immediate_j_format
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	fixup_relative_JFormat
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
.L769:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L770
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE193:
	.size	fixlink_relative, .-fixlink_relative
	.globl	emit_data_word
	.type	emit_data_word, @function
emit_data_word:
.LFB194:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	store_data
	mov	rax, QWORD PTR data_line_number[rip]
	test	rax, rax
	je	.L773
	mov	rcx, QWORD PTR data_line_number[rip]
	mov	rdx, QWORD PTR allocated_memory[rip]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rdx], rax
.L773:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE194:
	.size	emit_data_word, .-emit_data_word
	.globl	emit_string_data
	.type	emit_string_data, @function
emit_string_data:
.LFB195:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 56
	.cfi_offset 3, -24
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	get_string
	mov	QWORD PTR -40[rbp], rax
	mov	QWORD PTR -32[rbp], 0
	mov	rbx, QWORD PTR REGISTERSIZE[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	string_length
	add	rax, 1
	mov	rsi, rbx
	mov	rdi, rax
	call	round_up
	mov	QWORD PTR -24[rbp], rax
	jmp	.L775
.L776:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	get_line_number
	mov	rbx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	get_address
	mov	rdx, QWORD PTR -32[rbp]
	lea	rcx, [rax+rdx]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_data_word
	add	QWORD PTR -40[rbp], 8
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	add	QWORD PTR -32[rbp], rax
.L775:
	mov	rax, QWORD PTR -32[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jb	.L776
	nop
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE195:
	.size	emit_string_data, .-emit_string_data
	.globl	emit_data_segment
	.type	emit_data_segment, @function
emit_data_segment:
.LFB196:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 16
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rax, QWORD PTR allocated_memory[rip]
	add	rax, rdx
	mov	QWORD PTR binary_length[rip], rax
	mov	QWORD PTR -32[rbp], 0
	jmp	.L778
.L784:
	mov	rdx, QWORD PTR global_symbol_table[rip]
	mov	rax, QWORD PTR -32[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L779
.L783:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_class
	mov	rdx, QWORD PTR VARIABLE[rip]
	cmp	rax, rdx
	jne	.L780
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_line_number
	mov	r12, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_value
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_data_word
	jmp	.L781
.L780:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_class
	mov	rdx, QWORD PTR BIGINT[rip]
	cmp	rax, rdx
	jne	.L782
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_line_number
	mov	r12, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_address
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_value
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_data_word
	jmp	.L781
.L782:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_class
	mov	rdx, QWORD PTR STRING[rip]
	cmp	rax, rdx
	jne	.L781
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	emit_string_data
.L781:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_next_entry
	mov	QWORD PTR -24[rbp], rax
.L779:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L783
	add	QWORD PTR -32[rbp], 1
.L778:
	mov	rax, QWORD PTR HASH_TABLE_SIZE[rip]
	cmp	QWORD PTR -32[rbp], rax
	jb	.L784
	mov	QWORD PTR allocated_memory[rip], 0
	nop
	add	rsp, 16
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE196:
	.size	emit_data_segment, .-emit_data_segment
	.globl	create_elf_header
	.type	create_elf_header, @function
create_elf_header:
.LFB197:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR ELF_HEADER_LEN[rip]
	mov	rdi, rax
	call	smalloc
	mov	QWORD PTR -24[rbp], rax
	mov	esi, 8
	mov	edi, 69
	call	left_shift
	mov	rbx, rax
	mov	esi, 16
	mov	edi, 76
	call	left_shift
	add	rbx, rax
	mov	esi, 24
	mov	edi, 70
	call	left_shift
	add	rbx, rax
	mov	esi, 32
	mov	edi, 2
	call	left_shift
	add	rbx, rax
	mov	esi, 40
	mov	edi, 1
	call	left_shift
	add	rbx, rax
	mov	esi, 48
	mov	edi, 1
	call	left_shift
	add	rax, rbx
	lea	rdx, 127[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	mov	QWORD PTR [rax], 0
	mov	esi, 16
	mov	edi, 243
	call	left_shift
	mov	rbx, rax
	mov	esi, 32
	mov	edi, 1
	call	left_shift
	lea	rdx, [rbx+rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 16
	add	rdx, 2
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 24[rax]
	mov	rax, QWORD PTR ELF_ENTRY_POINT[rip]
	mov	QWORD PTR [rdx], rax
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 32
	sal	rdx, 3
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 40
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	sal	rax, 3
	mov	esi, 32
	mov	rdi, rax
	call	left_shift
	mov	rbx, rax
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	mov	esi, 48
	mov	rdi, rax
	call	left_shift
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 48
	add	rdx, rbx
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 56
	mov	QWORD PTR [rax], 1
	mov	esi, 32
	mov	edi, 7
	call	left_shift
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 64
	add	rax, 1
	mov	QWORD PTR [rdx], rax
	mov	rcx, QWORD PTR ELF_HEADER_LEN[rip]
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 72
	add	rdx, rcx
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 80[rax]
	mov	rax, QWORD PTR ELF_ENTRY_POINT[rip]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 88
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 96[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 104[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 112[rax]
	mov	rax, QWORD PTR PAGESIZE[rip]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE197:
	.size	create_elf_header, .-create_elf_header
	.globl	open_write_only
	.type	open_write_only, @function
open_write_only:
.LFB198:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rbx, QWORD PTR SYSCALL_BITWIDTH[rip]
	mov	rdx, QWORD PTR S_IRUSR_IWUSR_IRGRP_IROTH[rip]
	mov	rcx, QWORD PTR MAC_O_CREAT_TRUNC_WRONLY[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	open@PLT
	mov	rsi, rbx
	mov	rdi, rax
	call	sign_extend
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L788
	mov	rbx, QWORD PTR SYSCALL_BITWIDTH[rip]
	mov	rdx, QWORD PTR S_IRUSR_IWUSR_IRGRP_IROTH[rip]
	mov	rcx, QWORD PTR LINUX_O_CREAT_TRUNC_WRONLY[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	open@PLT
	mov	rsi, rbx
	mov	rdi, rax
	call	sign_extend
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L788
	mov	rbx, QWORD PTR SYSCALL_BITWIDTH[rip]
	mov	rdx, QWORD PTR S_IRUSR_IWUSR_IRGRP_IROTH[rip]
	mov	rcx, QWORD PTR WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	open@PLT
	mov	rsi, rbx
	mov	rdi, rax
	call	sign_extend
	mov	QWORD PTR -24[rbp], rax
.L788:
	mov	rax, QWORD PTR -24[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE198:
	.size	open_write_only, .-open_write_only
	.section	.rodata
	.align 8
.LC136:
	.string	"%s: nothing to emit to output file %s\n"
	.align 8
.LC137:
	.string	"%s: could not create binary output file %s\n"
	.align 8
.LC138:
	.string	"%s: could not write ELF header of binary output file %s\n"
	.align 8
.LC139:
	.string	"%s: could not write code length of binary output file %s\n"
	.align 8
.LC140:
	.string	"%s: could not write binary into binary output file %s\n"
	.align 8
.LC141:
	.string	"%s: %d bytes with %d instructions and %d bytes of data written into %s\n"
	.text
	.globl	selfie_output
	.type	selfie_output, @function
selfie_output:
.LFB199:
	.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	eax, 0
	call	get_argument
	mov	QWORD PTR binary_name[rip], rax
	mov	rax, QWORD PTR binary_length[rip]
	test	rax, rax
	jne	.L791
	mov	rdx, QWORD PTR binary_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC136[rip]
	call	printf2
	jmp	.L790
.L791:
	mov	rax, QWORD PTR binary_name[rip]
	mov	rdi, rax
	call	open_write_only
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L793
	mov	rdx, QWORD PTR binary_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC137[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L793:
	mov	rdx, QWORD PTR ELF_HEADER_LEN[rip]
	mov	rcx, QWORD PTR ELF_header[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	write@PLT
	mov	rdx, QWORD PTR ELF_HEADER_LEN[rip]
	cmp	rax, rdx
	je	.L794
	mov	rdx, QWORD PTR binary_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC138[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L794:
	mov	rax, QWORD PTR binary_buffer[rip]
	mov	rdx, QWORD PTR code_length[rip]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	mov	rcx, QWORD PTR binary_buffer[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	write@PLT
	mov	rdx, QWORD PTR SIZEOFUINT64[rip]
	cmp	rax, rdx
	je	.L795
	mov	rdx, QWORD PTR binary_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC139[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L795:
	mov	rdx, QWORD PTR binary_length[rip]
	mov	rcx, QWORD PTR binary[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	write@PLT
	mov	rdx, QWORD PTR binary_length[rip]
	cmp	rax, rdx
	je	.L796
	mov	rdx, QWORD PTR binary_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC140[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L796:
	mov	rcx, QWORD PTR binary_name[rip]
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdx, QWORD PTR code_length[rip]
	sub	rax, rdx
	mov	rdi, rax
	mov	rax, QWORD PTR code_length[rip]
	mov	rsi, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rsi
	mov	rsi, rax
	mov	rdx, QWORD PTR ELF_HEADER_LEN[rip]
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	add	rdx, rax
	mov	rax, QWORD PTR binary_length[rip]
	add	rax, rdx
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	r9, rcx
	mov	r8, rdi
	mov	rcx, rsi
	mov	rsi, rax
	lea	rdi, .LC141[rip]
	call	printf5
.L790:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE199:
	.size	selfie_output, .-selfie_output
	.section	.rodata
.LC142:
	.string	"exit"
	.text
	.globl	emit_exit
	.type	emit_exit, @function
emit_exit:
.LFB200:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR VOID_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC142[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_EXIT[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE200:
	.size	emit_exit, .-emit_exit
	.section	.rodata
.LC143:
	.string	"read"
	.text
	.globl	emit_read
	.type	emit_read, @function
emit_read:
.LFB201:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC143[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A2[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_READ[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE201:
	.size	emit_read, .-emit_read
	.section	.rodata
.LC144:
	.string	"input"
	.text
	.globl	emit_symbolic_input
	.type	emit_symbolic_input, @function
emit_symbolic_input:
.LFB202:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC144[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A2[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_SYMBOLIC_INPUT[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE202:
	.size	emit_symbolic_input, .-emit_symbolic_input
	.section	.rodata
.LC145:
	.string	"printsv"
	.text
	.globl	emit_printsv
	.type	emit_printsv, @function
emit_printsv:
.LFB203:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC145[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_PRINTSV[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE203:
	.size	emit_printsv, .-emit_printsv
	.section	.rodata
.LC146:
	.string	"assert"
	.text
	.globl	emit_assert
	.type	emit_assert, @function
emit_assert:
.LFB204:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC146[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_ASSERT[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE204:
	.size	emit_assert, .-emit_assert
	.section	.rodata
.LC147:
	.string	"assert_begin"
	.text
	.globl	emit_assert_begin
	.type	emit_assert_begin, @function
emit_assert_begin:
.LFB205:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC147[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rdx, QWORD PTR SYSCALL_ASSERT_ZONE_BGN[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE205:
	.size	emit_assert_begin, .-emit_assert_begin
	.section	.rodata
.LC148:
	.string	"assert_end"
	.text
	.globl	emit_assert_end
	.type	emit_assert_end, @function
emit_assert_end:
.LFB206:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC148[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rdx, QWORD PTR SYSCALL_ASSERT_ZONE_END[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE206:
	.size	emit_assert_end, .-emit_assert_end
	.section	.rodata
.LC149:
	.string	"write"
	.text
	.globl	emit_write
	.type	emit_write, @function
emit_write:
.LFB207:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC149[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A2[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_WRITE[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE207:
	.size	emit_write, .-emit_write
	.section	.rodata
.LC150:
	.string	"open"
	.text
	.globl	emit_open
	.type	emit_open, @function
emit_open:
.LFB208:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC150[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A2[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_OPEN[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE208:
	.size	emit_open, .-emit_open
	.section	.rodata
.LC151:
	.string	"malloc"
.LC152:
	.string	"zalloc"
	.text
	.globl	emit_malloc
	.type	emit_malloc, @function
emit_malloc:
.LFB209:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r13
	push	r12
	push	rbx
	sub	rsp, 24
	.cfi_offset 13, -24
	.cfi_offset 12, -32
	.cfi_offset 3, -40
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64STAR_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC151[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64STAR_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC152[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rdx, QWORD PTR allocated_memory[rip]
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	add	rax, rdx
	mov	QWORD PTR allocated_memory[rip], rax
	mov	rax, QWORD PTR allocated_memory[rip]
	neg	rax
	mov	r12, rax
	mov	r13, QWORD PTR UINT64_T[rip]
	mov	rbx, QWORD PTR VARIABLE[rip]
	lea	rdi, .LC100[rip]
	call	string_copy
	mov	rsi, rax
	mov	rax, QWORD PTR GLOBAL_TABLE[rip]
	sub	rsp, 8
	push	r12
	mov	r9d, 0
	mov	r8, r13
	mov	rcx, rbx
	mov	edx, 1
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rax, QWORD PTR number_of_global_variables[rip]
	sub	rax, 1
	mov	QWORD PTR number_of_global_variables[rip], rax
	mov	rbx, QWORD PTR VARIABLE[rip]
	lea	rdi, .LC100[rip]
	call	string_copy
	mov	rsi, rbx
	mov	rdi, rax
	call	search_global_symbol_table
	mov	QWORD PTR -40[rbp], rax
	mov	eax, 0
	call	talloc
	mov	rbx, QWORD PTR REG_SP[rip]
	mov	eax, 0
	call	current_temporary
	mov	edx, 0
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rbx, QWORD PTR SIZEOFUINT64[rip]
	mov	eax, 0
	call	current_temporary
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_round_up
	mov	eax, 0
	call	talloc
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_address
	mov	r12, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_scope
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rdx, r12
	mov	rsi, rbx
	mov	rdi, rax
	call	emit_ld
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR REG_A0[rip]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_add
	mov	rdx, QWORD PTR SYSCALL_BRK[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	neg	rax
	mov	rdx, rax
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR REG_A0[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	esi, 0
	mov	rdi, rax
	call	emit_sd
	mov	eax, 0
	call	previous_temporary
	mov	rbx, rax
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR REG_A0[rip]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_add
	mov	rax, QWORD PTR INSTRUCTIONSIZE[rip]
	lea	rbx, [rax+rax]
	mov	eax, 0
	call	current_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR REG_A0[rip]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_beq
	mov	rax, QWORD PTR INSTRUCTIONSIZE[rip]
	lea	rdx, 0[0+rax*4]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_beq
	mov	rdx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	rax, rdx
	add	rax, rax
	lea	rbx, [rax+rdx]
	mov	eax, 0
	call	previous_temporary
	mov	rcx, rax
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_beq
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rax, QWORD PTR INSTRUCTIONSIZE[rip]
	lea	rdx, 0[0+rax*4]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_beq
	mov	rbx, QWORD PTR REG_A0[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_address
	mov	r12, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_scope
	mov	rdx, rbx
	mov	rsi, r12
	mov	rdi, rax
	call	emit_sd
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	edi, 2
	call	tfree
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	lea	rsp, -24[rbp]
	pop	rbx
	pop	r12
	pop	r13
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE209:
	.size	emit_malloc, .-emit_malloc
	.section	.rodata
.LC153:
	.string	"hypster_switch"
	.text
	.globl	emit_switch
	.type	emit_switch, @function
emit_switch:
.LFB210:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rcx, QWORD PTR binary_length[rip]
	mov	rsi, QWORD PTR UINT64STAR_T[rip]
	mov	rdx, QWORD PTR PROCEDURE[rip]
	mov	rax, QWORD PTR LIBRARY_TABLE[rip]
	sub	rsp, 8
	push	rcx
	mov	r9d, 0
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 0
	lea	rsi, .LC153[rip]
	mov	rdi, rax
	call	create_symbol_table_entry
	add	rsp, 16
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A1[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_ld
	mov	rdx, QWORD PTR REGISTERSIZE[rip]
	mov	rcx, QWORD PTR REG_SP[rip]
	mov	rax, QWORD PTR REG_SP[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rdx, QWORD PTR SYSCALL_SWITCH[rip]
	mov	rcx, QWORD PTR REG_ZR[rip]
	mov	rax, QWORD PTR REG_A7[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	eax, 0
	call	emit_ecall
	mov	rcx, QWORD PTR REG_A1[rip]
	mov	rax, QWORD PTR REG_A0[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_addi
	mov	rcx, QWORD PTR REG_RA[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	emit_jalr
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE210:
	.size	emit_switch, .-emit_switch
	.section	.rodata
.LC154:
	.string	"(~%d)"
	.text
	.globl	print_code_line_number_for_instruction
	.type	print_code_line_number_for_instruction, @function
print_code_line_number_for_instruction:
.LFB211:
	.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	rax, QWORD PTR code_line_number[rip]
	test	rax, rax
	je	.L810
	mov	rcx, QWORD PTR code_line_number[rip]
	mov	rsi, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC154[rip]
	call	printf1
.L810:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE211:
	.size	print_code_line_number_for_instruction, .-print_code_line_number_for_instruction
	.section	.rodata
.LC155:
	.string	"%x"
.LC156:
	.string	": %p"
.LC157:
	.string	": "
	.text
	.globl	print_code_context_for_instruction
	.type	print_code_context_for_instruction, @function
print_code_context_for_instruction:
.LFB212:
	.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	rax, QWORD PTR pc[rip]
	mov	rsi, rax
	lea	rdi, .LC155[rip]
	call	printf1
	mov	rax, QWORD PTR disassemble_verbose[rip]
	test	rax, rax
	je	.L812
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_line_number_for_instruction
	mov	rax, QWORD PTR ir[rip]
	mov	rsi, rax
	lea	rdi, .LC156[rip]
	call	printf1
.L812:
	lea	rdi, .LC157[rip]
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE212:
	.size	print_code_context_for_instruction, .-print_code_context_for_instruction
	.section	.rodata
.LC158:
	.string	"lui %s,%x"
	.text
	.globl	print_lui
	.type	print_lui, @function
print_lui:
.LFB213:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 8
	.cfi_offset 3, -24
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rax, QWORD PTR imm[rip]
	mov	esi, 20
	mov	rdi, rax
	call	sign_shrink
	mov	rbx, rax
	mov	rax, QWORD PTR rd[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC158[rip]
	call	printf2
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE213:
	.size	print_lui, .-print_lui
	.section	.rodata
.LC159:
	.string	"nop"
.LC160:
	.string	"addi %s,%s,%d"
	.text
	.globl	print_addi
	.type	print_addi, @function
print_addi:
.LFB214:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rdx, QWORD PTR rd[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	cmp	rdx, rax
	jne	.L815
	mov	rdx, QWORD PTR rs1[rip]
	mov	rax, QWORD PTR REG_ZR[rip]
	cmp	rdx, rax
	jne	.L815
	mov	rax, QWORD PTR imm[rip]
	test	rax, rax
	jne	.L815
	lea	rdi, .LC159[rip]
	call	print
	jmp	.L814
.L815:
	mov	rax, QWORD PTR imm[rip]
	mov	r12, rax
	mov	rax, QWORD PTR rs1[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rbx, rax
	mov	rax, QWORD PTR rd[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rcx, r12
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC160[rip]
	call	printf3
.L814:
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE214:
	.size	print_addi, .-print_addi
	.section	.rodata
.LC161:
	.string	"%s %s,%s,%s"
	.text
	.globl	print_add_sub_mul_divu_remu_sltu
	.type	print_add_sub_mul_divu_remu_sltu, @function
print_add_sub_mul_divu_remu_sltu:
.LFB215:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 16
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rax, QWORD PTR rs2[rip]
	mov	rdi, rax
	call	get_register_name
	mov	r12, rax
	mov	rax, QWORD PTR rs1[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rbx, rax
	mov	rax, QWORD PTR rd[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	r8, r12
	mov	rcx, rbx
	mov	rsi, rax
	lea	rdi, .LC161[rip]
	call	printf4
	nop
	add	rsp, 16
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE215:
	.size	print_add_sub_mul_divu_remu_sltu, .-print_add_sub_mul_divu_remu_sltu
	.section	.rodata
.LC162:
	.string	"ld %s,%d(%s)"
	.text
	.globl	print_ld
	.type	print_ld, @function
print_ld:
.LFB216:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rax, QWORD PTR rs1[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rbx, rax
	mov	rax, QWORD PTR imm[rip]
	mov	r12, rax
	mov	rax, QWORD PTR rd[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rcx, rbx
	mov	rdx, r12
	mov	rsi, rax
	lea	rdi, .LC162[rip]
	call	printf3
	nop
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE216:
	.size	print_ld, .-print_ld
	.section	.rodata
.LC163:
	.string	"sd %s,%d(%s)"
	.text
	.globl	print_sd
	.type	print_sd, @function
print_sd:
.LFB217:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rax, QWORD PTR rs1[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rbx, rax
	mov	rax, QWORD PTR imm[rip]
	mov	r12, rax
	mov	rax, QWORD PTR rs2[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rcx, rbx
	mov	rdx, r12
	mov	rsi, rax
	lea	rdi, .LC163[rip]
	call	printf3
	nop
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE217:
	.size	print_sd, .-print_sd
	.section	.rodata
.LC164:
	.string	"beq %s,%s,%d[%x]"
	.text
	.globl	print_beq
	.type	print_beq, @function
print_beq:
.LFB218:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r13
	push	r12
	push	rbx
	sub	rsp, 8
	.cfi_offset 13, -24
	.cfi_offset 12, -32
	.cfi_offset 3, -40
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rdx, QWORD PTR pc[rip]
	mov	rax, QWORD PTR imm[rip]
	add	rax, rdx
	mov	r13, rax
	mov	rdx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	rax, QWORD PTR imm[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	signed_division
	mov	r12, rax
	mov	rax, QWORD PTR rs2[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rbx, rax
	mov	rax, QWORD PTR rs1[rip]
	mov	rdi, rax
	call	get_register_name
	mov	r8, r13
	mov	rcx, r12
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC164[rip]
	call	printf4
	nop
	add	rsp, 8
	pop	rbx
	pop	r12
	pop	r13
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE218:
	.size	print_beq, .-print_beq
	.section	.rodata
.LC165:
	.string	"jal %s,%d[%x]"
	.text
	.globl	print_jal
	.type	print_jal, @function
print_jal:
.LFB219:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rdx, QWORD PTR pc[rip]
	mov	rax, QWORD PTR imm[rip]
	add	rax, rdx
	mov	r12, rax
	mov	rdx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	rax, QWORD PTR imm[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	signed_division
	mov	rbx, rax
	mov	rax, QWORD PTR rd[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rcx, r12
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC165[rip]
	call	printf3
	nop
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE219:
	.size	print_jal, .-print_jal
	.section	.rodata
.LC166:
	.string	"jalr %s,%d(%s)"
	.text
	.globl	print_jalr
	.type	print_jalr, @function
print_jalr:
.LFB220:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	mov	rax, QWORD PTR rs1[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rbx, rax
	mov	rdx, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	rax, QWORD PTR imm[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	signed_division
	mov	r12, rax
	mov	rax, QWORD PTR rd[rip]
	mov	rdi, rax
	call	get_register_name
	mov	rcx, rbx
	mov	rdx, r12
	mov	rsi, rax
	lea	rdi, .LC166[rip]
	call	printf3
	nop
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE220:
	.size	print_jalr, .-print_jalr
	.globl	print_ecall
	.type	print_ecall, @function
print_ecall:
.LFB221:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	print_code_context_for_instruction
	lea	rdi, .LC133[rip]
	call	print
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE221:
	.size	print_ecall, .-print_ecall
	.globl	print_data_line_number
	.type	print_data_line_number, @function
print_data_line_number:
.LFB222:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR data_line_number[rip]
	test	rax, rax
	je	.L826
	mov	rcx, QWORD PTR data_line_number[rip]
	mov	rax, QWORD PTR pc[rip]
	mov	rdx, QWORD PTR code_length[rip]
	sub	rax, rdx
	mov	rsi, QWORD PTR REGISTERSIZE[rip]
	mov	edx, 0
	div	rsi
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC154[rip]
	call	printf1
.L826:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE222:
	.size	print_data_line_number, .-print_data_line_number
	.section	.rodata
.LC167:
	.string	" "
	.text
	.globl	print_data_context
	.type	print_data_context, @function
print_data_context:
.LFB223:
	.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	rax, QWORD PTR pc[rip]
	mov	rsi, rax
	lea	rdi, .LC155[rip]
	call	printf1
	mov	rax, QWORD PTR disassemble_verbose[rip]
	test	rax, rax
	je	.L828
	mov	eax, 0
	call	print_data_line_number
	lea	rdi, .LC157[rip]
	call	print
	mov	rax, QWORD PTR SIZEOFUINT64[rip]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	print_hexadecimal
	lea	rdi, .LC167[rip]
	call	print
	jmp	.L830
.L828:
	lea	rdi, .LC157[rip]
	call	print
.L830:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE223:
	.size	print_data_context, .-print_data_context
	.section	.rodata
.LC168:
	.string	".quad %x"
	.text
	.globl	print_data
	.type	print_data, @function
print_data:
.LFB224:
	.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	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print_data_context
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC168[rip]
	call	printf1
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE224:
	.size	print_data, .-print_data
	.section	.rodata
.LC169:
	.string	"%s=%x"
	.text
	.globl	print_register_hexadecimal
	.type	print_register_hexadecimal, @function
print_register_hexadecimal:
.LFB225:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	rdx, QWORD PTR registers[rip]
	mov	rax, QWORD PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_register_name
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC169[rip]
	call	printf2
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE225:
	.size	print_register_hexadecimal, .-print_register_hexadecimal
	.section	.rodata
.LC170:
	.string	"%s=%o"
	.text
	.globl	print_register_octal
	.type	print_register_octal, @function
print_register_octal:
.LFB226:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	rdx, QWORD PTR registers[rip]
	mov	rax, QWORD PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_register_name
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC170[rip]
	call	printf2
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE226:
	.size	print_register_octal, .-print_register_octal
	.globl	is_system_register
	.type	is_system_register, @function
is_system_register:
.LFB227:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR REG_GP[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L835
	mov	eax, 1
	jmp	.L836
.L835:
	mov	rax, QWORD PTR REG_FP[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L837
	mov	eax, 1
	jmp	.L836
.L837:
	mov	rax, QWORD PTR REG_RA[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L838
	mov	eax, 1
	jmp	.L836
.L838:
	mov	rax, QWORD PTR REG_SP[rip]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L839
	mov	eax, 1
	jmp	.L836
.L839:
	mov	eax, 0
.L836:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE227:
	.size	is_system_register, .-is_system_register
	.section	.rodata
.LC171:
	.string	"%s=%d(%x)"
	.text
	.globl	print_register_value
	.type	print_register_value, @function
print_register_value:
.LFB228:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 16
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	is_system_register
	test	rax, rax
	je	.L841
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	print_register_hexadecimal
	jmp	.L843
.L841:
	mov	rdx, QWORD PTR registers[rip]
	mov	rax, QWORD PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	r12, rax
	mov	rdx, QWORD PTR registers[rip]
	mov	rax, QWORD PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_register_name
	mov	rcx, r12
	mov	rdx, rbx
	mov	rsi, rax
	lea	rdi, .LC171[rip]
	call	printf3
.L843:
	nop
	add	rsp, 16
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE228:
	.size	print_register_value, .-print_register_value
	.section	.rodata
	.align 8
.LC172:
	.string	"%s: unknown instruction with %x opcode detected\n"
	.text
	.globl	decode_execute
	.type	decode_execute, @function
decode_execute:
.LFB229:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR ir[rip]
	mov	rdi, rax
	call	get_opcode
	mov	QWORD PTR opcode[rip], rax
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_IMM[rip]
	cmp	rdx, rax
	jne	.L845
	mov	eax, 0
	call	decode_i_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_ADDI[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L876
	mov	eax, 0
	call	print_addi
	mov	eax, 0
	call	println
	jmp	.L876
.L845:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_LD[rip]
	cmp	rdx, rax
	jne	.L849
	mov	eax, 0
	call	decode_i_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_LD[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L877
	mov	eax, 0
	call	print_ld
	mov	eax, 0
	call	println
	jmp	.L877
.L849:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_SD[rip]
	cmp	rdx, rax
	jne	.L851
	mov	eax, 0
	call	decode_s_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_SD[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L878
	mov	eax, 0
	call	print_sd
	mov	eax, 0
	call	println
	jmp	.L878
.L851:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_OP[rip]
	cmp	rdx, rax
	jne	.L853
	mov	eax, 0
	call	decode_r_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_ADD[rip]
	cmp	rdx, rax
	jne	.L854
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_ADD[rip]
	cmp	rdx, rax
	jne	.L855
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L879
	lea	rdi, .LC122[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L879
.L855:
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_SUB[rip]
	cmp	rdx, rax
	jne	.L857
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L880
	lea	rdi, .LC123[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L880
.L857:
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_MUL[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L881
	lea	rdi, .LC124[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L881
.L854:
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_DIVU[rip]
	cmp	rdx, rax
	jne	.L860
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_DIVU[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L882
	lea	rdi, .LC125[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L882
.L860:
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_REMU[rip]
	cmp	rdx, rax
	jne	.L862
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_REMU[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L883
	lea	rdi, .LC126[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L883
.L862:
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_SLTU[rip]
	cmp	rdx, rax
	jne	.L864
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_SLTU[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L884
	lea	rdi, .LC129[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L884
.L864:
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_XOR[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rdx, QWORD PTR funct7[rip]
	mov	rax, QWORD PTR F7_XOR[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L885
	lea	rdi, .LC127[rip]
	call	print_add_sub_mul_divu_remu_sltu
	mov	eax, 0
	call	println
	jmp	.L885
.L853:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_BRANCH[rip]
	cmp	rdx, rax
	jne	.L867
	mov	eax, 0
	call	decode_b_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_BEQ[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L886
	mov	eax, 0
	call	print_beq
	mov	eax, 0
	call	println
	jmp	.L886
.L867:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_JAL[rip]
	cmp	rdx, rax
	jne	.L869
	mov	eax, 0
	call	decode_j_format
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L887
	mov	eax, 0
	call	print_jal
	mov	eax, 0
	call	println
	jmp	.L887
.L869:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_JALR[rip]
	cmp	rdx, rax
	jne	.L871
	mov	eax, 0
	call	decode_i_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_JALR[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L888
	mov	eax, 0
	call	print_jalr
	mov	eax, 0
	call	println
	jmp	.L888
.L871:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_LUI[rip]
	cmp	rdx, rax
	jne	.L873
	mov	eax, 0
	call	decode_u_format
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L889
	mov	eax, 0
	call	print_lui
	mov	eax, 0
	call	println
	jmp	.L889
.L873:
	mov	rdx, QWORD PTR opcode[rip]
	mov	rax, QWORD PTR OP_SYSTEM[rip]
	cmp	rdx, rax
	jne	.L846
	mov	eax, 0
	call	decode_i_format
	mov	rdx, QWORD PTR funct3[rip]
	mov	rax, QWORD PTR F3_ECALL[rip]
	cmp	rdx, rax
	jne	.L846
	mov	rax, QWORD PTR disassemble[rip]
	test	rax, rax
	je	.L890
	mov	eax, 0
	call	print_ecall
	mov	eax, 0
	call	println
	jmp	.L890
.L846:
	mov	QWORD PTR output_fd[rip], 1
	mov	rax, QWORD PTR opcode[rip]
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC172[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_UNKNOWNINSTRUCTION[rip]
	mov	rdi, rax
	call	exit@PLT
	jmp	.L844
.L876:
	nop
	jmp	.L844
.L877:
	nop
	jmp	.L844
.L878:
	nop
	jmp	.L844
.L879:
	nop
	jmp	.L844
.L880:
	nop
	jmp	.L844
.L881:
	nop
	jmp	.L844
.L882:
	nop
	jmp	.L844
.L883:
	nop
	jmp	.L844
.L884:
	nop
	jmp	.L844
.L885:
	nop
	jmp	.L844
.L886:
	nop
	jmp	.L844
.L887:
	nop
	jmp	.L844
.L888:
	nop
	jmp	.L844
.L889:
	nop
	jmp	.L844
.L890:
	nop
.L844:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE229:
	.size	decode_execute, .-decode_execute
	.section	.rodata
	.align 8
.LC173:
	.string	"%s: nothing to disassemble to output file %s\n"
	.align 8
.LC174:
	.string	"%s: could not create assembly output file %s\n"
	.align 8
.LC175:
	.string	"%s: %d characters of assembly with %d instructions and %d bytes of data written into %s\n"
	.text
	.globl	selfie_disassemble
	.type	selfie_disassemble, @function
selfie_disassemble:
.LFB230:
	.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	eax, 0
	call	get_argument
	mov	QWORD PTR assembly_name[rip], rax
	mov	rax, QWORD PTR code_length[rip]
	test	rax, rax
	jne	.L892
	mov	rdx, QWORD PTR assembly_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC173[rip]
	call	printf2
	jmp	.L891
.L892:
	mov	rax, QWORD PTR assembly_name[rip]
	mov	rdi, rax
	call	open_write_only
	mov	QWORD PTR assembly_fd[rip], rax
	mov	rax, QWORD PTR assembly_fd[rip]
	mov	esi, 0
	mov	rdi, rax
	call	signed_less_than
	test	rax, rax
	je	.L894
	mov	rdx, QWORD PTR assembly_name[rip]
	mov	rax, QWORD PTR selfie_name[rip]
	mov	rsi, rax
	lea	rdi, .LC174[rip]
	call	printf2
	mov	rax, QWORD PTR EXITCODE_IOERROR[rip]
	mov	rdi, rax
	call	exit@PLT
.L894:
	mov	rax, QWORD PTR assembly_name[rip]
	mov	QWORD PTR output_name[rip], rax
	mov	rax, QWORD PTR assembly_fd[rip]
	mov	QWORD PTR output_fd[rip], rax
	mov	eax, 0
	call	reset_library
	mov	eax, 0
	call	reset_interpreter
	mov	QWORD PTR disassemble[rip], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR disassemble_verbose[rip], rax
	jmp	.L895
.L896:
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	load_instruction
	mov	QWORD PTR ir[rip], rax
	mov	eax, 0
	call	decode_execute
	mov	rdx, QWORD PTR pc[rip]
	mov	rax, QWORD PTR INSTRUCTIONSIZE[rip]
	add	rax, rdx
	mov	QWORD PTR pc[rip], rax
.L895:
	mov	rdx, QWORD PTR pc[rip]
	mov	rax, QWORD PTR code_length[rip]
	cmp	rdx, rax
	jb	.L896
	jmp	.L897
.L898:
	mov	rax, QWORD PTR pc[rip]
	mov	rdi, rax
	call	load_data
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	print_data
	mov	eax, 0
	call	println
	mov	rdx, QWORD PTR pc[rip]
	mov	rax, QWORD PTR REGISTERSIZE[rip]
	add	rax, rdx
	mov	QWORD PTR pc[rip], rax
.L897:
	mov	rdx, QWORD PTR pc[rip]
	mov	rax, QWORD PTR binary_length[rip]
	cmp	rdx, rax
	jb	.L898
	mov	QWORD PTR disassemble_verbose[rip], 0
	mov	QWORD PTR disassemble[rip], 0
	mov	QWORD PTR output_name[rip], 0
	mov	QWORD PTR output_fd[rip], 1
	mov	rcx, QWORD PTR assembly_name[rip]
	mov	rax, QWORD PTR binary_length[rip]
	mov	rdx, QWORD PTR code_length[rip]
	sub	rax, rdx
	mov	rdi, rax
	mov	rax, QWORD PTR code_length[rip]
	mov	rsi, QWORD PTR INSTRUCTIONSIZE[rip]
	mov	edx, 0
	div	rsi
	mov	rsi, rax
	mov	rax, QWORD PTR number_of_written_characters[rip]
	mov	rdx, rax
	mov	rax, QWORD PTR selfie_name[rip]
	mov	r9, rcx
	mov	r8, rdi
	mov	rcx, rsi
	mov	rsi, rax
	lea	rdi, .LC175[rip]
	call	printf5
.L891:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE230:
	.size	selfie_disassemble, .-selfie_disassemble
	.globl	number_of_remaining_arguments
	.type	number_of_remaining_arguments, @function
number_of_remaining_arguments:
.LFB231:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR selfie_argc[rip]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE231:
	.size	number_of_remaining_arguments, .-number_of_remaining_arguments
	.globl	remaining_arguments
	.type	remaining_arguments, @function
remaining_arguments:
.LFB232:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR selfie_argv[rip]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE232:
	.size	remaining_arguments, .-remaining_arguments
	.globl	peek_argument
	.type	peek_argument, @function
peek_argument:
.LFB233:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, 0
	call	number_of_remaining_arguments
	test	rax, rax
	je	.L904
	mov	rax, QWORD PTR selfie_argv[rip]
	mov	rax, QWORD PTR [rax]
	jmp	.L905
.L904:
	mov	eax, 0
.L905:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE233:
	.size	peek_argument, .-peek_argument
	.globl	get_argument
	.type	get_argument, @function
get_argument:
.LFB234:
	.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	eax, 0
	call	peek_argument
	mov	QWORD PTR -8[rbp], rax
	mov	eax, 0
	call	number_of_remaining_arguments
	test	rax, rax
	je	.L907
	mov	rax, QWORD PTR selfie_argc[rip]
	sub	rax, 1
	mov	QWORD PTR selfie_argc[rip], rax
	mov	rax, QWORD PTR selfie_argv[rip]
	add	rax, 8
	mov	QWORD PTR selfie_argv[rip], rax
.L907:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE234:
	.size	get_argument, .-get_argument
	.globl	set_argument
	.type	set_argument, @function
set_argument:
.LFB235:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR selfie_argv[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE235:
	.size	set_argument, .-set_argument
	.section	.rodata
	.align 8
.LC176:
	.string	"( -m | -d | -r | -n | -y | -min | -mob ) 0-64 ..."
	.align 8
.LC177:
	.string	"-c { source } | -o binary | [ -s | -S ] assembly | -l binary | -sat dimacs"
	.align 8
.LC178:
	.string	"%s: usage: selfie { %s } [ %s ]\n"
	.text
	.globl	print_usage
	.type	print_usage, @function
print_usage:
.LFB236:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR selfie_name[rip]
	lea	rcx, .LC176[rip]
	lea	rdx, .LC177[rip]
	mov	rsi, rax
	lea	rdi, .LC178[rip]
	call	printf3
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE236:
	.size	print_usage, .-print_usage
	.section	.rodata
.LC179:
	.string	"-c"
.LC180:
	.string	"-o"
.LC181:
	.string	"-s"
.LC182:
	.string	"-S"
	.text
	.globl	selfie
	.type	selfie, @function
selfie:
.LFB237:
	.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	eax, 0
	call	number_of_remaining_arguments
	test	rax, rax
	jne	.L912
	mov	eax, 0
	call	print_usage
	jmp	.L913
.L912:
	mov	eax, 0
	call	init_scanner
	mov	eax, 0
	call	init_register
	jmp	.L914
.L921:
	mov	eax, 0
	call	get_argument
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC179[rip]
	mov	rdi, rax
	call	string_compare
	test	rax, rax
	je	.L915
	mov	eax, 0
	call	selfie_compile
	jmp	.L914
.L915:
	mov	eax, 0
	call	number_of_remaining_arguments
	test	rax, rax
	jne	.L916
	mov	eax, 0
	call	print_usage
	mov	rax, QWORD PTR EXITCODE_BADARGUMENTS[rip]
	jmp	.L917
.L916:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC180[rip]
	mov	rdi, rax
	call	string_compare
	test	rax, rax
	je	.L918
	mov	eax, 0
	call	selfie_output
	jmp	.L914
.L918:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC181[rip]
	mov	rdi, rax
	call	string_compare
	test	rax, rax
	je	.L919
	mov	edi, 0
	call	selfie_disassemble
	jmp	.L914
.L919:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC182[rip]
	mov	rdi, rax
	call	string_compare
	test	rax, rax
	je	.L920
	mov	edi, 1
	call	selfie_disassemble
	jmp	.L914
.L920:
	mov	eax, 0
	call	print_usage
	mov	rax, QWORD PTR EXITCODE_BADARGUMENTS[rip]
	jmp	.L917
.L914:
	mov	eax, 0
	call	number_of_remaining_arguments
	test	rax, rax
	jne	.L921
.L913:
	mov	rax, QWORD PTR EXITCODE_NOERROR[rip]
.L917:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE237:
	.size	selfie, .-selfie
	.globl	main
	.type	main, @function
main:
.LFB238:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	init_selfie
	mov	eax, 0
	call	init_library
	mov	eax, 0
	call	selfie
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE238:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"211081315.c"
	.text
	.global	CHAR_EOF
	.data
	.align	3
	.type	CHAR_EOF, %object
	.size	CHAR_EOF, 8
CHAR_EOF:
	.word	-1
	.word	-1
	.global	CHAR_BACKSPACE
	.align	3
	.type	CHAR_BACKSPACE, %object
	.size	CHAR_BACKSPACE, 8
CHAR_BACKSPACE:
	.word	8
	.word	0
	.global	CHAR_TAB
	.align	3
	.type	CHAR_TAB, %object
	.size	CHAR_TAB, 8
CHAR_TAB:
	.word	9
	.word	0
	.global	CHAR_LF
	.align	3
	.type	CHAR_LF, %object
	.size	CHAR_LF, 8
CHAR_LF:
	.word	10
	.word	0
	.global	CHAR_CR
	.align	3
	.type	CHAR_CR, %object
	.size	CHAR_CR, 8
CHAR_CR:
	.word	13
	.word	0
	.global	CHAR_SPACE
	.align	3
	.type	CHAR_SPACE, %object
	.size	CHAR_SPACE, 8
CHAR_SPACE:
	.word	32
	.word	0
	.global	CHAR_SEMICOLON
	.align	3
	.type	CHAR_SEMICOLON, %object
	.size	CHAR_SEMICOLON, 8
CHAR_SEMICOLON:
	.word	59
	.word	0
	.global	CHAR_PLUS
	.align	3
	.type	CHAR_PLUS, %object
	.size	CHAR_PLUS, 8
CHAR_PLUS:
	.word	43
	.word	0
	.global	CHAR_DASH
	.align	3
	.type	CHAR_DASH, %object
	.size	CHAR_DASH, 8
CHAR_DASH:
	.word	45
	.word	0
	.global	CHAR_ASTERISK
	.align	3
	.type	CHAR_ASTERISK, %object
	.size	CHAR_ASTERISK, 8
CHAR_ASTERISK:
	.word	42
	.word	0
	.global	CHAR_SLASH
	.align	3
	.type	CHAR_SLASH, %object
	.size	CHAR_SLASH, 8
CHAR_SLASH:
	.word	47
	.word	0
	.global	CHAR_UNDERSCORE
	.align	3
	.type	CHAR_UNDERSCORE, %object
	.size	CHAR_UNDERSCORE, 8
CHAR_UNDERSCORE:
	.word	95
	.word	0
	.global	CHAR_EQUAL
	.align	3
	.type	CHAR_EQUAL, %object
	.size	CHAR_EQUAL, 8
CHAR_EQUAL:
	.word	61
	.word	0
	.global	CHAR_LPARENTHESIS
	.align	3
	.type	CHAR_LPARENTHESIS, %object
	.size	CHAR_LPARENTHESIS, 8
CHAR_LPARENTHESIS:
	.word	40
	.word	0
	.global	CHAR_RPARENTHESIS
	.align	3
	.type	CHAR_RPARENTHESIS, %object
	.size	CHAR_RPARENTHESIS, 8
CHAR_RPARENTHESIS:
	.word	41
	.word	0
	.global	CHAR_LBRACE
	.align	3
	.type	CHAR_LBRACE, %object
	.size	CHAR_LBRACE, 8
CHAR_LBRACE:
	.word	123
	.word	0
	.global	CHAR_RBRACE
	.align	3
	.type	CHAR_RBRACE, %object
	.size	CHAR_RBRACE, 8
CHAR_RBRACE:
	.word	125
	.word	0
	.global	CHAR_COMMA
	.align	3
	.type	CHAR_COMMA, %object
	.size	CHAR_COMMA, 8
CHAR_COMMA:
	.word	44
	.word	0
	.global	CHAR_LT
	.align	3
	.type	CHAR_LT, %object
	.size	CHAR_LT, 8
CHAR_LT:
	.word	60
	.word	0
	.global	CHAR_GT
	.align	3
	.type	CHAR_GT, %object
	.size	CHAR_GT, 8
CHAR_GT:
	.word	62
	.word	0
	.global	CHAR_EXCLAMATION
	.align	3
	.type	CHAR_EXCLAMATION, %object
	.size	CHAR_EXCLAMATION, 8
CHAR_EXCLAMATION:
	.word	33
	.word	0
	.global	CHAR_PERCENTAGE
	.align	3
	.type	CHAR_PERCENTAGE, %object
	.size	CHAR_PERCENTAGE, 8
CHAR_PERCENTAGE:
	.word	37
	.word	0
	.global	CHAR_SINGLEQUOTE
	.align	3
	.type	CHAR_SINGLEQUOTE, %object
	.size	CHAR_SINGLEQUOTE, 8
CHAR_SINGLEQUOTE:
	.word	39
	.word	0
	.global	CHAR_DOUBLEQUOTE
	.align	3
	.type	CHAR_DOUBLEQUOTE, %object
	.size	CHAR_DOUBLEQUOTE, 8
CHAR_DOUBLEQUOTE:
	.word	34
	.word	0
	.global	CHAR_BACKSLASH
	.align	3
	.type	CHAR_BACKSLASH, %object
	.size	CHAR_BACKSLASH, 8
CHAR_BACKSLASH:
	.word	92
	.word	0
	.global	CPUBITWIDTH
	.align	3
	.type	CPUBITWIDTH, %object
	.size	CPUBITWIDTH, 8
CPUBITWIDTH:
	.word	64
	.word	0
	.global	SIZEOFUINT64
	.align	3
	.type	SIZEOFUINT64, %object
	.size	SIZEOFUINT64, 8
SIZEOFUINT64:
	.word	8
	.word	0
	.global	SIZEOFUINT64STAR
	.align	3
	.type	SIZEOFUINT64STAR, %object
	.size	SIZEOFUINT64STAR, 8
SIZEOFUINT64STAR:
	.word	8
	.word	0
	.comm	power_of_two_table,4,4
	.comm	INT64_MAX,8,8
	.comm	INT64_MIN,8,8
	.comm	UINT64_MAX,8,8
	.global	MAX_FILENAME_LENGTH
	.align	3
	.type	MAX_FILENAME_LENGTH, %object
	.size	MAX_FILENAME_LENGTH, 8
MAX_FILENAME_LENGTH:
	.word	128
	.word	0
	.comm	character_buffer,4,4
	.comm	integer_buffer,4,4
	.comm	filename_buffer,4,4
	.comm	binary_buffer,4,4
	.global	O_RDONLY
	.align	3
	.type	O_RDONLY, %object
	.size	O_RDONLY, 8
O_RDONLY:
	.word	32768
	.word	0
	.global	MAC_O_CREAT_TRUNC_WRONLY
	.align	3
	.type	MAC_O_CREAT_TRUNC_WRONLY, %object
	.size	MAC_O_CREAT_TRUNC_WRONLY, 8
MAC_O_CREAT_TRUNC_WRONLY:
	.word	1537
	.word	0
	.global	LINUX_O_CREAT_TRUNC_WRONLY
	.align	3
	.type	LINUX_O_CREAT_TRUNC_WRONLY, %object
	.size	LINUX_O_CREAT_TRUNC_WRONLY, 8
LINUX_O_CREAT_TRUNC_WRONLY:
	.word	577
	.word	0
	.global	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY
	.align	3
	.type	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY, %object
	.size	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY, 8
WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY:
	.word	33537
	.word	0
	.global	S_IRUSR_IWUSR_IRGRP_IROTH
	.align	3
	.type	S_IRUSR_IWUSR_IRGRP_IROTH, %object
	.size	S_IRUSR_IWUSR_IRGRP_IROTH, 8
S_IRUSR_IWUSR_IRGRP_IROTH:
	.word	420
	.word	0
	.global	number_of_written_characters
	.bss
	.align	3
	.type	number_of_written_characters, %object
	.size	number_of_written_characters, 8
number_of_written_characters:
	.space	8
	.global	output_name
	.align	2
	.type	output_name, %object
	.size	output_name, 4
output_name:
	.space	4
	.global	output_fd
	.data
	.align	3
	.type	output_fd, %object
	.size	output_fd, 8
output_fd:
	.word	1
	.word	0
	.text
	.align	2
	.global	init_library
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_library, %function
init_library:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #40
	ldr	r3, .L4
	ldmia	r3, {r4-r5}
	ldr	r3, .L4+4
	ldmia	r3, {r0-r1}
	mul	r2, r0, r5
	mul	r3, r4, r1
	add	ip, r2, r3
	umull	r2, r3, r4, r0
	add	r1, ip, r3
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L4+8
	str	r3, [r2]
	ldr	r3, .L4+8
	ldr	r1, [r3]
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L2
.L3:
	ldr	r3, .L4+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	ldr	r1, .L4+8
	ldr	r0, [r1]
	ldr	r1, [fp, #-36]
	lsl	r1, r1, #3
	add	r1, r0, r1
	adds	r0, r2, r2
	str	r0, [fp, #-60]
	adc	r3, r3, r3
	str	r3, [fp, #-56]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-68]
	adc	r3, r3, #0
	str	r3, [fp, #-64]
	sub	r4, fp, #68
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
.L2:
	ldr	r3, .L4
	ldmia	r3, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcc	.L3
	ldr	r1, .L4+12
	mvn	r2, #0
	mvn	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L4
	ldmia	r3, {r2-r3}
	subs	r1, r2, #1
	str	r1, [fp, #-44]
	sbc	r3, r3, #0
	str	r3, [fp, #-40]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	subs	r8, r2, #1
	sbc	r9, r3, #0
	ldr	r3, .L4+16
	stm	r3, {r8-r9}
	ldr	r3, .L4+16
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	ldr	r3, .L4+20
	stm	r3, {r6-r7}
	ldr	r3, .L4+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L4+24
	str	r3, [r2]
	ldr	r3, .L4+24
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L4
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-52]
	adc	r3, r3, #0
	str	r3, [fp, #-48]
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L4+28
	str	r3, [r2]
	ldr	r3, .L4+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L4+36
	str	r3, [r2]
	ldr	r3, .L4+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L4+40
	str	r3, [r2]
	ldr	r3, .L4+40
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L5:
	.align	2
.L4:
	.word	CPUBITWIDTH
	.word	SIZEOFUINT64
	.word	power_of_two_table
	.word	UINT64_MAX
	.word	INT64_MAX
	.word	INT64_MIN
	.word	character_buffer
	.word	integer_buffer
	.word	MAX_FILENAME_LENGTH
	.word	filename_buffer
	.word	binary_buffer
	.size	init_library, .-init_library
	.align	2
	.global	reset_library
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_library, %function
reset_library:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r1, .L7
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L8:
	.align	2
.L7:
	.word	number_of_written_characters
	.size	reset_library, .-reset_library
	.global	SYM_EOF
	.data
	.align	3
	.type	SYM_EOF, %object
	.size	SYM_EOF, 8
SYM_EOF:
	.word	-1
	.word	-1
	.global	SYM_IDENTIFIER
	.bss
	.align	3
	.type	SYM_IDENTIFIER, %object
	.size	SYM_IDENTIFIER, 8
SYM_IDENTIFIER:
	.space	8
	.global	SYM_INTEGER
	.data
	.align	3
	.type	SYM_INTEGER, %object
	.size	SYM_INTEGER, 8
SYM_INTEGER:
	.word	1
	.word	0
	.global	SYM_VOID
	.align	3
	.type	SYM_VOID, %object
	.size	SYM_VOID, 8
SYM_VOID:
	.word	2
	.word	0
	.global	SYM_UINT64
	.align	3
	.type	SYM_UINT64, %object
	.size	SYM_UINT64, 8
SYM_UINT64:
	.word	3
	.word	0
	.global	SYM_SEMICOLON
	.align	3
	.type	SYM_SEMICOLON, %object
	.size	SYM_SEMICOLON, 8
SYM_SEMICOLON:
	.word	4
	.word	0
	.global	SYM_IF
	.align	3
	.type	SYM_IF, %object
	.size	SYM_IF, 8
SYM_IF:
	.word	5
	.word	0
	.global	SYM_ELSE
	.align	3
	.type	SYM_ELSE, %object
	.size	SYM_ELSE, 8
SYM_ELSE:
	.word	6
	.word	0
	.global	SYM_PLUS
	.align	3
	.type	SYM_PLUS, %object
	.size	SYM_PLUS, 8
SYM_PLUS:
	.word	7
	.word	0
	.global	SYM_MINUS
	.align	3
	.type	SYM_MINUS, %object
	.size	SYM_MINUS, 8
SYM_MINUS:
	.word	8
	.word	0
	.global	SYM_ASTERISK
	.align	3
	.type	SYM_ASTERISK, %object
	.size	SYM_ASTERISK, 8
SYM_ASTERISK:
	.word	9
	.word	0
	.global	SYM_DIV
	.align	3
	.type	SYM_DIV, %object
	.size	SYM_DIV, 8
SYM_DIV:
	.word	10
	.word	0
	.global	SYM_EQUALITY
	.align	3
	.type	SYM_EQUALITY, %object
	.size	SYM_EQUALITY, 8
SYM_EQUALITY:
	.word	11
	.word	0
	.global	SYM_ASSIGN
	.align	3
	.type	SYM_ASSIGN, %object
	.size	SYM_ASSIGN, 8
SYM_ASSIGN:
	.word	12
	.word	0
	.global	SYM_LPARENTHESIS
	.align	3
	.type	SYM_LPARENTHESIS, %object
	.size	SYM_LPARENTHESIS, 8
SYM_LPARENTHESIS:
	.word	13
	.word	0
	.global	SYM_RPARENTHESIS
	.align	3
	.type	SYM_RPARENTHESIS, %object
	.size	SYM_RPARENTHESIS, 8
SYM_RPARENTHESIS:
	.word	14
	.word	0
	.global	SYM_LBRACE
	.align	3
	.type	SYM_LBRACE, %object
	.size	SYM_LBRACE, 8
SYM_LBRACE:
	.word	15
	.word	0
	.global	SYM_RBRACE
	.align	3
	.type	SYM_RBRACE, %object
	.size	SYM_RBRACE, 8
SYM_RBRACE:
	.word	16
	.word	0
	.global	SYM_WHILE
	.align	3
	.type	SYM_WHILE, %object
	.size	SYM_WHILE, 8
SYM_WHILE:
	.word	17
	.word	0
	.global	SYM_RETURN
	.align	3
	.type	SYM_RETURN, %object
	.size	SYM_RETURN, 8
SYM_RETURN:
	.word	18
	.word	0
	.global	SYM_COMMA
	.align	3
	.type	SYM_COMMA, %object
	.size	SYM_COMMA, 8
SYM_COMMA:
	.word	19
	.word	0
	.global	SYM_LT
	.align	3
	.type	SYM_LT, %object
	.size	SYM_LT, 8
SYM_LT:
	.word	20
	.word	0
	.global	SYM_LEQ
	.align	3
	.type	SYM_LEQ, %object
	.size	SYM_LEQ, 8
SYM_LEQ:
	.word	21
	.word	0
	.global	SYM_GT
	.align	3
	.type	SYM_GT, %object
	.size	SYM_GT, 8
SYM_GT:
	.word	22
	.word	0
	.global	SYM_GEQ
	.align	3
	.type	SYM_GEQ, %object
	.size	SYM_GEQ, 8
SYM_GEQ:
	.word	23
	.word	0
	.global	SYM_NOTEQ
	.align	3
	.type	SYM_NOTEQ, %object
	.size	SYM_NOTEQ, 8
SYM_NOTEQ:
	.word	24
	.word	0
	.global	SYM_MOD
	.align	3
	.type	SYM_MOD, %object
	.size	SYM_MOD, 8
SYM_MOD:
	.word	25
	.word	0
	.global	SYM_CHARACTER
	.align	3
	.type	SYM_CHARACTER, %object
	.size	SYM_CHARACTER, 8
SYM_CHARACTER:
	.word	26
	.word	0
	.global	SYM_STRING
	.align	3
	.type	SYM_STRING, %object
	.size	SYM_STRING, 8
SYM_STRING:
	.word	27
	.word	0
	.comm	SYMBOLS,4,4
	.global	MAX_IDENTIFIER_LENGTH
	.align	3
	.type	MAX_IDENTIFIER_LENGTH, %object
	.size	MAX_IDENTIFIER_LENGTH, 8
MAX_IDENTIFIER_LENGTH:
	.word	64
	.word	0
	.global	MAX_INTEGER_LENGTH
	.align	3
	.type	MAX_INTEGER_LENGTH, %object
	.size	MAX_INTEGER_LENGTH, 8
MAX_INTEGER_LENGTH:
	.word	20
	.word	0
	.global	MAX_STRING_LENGTH
	.align	3
	.type	MAX_STRING_LENGTH, %object
	.size	MAX_STRING_LENGTH, 8
MAX_STRING_LENGTH:
	.word	128
	.word	0
	.global	line_number
	.align	3
	.type	line_number, %object
	.size	line_number, 8
line_number:
	.word	1
	.word	0
	.global	identifier
	.bss
	.align	2
	.type	identifier, %object
	.size	identifier, 4
identifier:
	.space	4
	.global	integer
	.align	2
	.type	integer, %object
	.size	integer, 4
integer:
	.space	4
	.global	string
	.align	2
	.type	string, %object
	.size	string, 4
string:
	.space	4
	.global	literal
	.align	3
	.type	literal, %object
	.size	literal, 8
literal:
	.space	8
	.global	integer_is_signed
	.align	3
	.type	integer_is_signed, %object
	.size	integer_is_signed, 8
integer_is_signed:
	.space	8
	.comm	character,8,8
	.global	number_of_read_characters
	.align	3
	.type	number_of_read_characters, %object
	.size	number_of_read_characters, 8
number_of_read_characters:
	.space	8
	.comm	symbol,8,8
	.global	number_of_ignored_characters
	.align	3
	.type	number_of_ignored_characters, %object
	.size	number_of_ignored_characters, 8
number_of_ignored_characters:
	.space	8
	.global	number_of_comments
	.align	3
	.type	number_of_comments, %object
	.size	number_of_comments, 8
number_of_comments:
	.space	8
	.global	number_of_scanned_symbols
	.align	3
	.type	number_of_scanned_symbols, %object
	.size	number_of_scanned_symbols, 8
number_of_scanned_symbols:
	.space	8
	.global	source_name
	.align	2
	.type	source_name, %object
	.size	source_name, 4
source_name:
	.space	4
	.global	source_fd
	.align	3
	.type	source_fd, %object
	.size	source_fd, 8
source_fd:
	.space	8
	.section	.rodata
	.align	2
.LC0:
	.ascii	"identifier\000"
	.align	2
.LC1:
	.ascii	"integer\000"
	.align	2
.LC2:
	.ascii	"void\000"
	.align	2
.LC3:
	.ascii	"uint64_t\000"
	.align	2
.LC4:
	.ascii	";\000"
	.align	2
.LC5:
	.ascii	"if\000"
	.align	2
.LC6:
	.ascii	"else\000"
	.align	2
.LC7:
	.ascii	"+\000"
	.align	2
.LC8:
	.ascii	"-\000"
	.align	2
.LC9:
	.ascii	"*\000"
	.align	2
.LC10:
	.ascii	"/\000"
	.align	2
.LC11:
	.ascii	"==\000"
	.align	2
.LC12:
	.ascii	"=\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	"while\000"
	.align	2
.LC18:
	.ascii	"return\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	"character\000"
	.align	2
.LC27:
	.ascii	"string\000"
	.text
	.align	2
	.global	init_scanner
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_scanner, %function
init_scanner:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r1, .L10
	ldmia	r1, {r0-r1}
	adds	r2, r0, #1
	adc	r3, r1, #0
	ldr	r1, .L10+4
	ldmia	r1, {r0-r1}
	mul	lr, r0, r3
	mul	ip, r2, r1
	add	ip, lr, ip
	umull	r4, r5, r2, r0
	add	r3, ip, r5
	mov	r5, r3
	mov	r0, r4
	mov	r1, r5
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L10+8
	str	r3, [r2]
	ldr	r0, .L10+12
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+16
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+20
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+24
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+28
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+32
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+36
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+40
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+44
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+48
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+52
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+56
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+60
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+64
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+68
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+72
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+76
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+80
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+84
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+88
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+92
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+96
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+100
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+104
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+108
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+112
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+116
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+120
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+124
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+128
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+132
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+136
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+140
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+144
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+148
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+152
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+156
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+160
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+164
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+168
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+172
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+176
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+180
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+184
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+188
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+192
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+196
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+200
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+204
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+208
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+212
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+216
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+220
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10+224
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L10+228
	ldr	r3, .L10+8
	ldr	r1, [r3]
	ldr	r3, .L10
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r3, .L10+232
	ldmia	r3, {r2-r3}
	ldr	r1, .L10+236
	stm	r1, {r2-r3}
	ldr	r3, .L10+240
	ldmia	r3, {r2-r3}
	ldr	r1, .L10+244
	stm	r1, {r2-r3}
	nop
	pop	{r4, r5, fp, pc}
.L11:
	.align	2
.L10:
	.word	SYM_STRING
	.word	SIZEOFUINT64STAR
	.word	SYMBOLS
	.word	.LC0
	.word	SYM_IDENTIFIER
	.word	.LC1
	.word	SYM_INTEGER
	.word	.LC2
	.word	SYM_VOID
	.word	.LC3
	.word	SYM_UINT64
	.word	.LC4
	.word	SYM_SEMICOLON
	.word	.LC5
	.word	SYM_IF
	.word	.LC6
	.word	SYM_ELSE
	.word	.LC7
	.word	SYM_PLUS
	.word	.LC8
	.word	SYM_MINUS
	.word	.LC9
	.word	SYM_ASTERISK
	.word	.LC10
	.word	SYM_DIV
	.word	.LC11
	.word	SYM_EQUALITY
	.word	.LC12
	.word	SYM_ASSIGN
	.word	.LC13
	.word	SYM_LPARENTHESIS
	.word	.LC14
	.word	SYM_RPARENTHESIS
	.word	.LC15
	.word	SYM_LBRACE
	.word	.LC16
	.word	SYM_RBRACE
	.word	.LC17
	.word	SYM_WHILE
	.word	.LC18
	.word	SYM_RETURN
	.word	.LC19
	.word	SYM_COMMA
	.word	.LC20
	.word	SYM_LT
	.word	.LC21
	.word	SYM_LEQ
	.word	.LC22
	.word	SYM_GT
	.word	.LC23
	.word	SYM_GEQ
	.word	.LC24
	.word	SYM_NOTEQ
	.word	.LC25
	.word	SYM_MOD
	.word	.LC26
	.word	SYM_CHARACTER
	.word	.LC27
	.word	CHAR_EOF
	.word	character
	.word	SYM_EOF
	.word	symbol
	.size	init_scanner, .-init_scanner
	.align	2
	.global	reset_scanner
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_scanner, %function
reset_scanner:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L13
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L13+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	bl	get_character
	ldr	r1, .L13+8
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L13+12
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L13+16
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L14:
	.align	2
.L13:
	.word	line_number
	.word	number_of_read_characters
	.word	number_of_ignored_characters
	.word	number_of_comments
	.word	number_of_scanned_symbols
	.size	reset_scanner, .-reset_scanner
	.align	2
	.global	get_next_entry
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_next_entry, %function
get_next_entry:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_next_entry, .-get_next_entry
	.align	2
	.global	get_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_string, %function
get_string:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_string, .-get_string
	.align	2
	.global	get_line_number
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_line_number, %function
get_line_number:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_line_number, .-get_line_number
	.align	2
	.global	get_class
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_class, %function
get_class:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_class, .-get_class
	.align	2
	.global	get_type
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_type, %function
get_type:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_type, .-get_type
	.align	2
	.global	get_value
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_value, %function
get_value:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #40
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_value, .-get_value
	.align	2
	.global	get_address
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_address, %function
get_address:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #48
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_address, .-get_address
	.align	2
	.global	get_scope
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_scope, %function
get_scope:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #56
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_scope, .-get_scope
	.align	2
	.global	set_next_entry
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_next_entry, %function
set_next_entry:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	mov	r2, r3
	asr	r3, r2, #31
	ldr	r1, [fp, #-8]
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_next_entry, .-set_next_entry
	.align	2
	.global	set_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_string, %function
set_string:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	add	r1, r2, #8
	mov	r2, r3
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_string, .-set_string
	.align	2
	.global	set_line_number
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_line_number, %function
set_line_number:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #16
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_line_number, .-set_line_number
	.align	2
	.global	set_class
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_class, %function
set_class:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #24
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_class, .-set_class
	.align	2
	.global	set_type
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_type, %function
set_type:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #32
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_type, .-set_type
	.align	2
	.global	set_value
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_value, %function
set_value:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #40
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_value, .-set_value
	.align	2
	.global	set_address
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_address, %function
set_address:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #48
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_address, .-set_address
	.align	2
	.global	set_scope
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_scope, %function
set_scope:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #56
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_scope, .-set_scope
	.global	VARIABLE
	.data
	.align	3
	.type	VARIABLE, %object
	.size	VARIABLE, 8
VARIABLE:
	.word	1
	.word	0
	.global	BIGINT
	.align	3
	.type	BIGINT, %object
	.size	BIGINT, 8
BIGINT:
	.word	2
	.word	0
	.global	STRING
	.align	3
	.type	STRING, %object
	.size	STRING, 8
STRING:
	.word	3
	.word	0
	.global	PROCEDURE
	.align	3
	.type	PROCEDURE, %object
	.size	PROCEDURE, 8
PROCEDURE:
	.word	4
	.word	0
	.global	UINT64_T
	.align	3
	.type	UINT64_T, %object
	.size	UINT64_T, 8
UINT64_T:
	.word	1
	.word	0
	.global	UINT64STAR_T
	.align	3
	.type	UINT64STAR_T, %object
	.size	UINT64STAR_T, 8
UINT64STAR_T:
	.word	2
	.word	0
	.global	VOID_T
	.align	3
	.type	VOID_T, %object
	.size	VOID_T, 8
VOID_T:
	.word	3
	.word	0
	.global	GLOBAL_TABLE
	.align	3
	.type	GLOBAL_TABLE, %object
	.size	GLOBAL_TABLE, 8
GLOBAL_TABLE:
	.word	1
	.word	0
	.global	LOCAL_TABLE
	.align	3
	.type	LOCAL_TABLE, %object
	.size	LOCAL_TABLE, 8
LOCAL_TABLE:
	.word	2
	.word	0
	.global	LIBRARY_TABLE
	.align	3
	.type	LIBRARY_TABLE, %object
	.size	LIBRARY_TABLE, 8
LIBRARY_TABLE:
	.word	3
	.word	0
	.global	HASH_TABLE_SIZE
	.align	3
	.type	HASH_TABLE_SIZE, %object
	.size	HASH_TABLE_SIZE, 8
HASH_TABLE_SIZE:
	.word	1024
	.word	0
	.global	global_symbol_table
	.bss
	.align	2
	.type	global_symbol_table, %object
	.size	global_symbol_table, 4
global_symbol_table:
	.space	4
	.global	local_symbol_table
	.align	2
	.type	local_symbol_table, %object
	.size	local_symbol_table, 4
local_symbol_table:
	.space	4
	.global	library_symbol_table
	.align	2
	.type	library_symbol_table, %object
	.size	library_symbol_table, 4
library_symbol_table:
	.space	4
	.global	number_of_global_variables
	.align	3
	.type	number_of_global_variables, %object
	.size	number_of_global_variables, 8
number_of_global_variables:
	.space	8
	.global	number_of_procedures
	.align	3
	.type	number_of_procedures, %object
	.size	number_of_procedures, 8
number_of_procedures:
	.space	8
	.global	number_of_strings
	.align	3
	.type	number_of_strings, %object
	.size	number_of_strings, 8
number_of_strings:
	.space	8
	.global	number_of_searches
	.align	3
	.type	number_of_searches, %object
	.size	number_of_searches, 8
number_of_searches:
	.space	8
	.global	total_search_time
	.align	3
	.type	total_search_time, %object
	.size	total_search_time, 8
total_search_time:
	.space	8
	.text
	.align	2
	.global	reset_symbol_tables
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_symbol_tables, %function
reset_symbol_tables:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L40
	ldmia	r3, {r0-r1}
	ldr	r3, .L40+4
	ldmia	r3, {r2-r3}
	mul	lr, r2, r1
	mul	ip, r0, r3
	add	ip, lr, ip
	umull	r4, r5, r0, r2
	add	r3, ip, r5
	mov	r5, r3
	mov	r0, r4
	mov	r1, r5
	bl	zalloc
	mov	r3, r0
	ldr	r2, .L40+8
	str	r3, [r2]
	ldr	r3, .L40+12
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L40+16
	mov	r2, #0
	str	r2, [r3]
	ldr	r1, .L40+20
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L40+24
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L40+28
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L40+32
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L40+36
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	pop	{r4, r5, fp, pc}
.L41:
	.align	2
.L40:
	.word	HASH_TABLE_SIZE
	.word	SIZEOFUINT64STAR
	.word	global_symbol_table
	.word	local_symbol_table
	.word	library_symbol_table
	.word	number_of_global_variables
	.word	number_of_procedures
	.word	number_of_strings
	.word	number_of_searches
	.word	total_search_time
	.size	reset_symbol_tables, .-reset_symbol_tables
	.global	allocated_temporaries
	.bss
	.align	3
	.type	allocated_temporaries, %object
	.size	allocated_temporaries, 8
allocated_temporaries:
	.space	8
	.global	allocated_memory
	.align	3
	.type	allocated_memory, %object
	.size	allocated_memory, 8
allocated_memory:
	.space	8
	.global	return_branches
	.align	3
	.type	return_branches, %object
	.size	return_branches, 8
return_branches:
	.space	8
	.global	return_type
	.align	3
	.type	return_type, %object
	.size	return_type, 8
return_type:
	.space	8
	.global	number_of_calls
	.align	3
	.type	number_of_calls, %object
	.size	number_of_calls, 8
number_of_calls:
	.space	8
	.global	number_of_assignments
	.align	3
	.type	number_of_assignments, %object
	.size	number_of_assignments, 8
number_of_assignments:
	.space	8
	.global	number_of_while
	.align	3
	.type	number_of_while, %object
	.size	number_of_while, 8
number_of_while:
	.space	8
	.global	number_of_if
	.align	3
	.type	number_of_if, %object
	.size	number_of_if, 8
number_of_if:
	.space	8
	.global	number_of_return
	.align	3
	.type	number_of_return, %object
	.size	number_of_return, 8
number_of_return:
	.space	8
	.text
	.align	2
	.global	reset_parser
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_parser, %function
reset_parser:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L43
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L43+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L43+8
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L43+12
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L43+16
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	bl	get_symbol
	nop
	pop	{fp, pc}
.L44:
	.align	2
.L43:
	.word	number_of_calls
	.word	number_of_assignments
	.word	number_of_while
	.word	number_of_if
	.word	number_of_return
	.size	reset_parser, .-reset_parser
	.global	NUMBEROFREGISTERS
	.data
	.align	3
	.type	NUMBEROFREGISTERS, %object
	.size	NUMBEROFREGISTERS, 8
NUMBEROFREGISTERS:
	.word	32
	.word	0
	.global	NUMBEROFTEMPORARIES
	.align	3
	.type	NUMBEROFTEMPORARIES, %object
	.size	NUMBEROFTEMPORARIES, 8
NUMBEROFTEMPORARIES:
	.word	7
	.word	0
	.global	REG_ZR
	.bss
	.align	3
	.type	REG_ZR, %object
	.size	REG_ZR, 8
REG_ZR:
	.space	8
	.global	REG_RA
	.data
	.align	3
	.type	REG_RA, %object
	.size	REG_RA, 8
REG_RA:
	.word	1
	.word	0
	.global	REG_SP
	.align	3
	.type	REG_SP, %object
	.size	REG_SP, 8
REG_SP:
	.word	2
	.word	0
	.global	REG_GP
	.align	3
	.type	REG_GP, %object
	.size	REG_GP, 8
REG_GP:
	.word	3
	.word	0
	.global	REG_TP
	.align	3
	.type	REG_TP, %object
	.size	REG_TP, 8
REG_TP:
	.word	4
	.word	0
	.global	REG_T0
	.align	3
	.type	REG_T0, %object
	.size	REG_T0, 8
REG_T0:
	.word	5
	.word	0
	.global	REG_T1
	.align	3
	.type	REG_T1, %object
	.size	REG_T1, 8
REG_T1:
	.word	6
	.word	0
	.global	REG_T2
	.align	3
	.type	REG_T2, %object
	.size	REG_T2, 8
REG_T2:
	.word	7
	.word	0
	.global	REG_FP
	.align	3
	.type	REG_FP, %object
	.size	REG_FP, 8
REG_FP:
	.word	8
	.word	0
	.global	REG_S1
	.align	3
	.type	REG_S1, %object
	.size	REG_S1, 8
REG_S1:
	.word	9
	.word	0
	.global	REG_A0
	.align	3
	.type	REG_A0, %object
	.size	REG_A0, 8
REG_A0:
	.word	10
	.word	0
	.global	REG_A1
	.align	3
	.type	REG_A1, %object
	.size	REG_A1, 8
REG_A1:
	.word	11
	.word	0
	.global	REG_A2
	.align	3
	.type	REG_A2, %object
	.size	REG_A2, 8
REG_A2:
	.word	12
	.word	0
	.global	REG_A3
	.align	3
	.type	REG_A3, %object
	.size	REG_A3, 8
REG_A3:
	.word	13
	.word	0
	.global	REG_A4
	.align	3
	.type	REG_A4, %object
	.size	REG_A4, 8
REG_A4:
	.word	14
	.word	0
	.global	REG_A5
	.align	3
	.type	REG_A5, %object
	.size	REG_A5, 8
REG_A5:
	.word	15
	.word	0
	.global	REG_A6
	.align	3
	.type	REG_A6, %object
	.size	REG_A6, 8
REG_A6:
	.word	16
	.word	0
	.global	REG_A7
	.align	3
	.type	REG_A7, %object
	.size	REG_A7, 8
REG_A7:
	.word	17
	.word	0
	.global	REG_S2
	.align	3
	.type	REG_S2, %object
	.size	REG_S2, 8
REG_S2:
	.word	18
	.word	0
	.global	REG_S3
	.align	3
	.type	REG_S3, %object
	.size	REG_S3, 8
REG_S3:
	.word	19
	.word	0
	.global	REG_S4
	.align	3
	.type	REG_S4, %object
	.size	REG_S4, 8
REG_S4:
	.word	20
	.word	0
	.global	REG_S5
	.align	3
	.type	REG_S5, %object
	.size	REG_S5, 8
REG_S5:
	.word	21
	.word	0
	.global	REG_S6
	.align	3
	.type	REG_S6, %object
	.size	REG_S6, 8
REG_S6:
	.word	22
	.word	0
	.global	REG_S7
	.align	3
	.type	REG_S7, %object
	.size	REG_S7, 8
REG_S7:
	.word	23
	.word	0
	.global	REG_S8
	.align	3
	.type	REG_S8, %object
	.size	REG_S8, 8
REG_S8:
	.word	24
	.word	0
	.global	REG_S9
	.align	3
	.type	REG_S9, %object
	.size	REG_S9, 8
REG_S9:
	.word	25
	.word	0
	.global	REG_S10
	.align	3
	.type	REG_S10, %object
	.size	REG_S10, 8
REG_S10:
	.word	26
	.word	0
	.global	REG_S11
	.align	3
	.type	REG_S11, %object
	.size	REG_S11, 8
REG_S11:
	.word	27
	.word	0
	.global	REG_T3
	.align	3
	.type	REG_T3, %object
	.size	REG_T3, 8
REG_T3:
	.word	28
	.word	0
	.global	REG_T4
	.align	3
	.type	REG_T4, %object
	.size	REG_T4, 8
REG_T4:
	.word	29
	.word	0
	.global	REG_T5
	.align	3
	.type	REG_T5, %object
	.size	REG_T5, 8
REG_T5:
	.word	30
	.word	0
	.global	REG_T6
	.align	3
	.type	REG_T6, %object
	.size	REG_T6, 8
REG_T6:
	.word	31
	.word	0
	.comm	REGISTERS,4,4
	.section	.rodata
	.align	2
.LC28:
	.ascii	"$zero\000"
	.align	2
.LC29:
	.ascii	"$ra\000"
	.align	2
.LC30:
	.ascii	"$sp\000"
	.align	2
.LC31:
	.ascii	"$gp\000"
	.align	2
.LC32:
	.ascii	"$tp\000"
	.align	2
.LC33:
	.ascii	"$t0\000"
	.align	2
.LC34:
	.ascii	"$t1\000"
	.align	2
.LC35:
	.ascii	"$t2\000"
	.align	2
.LC36:
	.ascii	"$fp\000"
	.align	2
.LC37:
	.ascii	"$s1\000"
	.align	2
.LC38:
	.ascii	"$a0\000"
	.align	2
.LC39:
	.ascii	"$a1\000"
	.align	2
.LC40:
	.ascii	"$a2\000"
	.align	2
.LC41:
	.ascii	"$a3\000"
	.align	2
.LC42:
	.ascii	"$a4\000"
	.align	2
.LC43:
	.ascii	"$a5\000"
	.align	2
.LC44:
	.ascii	"$a6\000"
	.align	2
.LC45:
	.ascii	"$a7\000"
	.align	2
.LC46:
	.ascii	"$s2\000"
	.align	2
.LC47:
	.ascii	"$s3\000"
	.align	2
.LC48:
	.ascii	"$s4\000"
	.align	2
.LC49:
	.ascii	"$s5\000"
	.align	2
.LC50:
	.ascii	"$s6\000"
	.align	2
.LC51:
	.ascii	"$s7\000"
	.align	2
.LC52:
	.ascii	"$s8\000"
	.align	2
.LC53:
	.ascii	"$s9\000"
	.align	2
.LC54:
	.ascii	"$s10\000"
	.align	2
.LC55:
	.ascii	"$s11\000"
	.align	2
.LC56:
	.ascii	"$t3\000"
	.align	2
.LC57:
	.ascii	"$t4\000"
	.align	2
.LC58:
	.ascii	"$t5\000"
	.align	2
.LC59:
	.ascii	"$t6\000"
	.text
	.align	2
	.global	init_register
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_register, %function
init_register:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L46
	ldmia	r3, {r0-r1}
	ldr	r3, .L46+4
	ldmia	r3, {r2-r3}
	mul	lr, r2, r1
	mul	ip, r0, r3
	add	ip, lr, ip
	umull	r4, r5, r0, r2
	add	r3, ip, r5
	mov	r5, r3
	mov	r0, r4
	mov	r1, r5
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L46+8
	str	r3, [r2]
	ldr	r0, .L46+12
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+16
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+20
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+24
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+28
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+32
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+36
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+40
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+44
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+48
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+52
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+56
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+60
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+64
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+68
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+72
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+76
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+80
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+84
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+88
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+92
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+96
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+100
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+104
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+108
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+112
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+116
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+120
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+124
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+128
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+132
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+136
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+140
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+144
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+148
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+152
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+156
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+160
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+164
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+168
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+172
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+176
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+180
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+184
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+188
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+192
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+196
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+200
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+204
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+208
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+212
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+216
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+220
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+224
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+228
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+232
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+236
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+240
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+244
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+248
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+252
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+256
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	ldr	r0, .L46+260
	ldr	r3, .L46+8
	ldr	r1, [r3]
	ldr	r3, .L46+264
	ldmia	r3, {r2-r3}
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r1, r3
	mov	r2, r0
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	nop
	pop	{r4, r5, fp, pc}
.L47:
	.align	2
.L46:
	.word	NUMBEROFREGISTERS
	.word	SIZEOFUINT64STAR
	.word	REGISTERS
	.word	.LC28
	.word	REG_ZR
	.word	.LC29
	.word	REG_RA
	.word	.LC30
	.word	REG_SP
	.word	.LC31
	.word	REG_GP
	.word	.LC32
	.word	REG_TP
	.word	.LC33
	.word	REG_T0
	.word	.LC34
	.word	REG_T1
	.word	.LC35
	.word	REG_T2
	.word	.LC36
	.word	REG_FP
	.word	.LC37
	.word	REG_S1
	.word	.LC38
	.word	REG_A0
	.word	.LC39
	.word	REG_A1
	.word	.LC40
	.word	REG_A2
	.word	.LC41
	.word	REG_A3
	.word	.LC42
	.word	REG_A4
	.word	.LC43
	.word	REG_A5
	.word	.LC44
	.word	REG_A6
	.word	.LC45
	.word	REG_A7
	.word	.LC46
	.word	REG_S2
	.word	.LC47
	.word	REG_S3
	.word	.LC48
	.word	REG_S4
	.word	.LC49
	.word	REG_S5
	.word	.LC50
	.word	REG_S6
	.word	.LC51
	.word	REG_S7
	.word	.LC52
	.word	REG_S8
	.word	.LC53
	.word	REG_S9
	.word	.LC54
	.word	REG_S10
	.word	.LC55
	.word	REG_S11
	.word	.LC56
	.word	REG_T3
	.word	.LC57
	.word	REG_T4
	.word	.LC58
	.word	REG_T5
	.word	.LC59
	.word	REG_T6
	.size	init_register, .-init_register
	.global	OP_LD
	.data
	.align	3
	.type	OP_LD, %object
	.size	OP_LD, 8
OP_LD:
	.word	3
	.word	0
	.global	OP_IMM
	.align	3
	.type	OP_IMM, %object
	.size	OP_IMM, 8
OP_IMM:
	.word	19
	.word	0
	.global	OP_SD
	.align	3
	.type	OP_SD, %object
	.size	OP_SD, 8
OP_SD:
	.word	35
	.word	0
	.global	OP_OP
	.align	3
	.type	OP_OP, %object
	.size	OP_OP, 8
OP_OP:
	.word	51
	.word	0
	.global	OP_LUI
	.align	3
	.type	OP_LUI, %object
	.size	OP_LUI, 8
OP_LUI:
	.word	55
	.word	0
	.global	OP_BRANCH
	.align	3
	.type	OP_BRANCH, %object
	.size	OP_BRANCH, 8
OP_BRANCH:
	.word	99
	.word	0
	.global	OP_JALR
	.align	3
	.type	OP_JALR, %object
	.size	OP_JALR, 8
OP_JALR:
	.word	103
	.word	0
	.global	OP_JAL
	.align	3
	.type	OP_JAL, %object
	.size	OP_JAL, 8
OP_JAL:
	.word	111
	.word	0
	.global	OP_SYSTEM
	.align	3
	.type	OP_SYSTEM, %object
	.size	OP_SYSTEM, 8
OP_SYSTEM:
	.word	115
	.word	0
	.global	F3_NOP
	.bss
	.align	3
	.type	F3_NOP, %object
	.size	F3_NOP, 8
F3_NOP:
	.space	8
	.global	F3_ADDI
	.align	3
	.type	F3_ADDI, %object
	.size	F3_ADDI, 8
F3_ADDI:
	.space	8
	.global	F3_ADD
	.align	3
	.type	F3_ADD, %object
	.size	F3_ADD, 8
F3_ADD:
	.space	8
	.global	F3_SUB
	.align	3
	.type	F3_SUB, %object
	.size	F3_SUB, 8
F3_SUB:
	.space	8
	.global	F3_MUL
	.align	3
	.type	F3_MUL, %object
	.size	F3_MUL, 8
F3_MUL:
	.space	8
	.global	F3_XOR
	.data
	.align	3
	.type	F3_XOR, %object
	.size	F3_XOR, 8
F3_XOR:
	.word	4
	.word	0
	.global	F3_DIVU
	.align	3
	.type	F3_DIVU, %object
	.size	F3_DIVU, 8
F3_DIVU:
	.word	5
	.word	0
	.global	F3_REMU
	.align	3
	.type	F3_REMU, %object
	.size	F3_REMU, 8
F3_REMU:
	.word	7
	.word	0
	.global	F3_SLTU
	.align	3
	.type	F3_SLTU, %object
	.size	F3_SLTU, 8
F3_SLTU:
	.word	3
	.word	0
	.global	F3_LD
	.align	3
	.type	F3_LD, %object
	.size	F3_LD, 8
F3_LD:
	.word	3
	.word	0
	.global	F3_SD
	.align	3
	.type	F3_SD, %object
	.size	F3_SD, 8
F3_SD:
	.word	3
	.word	0
	.global	F3_BEQ
	.bss
	.align	3
	.type	F3_BEQ, %object
	.size	F3_BEQ, 8
F3_BEQ:
	.space	8
	.global	F3_JALR
	.align	3
	.type	F3_JALR, %object
	.size	F3_JALR, 8
F3_JALR:
	.space	8
	.global	F3_ECALL
	.align	3
	.type	F3_ECALL, %object
	.size	F3_ECALL, 8
F3_ECALL:
	.space	8
	.global	F7_ADD
	.align	3
	.type	F7_ADD, %object
	.size	F7_ADD, 8
F7_ADD:
	.space	8
	.global	F7_MUL
	.data
	.align	3
	.type	F7_MUL, %object
	.size	F7_MUL, 8
F7_MUL:
	.word	1
	.word	0
	.global	F7_SUB
	.align	3
	.type	F7_SUB, %object
	.size	F7_SUB, 8
F7_SUB:
	.word	32
	.word	0
	.global	F7_DIVU
	.align	3
	.type	F7_DIVU, %object
	.size	F7_DIVU, 8
F7_DIVU:
	.word	1
	.word	0
	.global	F7_REMU
	.align	3
	.type	F7_REMU, %object
	.size	F7_REMU, 8
F7_REMU:
	.word	1
	.word	0
	.global	F7_SLTU
	.bss
	.align	3
	.type	F7_SLTU, %object
	.size	F7_SLTU, 8
F7_SLTU:
	.space	8
	.global	F7_XOR
	.align	3
	.type	F7_XOR, %object
	.size	F7_XOR, 8
F7_XOR:
	.space	8
	.global	F12_ECALL
	.align	3
	.type	F12_ECALL, %object
	.size	F12_ECALL, 8
F12_ECALL:
	.space	8
	.global	opcode
	.align	3
	.type	opcode, %object
	.size	opcode, 8
opcode:
	.space	8
	.global	rs1
	.align	3
	.type	rs1, %object
	.size	rs1, 8
rs1:
	.space	8
	.global	rs2
	.align	3
	.type	rs2, %object
	.size	rs2, 8
rs2:
	.space	8
	.global	rd
	.align	3
	.type	rd, %object
	.size	rd, 8
rd:
	.space	8
	.global	imm
	.align	3
	.type	imm, %object
	.size	imm, 8
imm:
	.space	8
	.global	funct3
	.align	3
	.type	funct3, %object
	.size	funct3, 8
funct3:
	.space	8
	.global	funct7
	.align	3
	.type	funct7, %object
	.size	funct7, 8
funct7:
	.space	8
	.global	MAX_BINARY_LENGTH
	.data
	.align	3
	.type	MAX_BINARY_LENGTH, %object
	.size	MAX_BINARY_LENGTH, 8
MAX_BINARY_LENGTH:
	.word	262144
	.word	0
	.global	MAX_CODE_LENGTH
	.align	3
	.type	MAX_CODE_LENGTH, %object
	.size	MAX_CODE_LENGTH, 8
MAX_CODE_LENGTH:
	.word	245760
	.word	0
	.global	MAX_DATA_LENGTH
	.align	3
	.type	MAX_DATA_LENGTH, %object
	.size	MAX_DATA_LENGTH, 8
MAX_DATA_LENGTH:
	.word	16384
	.word	0
	.global	ELF_HEADER_LEN
	.align	3
	.type	ELF_HEADER_LEN, %object
	.size	ELF_HEADER_LEN, 8
ELF_HEADER_LEN:
	.word	120
	.word	0
	.global	ELF_ENTRY_POINT
	.align	3
	.type	ELF_ENTRY_POINT, %object
	.size	ELF_ENTRY_POINT, 8
ELF_ENTRY_POINT:
	.word	65536
	.word	0
	.global	ic_lui
	.bss
	.align	3
	.type	ic_lui, %object
	.size	ic_lui, 8
ic_lui:
	.space	8
	.global	ic_addi
	.align	3
	.type	ic_addi, %object
	.size	ic_addi, 8
ic_addi:
	.space	8
	.global	ic_add
	.align	3
	.type	ic_add, %object
	.size	ic_add, 8
ic_add:
	.space	8
	.global	ic_sub
	.align	3
	.type	ic_sub, %object
	.size	ic_sub, 8
ic_sub:
	.space	8
	.global	ic_mul
	.align	3
	.type	ic_mul, %object
	.size	ic_mul, 8
ic_mul:
	.space	8
	.global	ic_divu
	.align	3
	.type	ic_divu, %object
	.size	ic_divu, 8
ic_divu:
	.space	8
	.global	ic_remu
	.align	3
	.type	ic_remu, %object
	.size	ic_remu, 8
ic_remu:
	.space	8
	.global	ic_xor
	.align	3
	.type	ic_xor, %object
	.size	ic_xor, 8
ic_xor:
	.space	8
	.global	ic_sltu
	.align	3
	.type	ic_sltu, %object
	.size	ic_sltu, 8
ic_sltu:
	.space	8
	.global	ic_ld
	.align	3
	.type	ic_ld, %object
	.size	ic_ld, 8
ic_ld:
	.space	8
	.global	ic_sd
	.align	3
	.type	ic_sd, %object
	.size	ic_sd, 8
ic_sd:
	.space	8
	.global	ic_beq
	.align	3
	.type	ic_beq, %object
	.size	ic_beq, 8
ic_beq:
	.space	8
	.global	ic_jal
	.align	3
	.type	ic_jal, %object
	.size	ic_jal, 8
ic_jal:
	.space	8
	.global	ic_jalr
	.align	3
	.type	ic_jalr, %object
	.size	ic_jalr, 8
ic_jalr:
	.space	8
	.global	ic_ecall
	.align	3
	.type	ic_ecall, %object
	.size	ic_ecall, 8
ic_ecall:
	.space	8
	.global	binary
	.align	2
	.type	binary, %object
	.size	binary, 4
binary:
	.space	4
	.global	binary_length
	.align	3
	.type	binary_length, %object
	.size	binary_length, 8
binary_length:
	.space	8
	.global	binary_name
	.align	2
	.type	binary_name, %object
	.size	binary_name, 4
binary_name:
	.space	4
	.global	code_length
	.align	3
	.type	code_length, %object
	.size	code_length, 8
code_length:
	.space	8
	.global	entry_point
	.align	3
	.type	entry_point, %object
	.size	entry_point, 8
entry_point:
	.space	8
	.global	code_line_number
	.align	2
	.type	code_line_number, %object
	.size	code_line_number, 4
code_line_number:
	.space	4
	.global	data_line_number
	.align	2
	.type	data_line_number, %object
	.size	data_line_number, 4
data_line_number:
	.space	4
	.global	assembly_name
	.align	2
	.type	assembly_name, %object
	.size	assembly_name, 4
assembly_name:
	.space	4
	.global	assembly_fd
	.align	3
	.type	assembly_fd, %object
	.size	assembly_fd, 8
assembly_fd:
	.space	8
	.global	ELF_header
	.align	2
	.type	ELF_header, %object
	.size	ELF_header, 4
ELF_header:
	.space	4
	.global	SYSCALL_EXIT
	.data
	.align	3
	.type	SYSCALL_EXIT, %object
	.size	SYSCALL_EXIT, 8
SYSCALL_EXIT:
	.word	93
	.word	0
	.global	SYSCALL_READ
	.align	3
	.type	SYSCALL_READ, %object
	.size	SYSCALL_READ, 8
SYSCALL_READ:
	.word	63
	.word	0
	.global	SYSCALL_WRITE
	.align	3
	.type	SYSCALL_WRITE, %object
	.size	SYSCALL_WRITE, 8
SYSCALL_WRITE:
	.word	64
	.word	0
	.global	SYSCALL_OPEN
	.align	3
	.type	SYSCALL_OPEN, %object
	.size	SYSCALL_OPEN, 8
SYSCALL_OPEN:
	.word	1024
	.word	0
	.global	SYSCALL_BRK
	.align	3
	.type	SYSCALL_BRK, %object
	.size	SYSCALL_BRK, 8
SYSCALL_BRK:
	.word	214
	.word	0
	.global	SYSCALL_SYMBOLIC_INPUT
	.align	3
	.type	SYSCALL_SYMBOLIC_INPUT, %object
	.size	SYSCALL_SYMBOLIC_INPUT, 8
SYSCALL_SYMBOLIC_INPUT:
	.word	42
	.word	0
	.global	SYSCALL_PRINTSV
	.align	3
	.type	SYSCALL_PRINTSV, %object
	.size	SYSCALL_PRINTSV, 8
SYSCALL_PRINTSV:
	.word	43
	.word	0
	.global	SYSCALL_ASSERT_ZONE_BGN
	.align	3
	.type	SYSCALL_ASSERT_ZONE_BGN, %object
	.size	SYSCALL_ASSERT_ZONE_BGN, 8
SYSCALL_ASSERT_ZONE_BGN:
	.word	44
	.word	0
	.global	SYSCALL_ASSERT
	.align	3
	.type	SYSCALL_ASSERT, %object
	.size	SYSCALL_ASSERT, 8
SYSCALL_ASSERT:
	.word	45
	.word	0
	.global	SYSCALL_ASSERT_ZONE_END
	.align	3
	.type	SYSCALL_ASSERT_ZONE_END, %object
	.size	SYSCALL_ASSERT_ZONE_END, 8
SYSCALL_ASSERT_ZONE_END:
	.word	46
	.word	0
	.global	SYSCALL_SWITCH
	.align	3
	.type	SYSCALL_SWITCH, %object
	.size	SYSCALL_SWITCH, 8
SYSCALL_SWITCH:
	.word	401
	.word	0
	.global	WORDSIZE
	.align	3
	.type	WORDSIZE, %object
	.size	WORDSIZE, 8
WORDSIZE:
	.word	4
	.word	0
	.global	WORDSIZEINBITS
	.align	3
	.type	WORDSIZEINBITS, %object
	.size	WORDSIZEINBITS, 8
WORDSIZEINBITS:
	.word	32
	.word	0
	.global	INSTRUCTIONSIZE
	.align	3
	.type	INSTRUCTIONSIZE, %object
	.size	INSTRUCTIONSIZE, 8
INSTRUCTIONSIZE:
	.word	4
	.word	0
	.global	REGISTERSIZE
	.align	3
	.type	REGISTERSIZE, %object
	.size	REGISTERSIZE, 8
REGISTERSIZE:
	.word	8
	.word	0
	.global	PAGESIZE
	.align	3
	.type	PAGESIZE, %object
	.size	PAGESIZE, 8
PAGESIZE:
	.word	4096
	.word	0
	.global	disassemble
	.bss
	.align	3
	.type	disassemble, %object
	.size	disassemble, 8
disassemble:
	.space	8
	.global	disassemble_verbose
	.align	3
	.type	disassemble_verbose, %object
	.size	disassemble_verbose, 8
disassemble_verbose:
	.space	8
	.global	pc
	.align	3
	.type	pc, %object
	.size	pc, 8
pc:
	.space	8
	.global	ir
	.align	3
	.type	ir, %object
	.size	ir, 8
ir:
	.space	8
	.global	registers
	.align	2
	.type	registers, %object
	.size	registers, 4
registers:
	.space	4
	.text
	.align	2
	.global	reset_interpreter
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_interpreter, %function
reset_interpreter:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r1, .L49
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L49+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L49+8
	mov	r2, #0
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L50:
	.align	2
.L49:
	.word	pc
	.word	ir
	.word	registers
	.size	reset_interpreter, .-reset_interpreter
	.global	DONOTEXIT
	.bss
	.align	3
	.type	DONOTEXIT, %object
	.size	DONOTEXIT, 8
DONOTEXIT:
	.space	8
	.global	EXIT
	.data
	.align	3
	.type	EXIT, %object
	.size	EXIT, 8
EXIT:
	.word	1
	.word	0
	.global	EXITCODE_NOERROR
	.bss
	.align	3
	.type	EXITCODE_NOERROR, %object
	.size	EXITCODE_NOERROR, 8
EXITCODE_NOERROR:
	.space	8
	.global	EXITCODE_BADARGUMENTS
	.data
	.align	3
	.type	EXITCODE_BADARGUMENTS, %object
	.size	EXITCODE_BADARGUMENTS, 8
EXITCODE_BADARGUMENTS:
	.word	1
	.word	0
	.global	EXITCODE_IOERROR
	.align	3
	.type	EXITCODE_IOERROR, %object
	.size	EXITCODE_IOERROR, 8
EXITCODE_IOERROR:
	.word	2
	.word	0
	.global	EXITCODE_SCANNERERROR
	.align	3
	.type	EXITCODE_SCANNERERROR, %object
	.size	EXITCODE_SCANNERERROR, 8
EXITCODE_SCANNERERROR:
	.word	3
	.word	0
	.global	EXITCODE_PARSERERROR
	.align	3
	.type	EXITCODE_PARSERERROR, %object
	.size	EXITCODE_PARSERERROR, 8
EXITCODE_PARSERERROR:
	.word	4
	.word	0
	.global	EXITCODE_COMPILERERROR
	.align	3
	.type	EXITCODE_COMPILERERROR, %object
	.size	EXITCODE_COMPILERERROR, 8
EXITCODE_COMPILERERROR:
	.word	5
	.word	0
	.global	EXITCODE_OUTOFVIRTUALMEMORY
	.align	3
	.type	EXITCODE_OUTOFVIRTUALMEMORY, %object
	.size	EXITCODE_OUTOFVIRTUALMEMORY, 8
EXITCODE_OUTOFVIRTUALMEMORY:
	.word	6
	.word	0
	.global	EXITCODE_OUTOFPHYSICALMEMORY
	.align	3
	.type	EXITCODE_OUTOFPHYSICALMEMORY, %object
	.size	EXITCODE_OUTOFPHYSICALMEMORY, 8
EXITCODE_OUTOFPHYSICALMEMORY:
	.word	7
	.word	0
	.global	EXITCODE_DIVISIONBYZERO
	.align	3
	.type	EXITCODE_DIVISIONBYZERO, %object
	.size	EXITCODE_DIVISIONBYZERO, 8
EXITCODE_DIVISIONBYZERO:
	.word	8
	.word	0
	.global	EXITCODE_UNKNOWNINSTRUCTION
	.align	3
	.type	EXITCODE_UNKNOWNINSTRUCTION, %object
	.size	EXITCODE_UNKNOWNINSTRUCTION, 8
EXITCODE_UNKNOWNINSTRUCTION:
	.word	9
	.word	0
	.global	EXITCODE_UNKNOWNSYSCALL
	.align	3
	.type	EXITCODE_UNKNOWNSYSCALL, %object
	.size	EXITCODE_UNKNOWNSYSCALL, 8
EXITCODE_UNKNOWNSYSCALL:
	.word	10
	.word	0
	.global	EXITCODE_MULTIPLEEXCEPTIONERROR
	.align	3
	.type	EXITCODE_MULTIPLEEXCEPTIONERROR, %object
	.size	EXITCODE_MULTIPLEEXCEPTIONERROR, 8
EXITCODE_MULTIPLEEXCEPTIONERROR:
	.word	11
	.word	0
	.global	EXITCODE_SYMBOLICEXECUTIONERROR
	.align	3
	.type	EXITCODE_SYMBOLICEXECUTIONERROR, %object
	.size	EXITCODE_SYMBOLICEXECUTIONERROR, 8
EXITCODE_SYMBOLICEXECUTIONERROR:
	.word	12
	.word	0
	.global	EXITCODE_OUTOFTRACEMEMORY
	.align	3
	.type	EXITCODE_OUTOFTRACEMEMORY, %object
	.size	EXITCODE_OUTOFTRACEMEMORY, 8
EXITCODE_OUTOFTRACEMEMORY:
	.word	13
	.word	0
	.global	EXITCODE_UNCAUGHTEXCEPTION
	.align	3
	.type	EXITCODE_UNCAUGHTEXCEPTION, %object
	.size	EXITCODE_UNCAUGHTEXCEPTION, 8
EXITCODE_UNCAUGHTEXCEPTION:
	.word	14
	.word	0
	.global	SYSCALL_BITWIDTH
	.align	3
	.type	SYSCALL_BITWIDTH, %object
	.size	SYSCALL_BITWIDTH, 8
SYSCALL_BITWIDTH:
	.word	32
	.word	0
	.global	selfie_argc
	.bss
	.align	3
	.type	selfie_argc, %object
	.size	selfie_argc, 8
selfie_argc:
	.space	8
	.global	selfie_argv
	.align	2
	.type	selfie_argv, %object
	.size	selfie_argv, 4
selfie_argv:
	.space	4
	.global	selfie_name
	.align	2
	.type	selfie_name, %object
	.size	selfie_name, 4
selfie_name:
	.space	4
	.text
	.align	2
	.global	init_selfie
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_selfie, %function
init_selfie:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-16]
	ldr	r1, .L52
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r2, .L52+4
	ldr	r3, [fp, #-16]
	str	r3, [r2]
	bl	get_argument
	mov	r3, r0
	ldr	r2, .L52+8
	str	r3, [r2]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L53:
	.align	2
.L52:
	.word	selfie_argc
	.word	selfie_argv
	.word	selfie_name
	.size	init_selfie, .-init_selfie
	.align	2
	.global	two_to_the_power_of
	.syntax unified
	.arm
	.fpu softvfp
	.type	two_to_the_power_of, %function
two_to_the_power_of:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L56
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L57:
	.align	2
.L56:
	.word	power_of_two_table
	.size	two_to_the_power_of, .-two_to_the_power_of
	.align	2
	.global	ten_to_the_power_of
	.syntax unified
	.arm
	.fpu softvfp
	.type	ten_to_the_power_of, %function
ten_to_the_power_of:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #8
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L59
	mov	r2, #1
	mov	r3, #0
	b	.L60
.L59:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	ten_to_the_power_of
	mov	r4, r0
	mov	r5, r1
	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	r6, r2, r2
	adc	r7, r3, r3
	mov	r2, r6
	mov	r3, r7
.L60:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	ten_to_the_power_of, .-ten_to_the_power_of
	.align	2
	.global	left_shift
	.syntax unified
	.arm
	.fpu softvfp
	.type	left_shift, %function
left_shift:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-12]
	mul	r0, r3, r1
	ldr	r1, [fp, #-8]
	mul	r1, r2, r1
	add	ip, r0, r1
	ldr	lr, [fp, #-12]
	umull	r0, r1, lr, r2
	add	r3, ip, r1
	mov	r1, r3
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	left_shift, .-left_shift
	.global	__aeabi_uldivmod
	.align	2
	.global	right_shift
	.syntax unified
	.arm
	.fpu softvfp
	.type	right_shift, %function
right_shift:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	right_shift, .-right_shift
	.align	2
	.global	get_bits
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_bits, %function
get_bits:
	@ args = 8, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L66
	ldmib	fp, {r0-r1}
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	b	.L67
.L66:
	ldr	r3, .L68
	ldmia	r3, {r2-r3}
	sub	r7, fp, #44
	ldmia	r7, {r6-r7}
	ldmib	fp, {r0-r1}
	adds	r4, r6, r0
	adc	r5, r7, r1
	subs	r1, r2, r4
	str	r1, [fp, #-52]
	sbc	r3, r3, r5
	str	r3, [fp, #-48]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	left_shift
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L68
	ldmia	r3, {r0-r1}
	ldmib	fp, {r2-r3}
	subs	r8, r0, r2
	sbc	r9, r1, r3
	mov	r2, r8
	mov	r3, r9
	mov	r0, r4
	mov	r1, r5
	bl	right_shift
	mov	r2, r0
	mov	r3, r1
.L67:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L69:
	.align	2
.L68:
	.word	CPUBITWIDTH
	.size	get_bits, .-get_bits
	.align	2
	.global	get_low_word
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_low_word, %function
get_low_word:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L72
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L73:
	.align	2
.L72:
	.word	WORDSIZEINBITS
	.size	get_low_word, .-get_low_word
	.align	2
	.global	get_high_word
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_high_word, %function
get_high_word:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L76
	ldmia	r3, {r0-r1}
	ldr	r3, .L76
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L77:
	.align	2
.L76:
	.word	WORDSIZEINBITS
	.size	get_high_word, .-get_high_word
	.align	2
	.global	abs
	.syntax unified
	.arm
	.fpu softvfp
	.type	abs, %function
abs:
	@ 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, #-12]
	str	r1, [fp, #-8]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L79
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	b	.L80
.L79:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
.L80:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	abs, .-abs
	.align	2
	.global	signed_less_than
	.syntax unified
	.arm
	.fpu softvfp
	.type	signed_less_than, %function
signed_less_than:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, fp}
	add	fp, sp, #16
	sub	sp, sp, #20
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L83
	ldmia	r3, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	ldr	r3, .L83
	ldmia	r3, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	cmp	r7, r5
	cmpeq	r6, r4
	movcc	r3, #1
	movcs	r3, #0
	and	r3, r3, #255
	and	r2, r3, #255
	mov	r3, #0
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, r7, fp}
	bx	lr
.L84:
	.align	2
.L83:
	.word	INT64_MIN
	.size	signed_less_than, .-signed_less_than
	.align	2
	.global	signed_division
	.syntax unified
	.arm
	.fpu softvfp
	.type	signed_division, %function
signed_division:
	@ 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, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L94
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L86
	ldr	r3, .L94
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L87
	mov	r2, #1
	mov	r3, #0
	b	.L88
.L87:
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L89
	ldr	r3, .L94
	ldmia	r3, {r4-r5}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	abs
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	b	.L88
.L89:
	ldr	r3, .L94
	ldmia	r3, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	b	.L88
.L86:
	ldr	r3, .L94
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L90
	mov	r2, #0
	mov	r3, #0
	b	.L88
.L90:
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L91
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L92
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	abs
	mov	r4, r0
	mov	r5, r1
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	abs
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	b	.L88
.L92:
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	abs
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	b	.L88
.L91:
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L93
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	abs
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	b	.L88
.L93:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
.L88:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L95:
	.align	2
.L94:
	.word	INT64_MIN
	.size	signed_division, .-signed_division
	.align	2
	.global	is_signed_integer
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_signed_integer, %function
is_signed_integer:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r6, r2, #1
	sbc	r7, r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	two_to_the_power_of
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcs	.L97
	mov	r2, #1
	mov	r3, #0
	b	.L98
.L97:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L99
	mov	r2, #1
	mov	r3, #0
	b	.L98
.L99:
	mov	r2, #0
	mov	r3, #0
.L98:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	is_signed_integer, .-is_signed_integer
	.align	2
	.global	sign_extend
	.syntax unified
	.arm
	.fpu softvfp
	.type	sign_extend, %function
sign_extend:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r6, r2, #1
	sbc	r7, r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	two_to_the_power_of
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcs	.L101
	sub	r5, fp, #28
	ldmia	r5, {r4-r5}
	b	.L102
.L101:
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	two_to_the_power_of
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	subs	r4, r2, r0
	sbc	r5, r3, r1
.L102:
	mov	r2, r4
	mov	r3, r5
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	sign_extend, .-sign_extend
	.align	2
	.global	sign_shrink
	.syntax unified
	.arm
	.fpu softvfp
	.type	sign_shrink, %function
sign_shrink:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	sign_shrink, .-sign_shrink
	.align	2
	.global	load_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_character, %function
load_character:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L107
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldmia	r3, {r4-r5}
	ldr	r3, .L107
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #3
	orr	r3, r3, r0, lsr #29
	lsl	r2, r0, #3
	mov	r0, #8
	mov	r1, #0
	stm	sp, {r0-r1}
	mov	r0, r4
	mov	r1, r5
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L108:
	.align	2
.L107:
	.word	SIZEOFUINT64
	.size	load_character, .-load_character
	.align	2
	.global	store_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	store_character, %function
store_character:
	@ args = 8, 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, #-40]
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, .L111
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldmia	r3, {r6-r7}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	ldr	r3, .L111
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #3
	orr	r3, r3, r0, lsr #29
	lsl	r2, r0, #3
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	subs	r4, r6, r2
	sbc	r5, r7, r3
	ldr	r3, .L111
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #3
	orr	r3, r3, r0, lsr #29
	lsl	r2, r0, #3
	ldmib	fp, {r0-r1}
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	lsl	r1, r1, #3
	ldr	r0, [fp, #-40]
	add	r1, r0, r1
	adds	r8, r4, r2
	adc	r9, r5, r3
	stm	r1, {r8-r9}
	ldr	r3, [fp, #-40]
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L112:
	.align	2
.L111:
	.word	SIZEOFUINT64
	.size	store_character, .-store_character
	.align	2
	.global	string_length
	.syntax unified
	.arm
	.fpu softvfp
	.type	string_length, %function
string_length:
	@ 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]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	b	.L114
.L115:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L114:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-24]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L115
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	string_length, .-string_length
	.align	2
	.global	string_copy
	.syntax unified
	.arm
	.fpu softvfp
	.type	string_copy, %function
string_copy:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	string_length
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	zalloc
	str	r0, [fp, #-40]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L118
.L119:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-48]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	store_character
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
.L118:
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bls	.L119
	ldr	r3, [fp, #-40]
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	string_copy, .-string_copy
	.align	2
	.global	string_reverse
	.syntax unified
	.arm
	.fpu softvfp
	.type	string_reverse, %function
string_reverse:
	@ 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, #40
	str	r0, [fp, #-56]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	string_length
	mov	r2, r0
	mov	r3, r1
	subs	r8, r2, #1
	sbc	r9, r3, #0
	str	r8, [fp, #-44]
	str	r9, [fp, #-40]
	b	.L122
.L123:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	load_character
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-52]
	str	r5, [fp, #-48]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	subs	r6, r2, #1
	sbc	r7, r3, #0
	str	r6, [fp, #-44]
	str	r7, [fp, #-40]
.L122:
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L123
	nop
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
	.size	string_reverse, .-string_reverse
	.align	2
	.global	string_compare
	.syntax unified
	.arm
	.fpu softvfp
	.type	string_compare, %function
string_compare:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
.L130:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L125
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L126
	mov	r2, #1
	mov	r3, #0
	b	.L127
.L126:
	mov	r2, #0
	mov	r3, #0
	b	.L127
.L125:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r6, r0
	mov	r7, r1
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r7, r3
	cmpeq	r6, r2
	bne	.L128
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-28]
	str	r5, [fp, #-24]
	b	.L130
.L128:
	mov	r2, #0
	mov	r3, #0
.L127:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	string_compare, .-string_compare
	.section	.rodata
	.align	2
.LC60:
	.ascii	"%s: cannot convert non-decimal number %s\012\000"
	.align	2
.LC61:
	.ascii	"%s: cannot convert out-of-bound number %s\012\000"
	.text
	.align	2
	.global	atoi
	.syntax unified
	.arm
	.fpu softvfp
	.type	atoi, %function
atoi:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #64
	str	r0, [fp, #-56]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	load_character
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	b	.L133
.L139:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r6, r2, #48
	sbc	r7, r3, #0
	str	r6, [fp, #-36]
	str	r7, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #9
	bls	.L134
	ldr	r3, .L141
	ldr	r3, [r3]
	ldr	r2, [fp, #-56]
	mov	r1, r3
	ldr	r0, .L141+4
	bl	printf2
	ldr	r3, .L141+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L134:
	ldr	r3, .L141+12
	ldmia	r3, {r0-r1}
	mov	r2, #10
	mov	r3, #0
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcs	.L135
	sub	r5, fp, #44
	ldmia	r5, {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	r1, r2, r2
	str	r1, [fp, #-68]
	adc	r3, r3, r3
	str	r3, [fp, #-64]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r8, r2, r0
	adc	r9, r3, r1
	str	r8, [fp, #-44]
	str	r9, [fp, #-40]
	b	.L136
.L135:
	ldr	r3, .L141+12
	ldmia	r3, {r0-r1}
	mov	r2, #10
	mov	r3, #0
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bne	.L137
	ldr	r3, .L141+12
	ldmia	r3, {r0-r1}
	mov	r2, #10
	mov	r3, #0
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bhi	.L138
	sub	r5, fp, #44
	ldmia	r5, {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	r1, r2, r2
	str	r1, [fp, #-76]
	adc	r3, r3, r3
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	ip, r2, r0
	str	ip, [fp, #-84]
	adc	r3, r3, r1
	str	r3, [fp, #-80]
	sub	r4, fp, #84
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-44]
	str	r4, [fp, #-40]
	b	.L136
.L138:
	ldr	r3, .L141
	ldr	r3, [r3]
	ldr	r2, [fp, #-56]
	mov	r1, r3
	ldr	r0, .L141+16
	bl	printf2
	ldr	r3, .L141+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L136
.L137:
	ldr	r3, .L141
	ldr	r3, [r3]
	ldr	r2, [fp, #-56]
	mov	r1, r3
	ldr	r0, .L141+16
	bl	printf2
	ldr	r3, .L141+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L136:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-92]
	adc	r3, r3, #0
	str	r3, [fp, #-88]
	sub	r4, fp, #92
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-52]
	str	r4, [fp, #-48]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	load_character
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
.L133:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L139
	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}
.L142:
	.align	2
.L141:
	.word	selfie_name
	.word	.LC60
	.word	EXITCODE_BADARGUMENTS
	.word	UINT64_MAX
	.word	.LC61
	.size	atoi, .-atoi
	.align	2
	.global	itoa
	.syntax unified
	.arm
	.fpu softvfp
	.type	itoa, %function
itoa:
	@ args = 16, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #96
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	str	r2, [fp, #-56]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L144
	mov	r2, #48
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-56]
	bl	store_character
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L146
.L144:
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L146
	ldmib	fp, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #10
	bne	.L146
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L146
.L149:
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldmib	fp, {r2-r3}
	bl	__aeabi_uldivmod
	cmp	r3, #0
	cmpeq	r2, #9
	bls	.L147
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldmib	fp, {r2-r3}
	bl	__aeabi_uldivmod
	adds	r1, r2, #55
	str	r1, [fp, #-68]
	adc	r3, r3, #0
	str	r3, [fp, #-64]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	b	.L148
.L147:
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldmib	fp, {r2-r3}
	bl	__aeabi_uldivmod
	adds	r1, r2, #48
	str	r1, [fp, #-76]
	adc	r3, r3, #0
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
.L148:
	ldmib	fp, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-44]
	str	r5, [fp, #-40]
.L146:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L149
	ldmib	fp, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #10
	bne	.L155
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L152
	mov	r2, #45
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	str	r8, [fp, #-44]
	str	r9, [fp, #-40]
	b	.L152
.L153:
	mov	r2, #32
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	str	r6, [fp, #-44]
	str	r7, [fp, #-40]
.L152:
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L153
	b	.L154
.L156:
	mov	r2, #48
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-100]
	adc	r3, r3, #0
	str	r3, [fp, #-96]
	sub	r4, fp, #100
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-44]
	str	r4, [fp, #-40]
.L155:
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L156
	ldmib	fp, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #8
	bne	.L157
	mov	r2, #48
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-84]
	adc	r3, r3, #0
	str	r3, [fp, #-80]
	mov	r2, #48
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #2
	str	r1, [fp, #-108]
	adc	r3, r3, #0
	str	r3, [fp, #-104]
	sub	r4, fp, #108
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-44]
	str	r4, [fp, #-40]
	b	.L154
.L157:
	ldmib	fp, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #16
	bne	.L154
	mov	r2, #120
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-92]
	adc	r3, r3, #0
	str	r3, [fp, #-88]
	mov	r2, #48
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #92
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #2
	str	r1, [fp, #-116]
	adc	r3, r3, #0
	str	r3, [fp, #-112]
	sub	r4, fp, #116
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-44]
	str	r4, [fp, #-40]
.L154:
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	store_character
	ldr	r0, [fp, #-56]
	bl	string_reverse
	ldr	r3, [fp, #-56]
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
	.size	itoa, .-itoa
	.align	2
	.global	fixed_point_ratio
	.syntax unified
	.arm
	.fpu softvfp
	.type	fixed_point_ratio, %function
fixed_point_ratio:
	@ args = 8, 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, #-44]
	str	r1, [fp, #-40]
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldmib	fp, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L160
.L163:
	ldr	r3, .L164
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	ten_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bhi	.L161
	ldmib	fp, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r6, r0, r2
	sbc	r7, r1, r3
	mov	r0, r6
	mov	r1, r7
	bl	ten_to_the_power_of
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcc	.L161
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	ten_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-44]
	mul	r0, r3, r1
	ldr	r1, [fp, #-40]
	mul	r1, r2, r1
	add	r1, r0, r1
	ldr	r0, [fp, #-44]
	umull	r4, r5, r0, r2
	add	r3, r1, r5
	mov	r5, r3
	ldmib	fp, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r8, r0, r2
	sbc	r9, r1, r3
	mov	r0, r8
	mov	r1, r9
	bl	ten_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	b	.L162
.L161:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
.L160:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L163
	mov	r2, #0
	mov	r3, #0
.L162:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L165:
	.align	2
.L164:
	.word	UINT64_MAX
	.size	fixed_point_ratio, .-fixed_point_ratio
	.align	2
	.global	fixed_point_percentage
	.syntax unified
	.arm
	.fpu softvfp
	.type	fixed_point_percentage, %function
fixed_point_percentage:
	@ 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, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L167
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	r4, r2, #4
	adc	r5, r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	ten_to_the_power_of
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	b	.L168
.L167:
	mov	r2, #0
	mov	r3, #0
.L168:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	fixed_point_percentage, .-fixed_point_percentage
	.section	.rodata
	.align	2
.LC62:
	.ascii	"%s: could not write character to output file %s\012"
	.ascii	"\000"
	.text
	.align	2
	.global	put_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	put_character, %function
put_character:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L174
	ldr	r1, [r3]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, .L174+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L174
	ldr	ip, [r3]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, ip
	bl	write
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #1
	bne	.L170
	ldr	r3, .L174+4
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #1
	beq	.L173
	ldr	r3, .L174+8
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L174+8
	stm	r3, {r4-r5}
	b	.L173
.L170:
	ldr	r3, .L174+4
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #1
	beq	.L172
	ldr	r1, .L174+4
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L174+12
	ldr	r3, [r3]
	ldr	r2, .L174+16
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L174+20
	bl	printf2
.L172:
	ldr	r3, .L174+24
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L173:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L175:
	.align	2
.L174:
	.word	character_buffer
	.word	output_fd
	.word	number_of_written_characters
	.word	selfie_name
	.word	output_name
	.word	.LC62
	.word	EXITCODE_IOERROR
	.size	put_character, .-put_character
	.section	.rodata
	.align	2
.LC63:
	.ascii	"NULL\000"
	.text
	.align	2
	.global	print
	.syntax unified
	.arm
	.fpu softvfp
	.type	print, %function
print:
	@ 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	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L177
	ldr	r0, .L182
	bl	print
	b	.L181
.L177:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	b	.L179
.L180:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-24]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L179:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-24]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L180
.L181:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L183:
	.align	2
.L182:
	.word	.LC63
	.size	print, .-print
	.align	2
	.global	println
	.syntax unified
	.arm
	.fpu softvfp
	.type	println, %function
println:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L185
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	nop
	pop	{fp, pc}
.L186:
	.align	2
.L185:
	.word	CHAR_LF
	.size	println, .-println
	.section	.rodata
	.align	2
.LC64:
	.ascii	"end of file\000"
	.align	2
.LC65:
	.ascii	"tabulator\000"
	.align	2
.LC66:
	.ascii	"line feed\000"
	.align	2
.LC67:
	.ascii	"carriage return\000"
	.text
	.align	2
	.global	print_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_character, %function
print_character:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L193
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	ldr	r3, .L193+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L188
	ldr	r0, .L193+8
	bl	print
	b	.L189
.L188:
	ldr	r3, .L193+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L190
	ldr	r0, .L193+16
	bl	print
	b	.L189
.L190:
	ldr	r3, .L193+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L191
	ldr	r0, .L193+24
	bl	print
	b	.L189
.L191:
	ldr	r3, .L193+28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L192
	ldr	r0, .L193+32
	bl	print
	b	.L189
.L192:
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	put_character
.L189:
	ldr	r3, .L193
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L194:
	.align	2
.L193:
	.word	CHAR_SINGLEQUOTE
	.word	CHAR_EOF
	.word	.LC64
	.word	CHAR_TAB
	.word	.LC65
	.word	CHAR_LF
	.word	.LC66
	.word	CHAR_CR
	.word	.LC67
	.size	print_character, .-print_character
	.align	2
	.global	print_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_string, %function
print_string:
	@ 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, .L196
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	ldr	r0, [fp, #-8]
	bl	print
	ldr	r3, .L196
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L197:
	.align	2
.L196:
	.word	CHAR_DOUBLEQUOTE
	.size	print_string, .-print_string
	.align	2
	.global	print_integer
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_integer, %function
print_integer:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L199
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #10
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	itoa
	mov	r3, r0
	mov	r0, r3
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L200:
	.align	2
.L199:
	.word	integer_buffer
	.size	print_integer, .-print_integer
	.align	2
	.global	unprint_integer
	.syntax unified
	.arm
	.fpu softvfp
	.type	unprint_integer, %function
unprint_integer:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #24
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L204
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #10
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	itoa
	mov	r3, r0
	mov	r0, r3
	bl	string_length
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	b	.L202
.L203:
	ldr	r3, .L204+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L202:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L203
	nop
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L205:
	.align	2
.L204:
	.word	integer_buffer
	.word	CHAR_BACKSPACE
	.size	unprint_integer, .-unprint_integer
	.align	2
	.global	print_hexadecimal
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_hexadecimal, %function
print_hexadecimal:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L207
	ldr	r1, [r3]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #16
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	itoa
	mov	r3, r0
	mov	r0, r3
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L208:
	.align	2
.L207:
	.word	integer_buffer
	.size	print_hexadecimal, .-print_hexadecimal
	.align	2
	.global	print_octal
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_octal, %function
print_octal:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L210
	ldr	r1, [r3]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #8
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	itoa
	mov	r3, r0
	mov	r0, r3
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L211:
	.align	2
.L210:
	.word	integer_buffer
	.size	print_octal, .-print_octal
	.align	2
	.global	print_binary
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_binary, %function
print_binary:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L213
	ldr	r1, [r3]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #2
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	itoa
	mov	r3, r0
	mov	r0, r3
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L214:
	.align	2
.L213:
	.word	integer_buffer
	.size	print_binary, .-print_binary
	.align	2
	.global	print_format0
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_format0, %function
print_format0:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	str	r0, [fp, #-32]
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L218
	mov	r2, #0
	mov	r3, #0
	b	.L217
.L221:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #37
	beq	.L219
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-44]
	str	r5, [fp, #-40]
	b	.L218
.L219:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-52]
	adc	r3, r3, #0
	str	r3, [fp, #-48]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #37
	bne	.L220
	mov	r0, #37
	mov	r1, #0
	bl	put_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	str	r6, [fp, #-44]
	str	r7, [fp, #-40]
	b	.L218
.L220:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	str	r8, [fp, #-44]
	str	r9, [fp, #-40]
.L218:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L221
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
.L217:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
	.size	print_format0, .-print_format0
	.align	2
	.global	print_format1
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_format1, %function
print_format1:
	@ args = 4, pretend = 0, frame = 144
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #160
	str	r0, [fp, #-40]
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L225
	mov	r6, #0
	mov	r7, #0
	b	.L224
.L240:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #37
	beq	.L226
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-140]
	adc	r3, r3, #0
	str	r3, [fp, #-136]
	sub	r3, fp, #140
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	b	.L225
.L226:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-60]
	adc	r3, r3, #0
	str	r3, [fp, #-56]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #115
	bne	.L227
	ldr	r0, [fp, #4]
	bl	print
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L227:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-68]
	adc	r3, r3, #0
	str	r3, [fp, #-64]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #99
	bne	.L228
	ldr	r3, [fp, #4]
	mov	r2, r3
	asr	r3, r2, #31
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L228:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-76]
	adc	r3, r3, #0
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #100
	bne	.L229
	ldr	r3, [fp, #4]
	mov	r2, r3
	asr	r3, r2, #31
	mov	r0, r2
	mov	r1, r3
	bl	print_integer
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L229:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-84]
	adc	r3, r3, #0
	str	r3, [fp, #-80]
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #46
	bne	.L230
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #2
	str	r1, [fp, #-92]
	adc	r3, r3, #0
	str	r3, [fp, #-88]
	sub	r3, fp, #92
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	subs	r1, r2, #48
	str	r1, [fp, #-148]
	sbc	r3, r3, #0
	str	r3, [fp, #-144]
	sub	r3, fp, #148
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #9
	bhi	.L231
	ldr	r3, [fp, #4]
	mov	r4, r3
	asr	r5, r4, #31
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	ten_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	print_integer
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L232
	ldr	r3, [fp, #4]
	mov	r4, r3
	asr	r5, r4, #31
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	ten_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	ldr	r3, .L241
	ldr	ip, [r3]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #10
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, ip
	bl	itoa
	ldr	r3, .L241
	ldr	r3, [r3]
	mov	r0, r3
	bl	string_length
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r8, r2, r0
	sbc	r9, r3, r1
	str	r8, [fp, #-36]
	str	r9, [fp, #-32]
	mov	r0, #46
	mov	r1, #0
	bl	put_character
	b	.L233
.L234:
	mov	r0, #48
	mov	r1, #0
	bl	put_character
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r1, r2, #1
	str	r1, [fp, #-156]
	sbc	r3, r3, #0
	str	r3, [fp, #-152]
	sub	r4, fp, #156
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
.L233:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L234
	ldr	r3, .L241
	ldr	r3, [r3]
	mov	r0, r3
	bl	print
.L232:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #4
	adc	r7, r3, #0
	b	.L224
.L231:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-164]
	adc	r3, r3, #0
	str	r3, [fp, #-160]
	sub	r3, fp, #164
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	b	.L225
.L230:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-100]
	adc	r3, r3, #0
	str	r3, [fp, #-96]
	sub	r3, fp, #100
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #112
	bne	.L235
	ldr	r3, [fp, #4]
	mov	r0, r3
	asr	r1, r0, #31
	ldr	r3, .L241+4
	ldmia	r3, {r2-r3}
	bl	print_hexadecimal
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L235:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-108]
	adc	r3, r3, #0
	str	r3, [fp, #-104]
	sub	r3, fp, #108
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #120
	bne	.L236
	ldr	r3, [fp, #4]
	mov	r0, r3
	asr	r1, r0, #31
	mov	r2, #0
	mov	r3, #0
	bl	print_hexadecimal
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L236:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-116]
	adc	r3, r3, #0
	str	r3, [fp, #-112]
	sub	r3, fp, #116
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #111
	bne	.L237
	ldr	r3, [fp, #4]
	mov	r0, r3
	asr	r1, r0, #31
	mov	r2, #0
	mov	r3, #0
	bl	print_octal
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L237:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-124]
	adc	r3, r3, #0
	str	r3, [fp, #-120]
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #98
	bne	.L238
	ldr	r3, [fp, #4]
	mov	r0, r3
	asr	r1, r0, #31
	mov	r2, #0
	mov	r3, #0
	bl	print_binary
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r2, #2
	adc	r7, r3, #0
	b	.L224
.L238:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-132]
	adc	r3, r3, #0
	str	r3, [fp, #-128]
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #37
	bne	.L239
	mov	r0, #37
	mov	r1, #0
	bl	put_character
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #2
	str	r1, [fp, #-172]
	adc	r3, r3, #0
	str	r3, [fp, #-168]
	sub	r3, fp, #172
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	b	.L225
.L239:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-52]
	str	r5, [fp, #-48]
.L225:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L240
	sub	r7, fp, #52
	ldmia	r7, {r6-r7}
.L224:
	mov	r2, r6
	mov	r3, r7
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L242:
	.align	2
.L241:
	.word	integer_buffer
	.word	SIZEOFUINT64STAR
	.size	print_format1, .-print_format1
	.align	2
	.global	printf1
	.syntax unified
	.arm
	.fpu softvfp
	.type	printf1, %function
printf1:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-8]
	bl	print_format0
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	printf1, .-printf1
	.align	2
	.global	printf2
	.syntax unified
	.arm
	.fpu softvfp
	.type	printf2, %function
printf2:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-16]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-8]
	bl	print_format0
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	printf2, .-printf2
	.align	2
	.global	printf3
	.syntax unified
	.arm
	.fpu softvfp
	.type	printf3, %function
printf3:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-16]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-20]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-8]
	bl	print_format0
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	printf3, .-printf3
	.align	2
	.global	printf4
	.syntax unified
	.arm
	.fpu softvfp
	.type	printf4, %function
printf4:
	@ args = 4, 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-16]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-20]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #4]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-8]
	bl	print_format0
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	printf4, .-printf4
	.align	2
	.global	printf5
	.syntax unified
	.arm
	.fpu softvfp
	.type	printf5, %function
printf5:
	@ args = 8, 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-16]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-20]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #4]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #8]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-8]
	bl	print_format0
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	printf5, .-printf5
	.align	2
	.global	printf6
	.syntax unified
	.arm
	.fpu softvfp
	.type	printf6, %function
printf6:
	@ args = 12, 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-16]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-20]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #4]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #8]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #12]
	str	r1, [sp]
	ldr	r0, [fp, #-8]
	bl	print_format1
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-8]
	bl	print_format0
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	printf6, .-printf6
	.align	2
	.global	round_up
	.syntax unified
	.arm
	.fpu softvfp
	.type	round_up, %function
round_up:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	orrs	r3, r2, r3
	bne	.L250
	sub	r7, fp, #28
	ldmia	r7, {r6-r7}
	b	.L251
.L250:
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	subs	r4, r2, r0
	sbc	r5, r3, r1
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r6, r4, r2
	adc	r7, r5, r3
.L251:
	mov	r2, r6
	mov	r3, r7
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	round_up, .-round_up
	.section	.rodata
	.align	2
.LC68:
	.ascii	"%s: malloc out of memory\012\000"
	.text
	.align	2
	.global	smalloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	smalloc, %function
smalloc:
	@ 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, #-20]
	str	r1, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	malloc
	str	r0, [fp, #-8]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L253
	ldr	r3, [fp, #-8]
	b	.L254
.L253:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L255
	ldr	r3, .L256
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L256+4
	bl	printf1
	ldr	r3, .L256+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L255:
	ldr	r3, [fp, #-8]
.L254:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L257:
	.align	2
.L256:
	.word	selfie_name
	.word	.LC68
	.word	EXITCODE_OUTOFVIRTUALMEMORY
	.size	smalloc, .-smalloc
	.align	2
	.global	zalloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	zalloc, %function
zalloc:
	@ args = 0, 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, #-36]
	str	r1, [fp, #-32]
	ldr	r3, .L262
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	round_up
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	smalloc
	str	r0, [fp, #-24]
	ldr	r3, .L262
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	b	.L259
.L260:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-24]
	add	r1, r2, r3
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L259:
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L260
	ldr	r3, [fp, #-24]
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L263:
	.align	2
.L262:
	.word	REGISTERSIZE
	.size	zalloc, .-zalloc
	.align	2
	.global	print_symbol
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_symbol, %function
print_symbol:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L267
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	ldr	r3, .L267+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L265
	ldr	r0, .L267+8
	bl	print
	b	.L266
.L265:
	ldr	r3, .L267+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	bl	print
.L266:
	ldr	r3, .L267
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	put_character
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L268:
	.align	2
.L267:
	.word	CHAR_DOUBLEQUOTE
	.word	SYM_EOF
	.word	.LC64
	.word	SYMBOLS
	.size	print_symbol, .-print_symbol
	.section	.rodata
	.align	2
.LC69:
	.ascii	"%s: %s in %s in line %d: \000"
	.text
	.align	2
	.global	print_line_number
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_line_number, %function
print_line_number:
	@ 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, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L270
	ldr	r1, [r3]
	ldr	r3, .L270+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-20]
	str	r2, [sp]
	ldr	r2, [fp, #-8]
	ldr	r0, .L270+8
	bl	printf4
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L271:
	.align	2
.L270:
	.word	selfie_name
	.word	source_name
	.word	.LC69
	.size	print_line_number, .-print_line_number
	.section	.rodata
	.align	2
.LC70:
	.ascii	"syntax error\000"
	.align	2
.LC71:
	.ascii	"%s\012\000"
	.text
	.align	2
	.global	syntax_error_message
	.syntax unified
	.arm
	.fpu softvfp
	.type	syntax_error_message, %function
syntax_error_message:
	@ 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, .L273
	ldmia	r3, {r2-r3}
	ldr	r0, .L273+4
	bl	print_line_number
	ldr	r1, [fp, #-8]
	ldr	r0, .L273+8
	bl	printf1
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L274:
	.align	2
.L273:
	.word	line_number
	.word	.LC70
	.word	.LC71
	.size	syntax_error_message, .-syntax_error_message
	.section	.rodata
	.align	2
.LC72:
	.ascii	" expected but \000"
	.align	2
.LC73:
	.ascii	" found\012\000"
	.text
	.align	2
	.global	syntax_error_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	syntax_error_character, %function
syntax_error_character:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L276
	ldmia	r3, {r2-r3}
	ldr	r0, .L276+4
	bl	print_line_number
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_character
	ldr	r0, .L276+8
	bl	print
	ldr	r3, .L276+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_character
	ldr	r0, .L276+16
	bl	print
	ldr	r3, .L276+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L277:
	.align	2
.L276:
	.word	line_number
	.word	.LC70
	.word	.LC72
	.word	character
	.word	.LC73
	.word	EXITCODE_SCANNERERROR
	.size	syntax_error_character, .-syntax_error_character
	.align	2
	.global	syntax_error_identifier
	.syntax unified
	.arm
	.fpu softvfp
	.type	syntax_error_identifier, %function
syntax_error_identifier:
	@ 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, .L279
	ldmia	r3, {r2-r3}
	ldr	r0, .L279+4
	bl	print_line_number
	ldr	r0, [fp, #-8]
	bl	print_string
	ldr	r0, .L279+8
	bl	print
	ldr	r3, .L279+12
	ldr	r3, [r3]
	mov	r0, r3
	bl	print_string
	ldr	r0, .L279+16
	bl	print
	ldr	r3, .L279+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L280:
	.align	2
.L279:
	.word	line_number
	.word	.LC70
	.word	.LC72
	.word	identifier
	.word	.LC73
	.word	EXITCODE_SCANNERERROR
	.size	syntax_error_identifier, .-syntax_error_identifier
	.section	.rodata
	.align	2
.LC74:
	.ascii	"%s: could not read character from input file %s\012"
	.ascii	"\000"
	.text
	.align	2
	.global	get_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_character, %function
get_character:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	ldr	r3, .L286
	ldmia	r3, {r0-r1}
	ldr	r3, .L286+4
	ldr	ip, [r3]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, ip
	bl	read
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #1
	bne	.L282
	ldr	r3, .L286+4
	ldr	r3, [r3]
	ldmia	r3, {r2-r3}
	ldr	r1, .L286+8
	stm	r1, {r2-r3}
	ldr	r3, .L286+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L286+12
	stm	r3, {r4-r5}
	b	.L285
.L282:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L284
	ldr	r3, .L286+16
	ldmia	r3, {r2-r3}
	ldr	r1, .L286+8
	stm	r1, {r2-r3}
	b	.L285
.L284:
	ldr	r3, .L286+20
	ldr	r3, [r3]
	ldr	r2, .L286+24
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L286+28
	bl	printf2
	ldr	r3, .L286+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L285:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L287:
	.align	2
.L286:
	.word	source_fd
	.word	character_buffer
	.word	character
	.word	number_of_read_characters
	.word	CHAR_EOF
	.word	selfie_name
	.word	source_name
	.word	.LC74
	.word	EXITCODE_IOERROR
	.size	get_character, .-get_character
	.align	2
	.global	is_character_new_line
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_character_new_line, %function
is_character_new_line:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L292
	ldmia	r3, {r0-r1}
	ldr	r3, .L292+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L289
	mov	r2, #1
	mov	r3, #0
	b	.L290
.L289:
	ldr	r3, .L292
	ldmia	r3, {r0-r1}
	ldr	r3, .L292+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L291
	mov	r2, #1
	mov	r3, #0
	b	.L290
.L291:
	mov	r2, #0
	mov	r3, #0
.L290:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L293:
	.align	2
.L292:
	.word	character
	.word	CHAR_LF
	.word	CHAR_CR
	.size	is_character_new_line, .-is_character_new_line
	.align	2
	.global	is_character_whitespace
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_character_whitespace, %function
is_character_whitespace:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L298
	ldmia	r3, {r0-r1}
	ldr	r3, .L298+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L295
	mov	r2, #1
	mov	r3, #0
	b	.L296
.L295:
	ldr	r3, .L298
	ldmia	r3, {r0-r1}
	ldr	r3, .L298+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L297
	mov	r2, #1
	mov	r3, #0
	b	.L296
.L297:
	bl	is_character_new_line
	mov	r2, r0
	mov	r3, r1
.L296:
	mov	r0, r2
	mov	r1, r3
	pop	{fp, pc}
.L299:
	.align	2
.L298:
	.word	character
	.word	CHAR_SPACE
	.word	CHAR_TAB
	.size	is_character_whitespace, .-is_character_whitespace
	.section	.rodata
	.align	2
.LC75:
	.ascii	"runaway multi-line comment\000"
	.text
	.align	2
	.global	find_next_character
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_next_character, %function
find_next_character:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #72
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
.L315:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L301
	bl	get_character
	bl	is_character_new_line
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L302
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L315
.L302:
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L304
	ldr	r3, .L316
	ldmia	r3, {r2-r3}
	b	.L305
.L304:
	ldr	r3, .L316+8
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	ldr	r3, .L316+8
	stm	r3, {r6-r7}
	b	.L315
.L301:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L306
	bl	get_character
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L307
	ldr	r3, .L316+8
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-52]
	adc	r3, r3, #0
	str	r3, [fp, #-48]
	ldr	r3, .L316+8
	sub	r2, fp, #52
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	bl	get_character
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L307
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	get_character
.L307:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L308
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L309
	ldr	r3, .L316+24
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	ldr	r3, .L316+24
	stm	r3, {r8-r9}
	b	.L308
.L309:
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L308
	ldr	r0, .L316+28
	bl	syntax_error_message
	ldr	r3, .L316+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L308:
	ldr	r3, .L316+8
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-60]
	adc	r3, r3, #0
	str	r3, [fp, #-56]
	ldr	r3, .L316+8
	sub	r2, fp, #60
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	b	.L315
.L306:
	bl	is_character_whitespace
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L310
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L311
	ldr	r3, .L316+24
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L316+24
	stm	r3, {r4-r5}
.L311:
	ldr	r3, .L316+8
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-68]
	adc	r3, r3, #0
	str	r3, [fp, #-64]
	ldr	r3, .L316+8
	sub	r2, fp, #68
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	bl	get_character
	b	.L315
.L310:
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L312
	bl	get_character
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L313
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, .L316+8
	ldmia	r3, {r2-r3}
	adds	r1, r2, #2
	str	r1, [fp, #-76]
	adc	r3, r3, #0
	str	r3, [fp, #-72]
	ldr	r3, .L316+8
	sub	r2, fp, #76
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	ldr	r3, .L316+36
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-84]
	adc	r3, r3, #0
	str	r3, [fp, #-80]
	ldr	r3, .L316+36
	sub	r2, fp, #84
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	b	.L315
.L313:
	ldr	r3, .L316
	ldmia	r3, {r0-r1}
	ldr	r3, .L316+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L314
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L316+8
	ldmia	r3, {r2-r3}
	adds	r1, r2, #2
	str	r1, [fp, #-92]
	adc	r3, r3, #0
	str	r3, [fp, #-88]
	ldr	r3, .L316+8
	sub	r2, fp, #92
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	ldr	r3, .L316+36
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-100]
	adc	r3, r3, #0
	str	r3, [fp, #-96]
	ldr	r3, .L316+36
	sub	r2, fp, #100
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	b	.L315
.L314:
	ldr	r3, .L316+40
	ldmia	r3, {r2-r3}
	ldr	r1, .L316+44
	stm	r1, {r2-r3}
	ldr	r3, .L316
	ldmia	r3, {r2-r3}
	b	.L305
.L312:
	ldr	r3, .L316
	ldmia	r3, {r2-r3}
.L305:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L317:
	.align	2
.L316:
	.word	character
	.word	CHAR_EOF
	.word	number_of_ignored_characters
	.word	CHAR_ASTERISK
	.word	CHAR_SLASH
	.word	CHAR_LF
	.word	line_number
	.word	.LC75
	.word	EXITCODE_SCANNERERROR
	.word	number_of_comments
	.word	SYM_DIV
	.word	symbol
	.size	find_next_character, .-find_next_character
	.align	2
	.global	is_character_letter
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_character_letter, %function
is_character_letter:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L324
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #96
	bls	.L319
	ldr	r3, .L324
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #122
	bhi	.L320
	mov	r2, #1
	mov	r3, #0
	b	.L321
.L320:
	mov	r2, #0
	mov	r3, #0
	b	.L321
.L319:
	ldr	r3, .L324
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #64
	bls	.L322
	ldr	r3, .L324
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #90
	bhi	.L323
	mov	r2, #1
	mov	r3, #0
	b	.L321
.L323:
	mov	r2, #0
	mov	r3, #0
	b	.L321
.L322:
	mov	r2, #0
	mov	r3, #0
.L321:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L325:
	.align	2
.L324:
	.word	character
	.size	is_character_letter, .-is_character_letter
	.align	2
	.global	is_character_digit
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_character_digit, %function
is_character_digit:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L330
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #47
	bls	.L327
	ldr	r3, .L330
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #57
	bhi	.L328
	mov	r2, #1
	mov	r3, #0
	b	.L329
.L328:
	mov	r2, #0
	mov	r3, #0
	b	.L329
.L327:
	mov	r2, #0
	mov	r3, #0
.L329:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L331:
	.align	2
.L330:
	.word	character
	.size	is_character_digit, .-is_character_digit
	.align	2
	.global	is_character_letter_or_digit_or_underscore
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_character_letter_or_digit_or_underscore, %function
is_character_letter_or_digit_or_underscore:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	is_character_letter
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L333
	mov	r2, #1
	mov	r3, #0
	b	.L334
.L333:
	bl	is_character_digit
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L335
	mov	r2, #1
	mov	r3, #0
	b	.L334
.L335:
	ldr	r3, .L337
	ldmia	r3, {r0-r1}
	ldr	r3, .L337+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L336
	mov	r2, #1
	mov	r3, #0
	b	.L334
.L336:
	mov	r2, #0
	mov	r3, #0
.L334:
	mov	r0, r2
	mov	r1, r3
	pop	{fp, pc}
.L338:
	.align	2
.L337:
	.word	character
	.word	CHAR_UNDERSCORE
	.size	is_character_letter_or_digit_or_underscore, .-is_character_letter_or_digit_or_underscore
	.align	2
	.global	is_character_not_double_quote_or_new_line_or_eof
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_character_not_double_quote_or_new_line_or_eof, %function
is_character_not_double_quote_or_new_line_or_eof:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L344
	ldmia	r3, {r0-r1}
	ldr	r3, .L344+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L340
	mov	r2, #0
	mov	r3, #0
	b	.L341
.L340:
	bl	is_character_new_line
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L342
	mov	r2, #0
	mov	r3, #0
	b	.L341
.L342:
	ldr	r3, .L344
	ldmia	r3, {r0-r1}
	ldr	r3, .L344+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L343
	mov	r2, #0
	mov	r3, #0
	b	.L341
.L343:
	mov	r2, #1
	mov	r3, #0
.L341:
	mov	r0, r2
	mov	r1, r3
	pop	{fp, pc}
.L345:
	.align	2
.L344:
	.word	character
	.word	CHAR_DOUBLEQUOTE
	.word	CHAR_EOF
	.size	is_character_not_double_quote_or_new_line_or_eof, .-is_character_not_double_quote_or_new_line_or_eof
	.align	2
	.global	identifier_string_match
	.syntax unified
	.arm
	.fpu softvfp
	.type	identifier_string_match, %function
identifier_string_match:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L348
	ldr	r0, [r3]
	ldr	r3, .L348+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L349:
	.align	2
.L348:
	.word	identifier
	.word	SYMBOLS
	.size	identifier_string_match, .-identifier_string_match
	.align	2
	.global	identifier_or_keyword
	.syntax unified
	.arm
	.fpu softvfp
	.type	identifier_or_keyword, %function
identifier_or_keyword:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L358
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	identifier_string_match
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L351
	ldr	r3, .L358
	ldmia	r3, {r2-r3}
	b	.L352
.L351:
	ldr	r3, .L358+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	identifier_string_match
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L353
	ldr	r3, .L358+4
	ldmia	r3, {r2-r3}
	b	.L352
.L353:
	ldr	r3, .L358+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	identifier_string_match
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L354
	ldr	r3, .L358+8
	ldmia	r3, {r2-r3}
	b	.L352
.L354:
	ldr	r3, .L358+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	identifier_string_match
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L355
	ldr	r3, .L358+12
	ldmia	r3, {r2-r3}
	b	.L352
.L355:
	ldr	r3, .L358+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	identifier_string_match
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L356
	ldr	r3, .L358+16
	ldmia	r3, {r2-r3}
	b	.L352
.L356:
	ldr	r3, .L358+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	identifier_string_match
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L357
	ldr	r3, .L358+20
	ldmia	r3, {r2-r3}
	b	.L352
.L357:
	ldr	r3, .L358+24
	ldmia	r3, {r2-r3}
.L352:
	mov	r0, r2
	mov	r1, r3
	pop	{fp, pc}
.L359:
	.align	2
.L358:
	.word	SYM_WHILE
	.word	SYM_IF
	.word	SYM_UINT64
	.word	SYM_ELSE
	.word	SYM_RETURN
	.word	SYM_VOID
	.word	SYM_IDENTIFIER
	.size	identifier_or_keyword, .-identifier_or_keyword
	.section	.rodata
	.align	2
.LC76:
	.ascii	"identifier too long\000"
	.align	2
.LC77:
	.ascii	"signed integer out of bound\000"
	.align	2
.LC78:
	.ascii	"integer out of bound\000"
	.align	2
.LC79:
	.ascii	"reached end of file looking for a character literal"
	.ascii	"\000"
	.align	2
.LC80:
	.ascii	"string too long\000"
	.align	2
.LC81:
	.ascii	"found unknown character \000"
	.text
	.align	2
	.global	get_symbol
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_symbol, %function
get_symbol:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #48
	ldr	r3, .L407
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	bl	find_next_character
	ldr	r3, .L407+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L406
	ldr	r3, .L407+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L362
	bl	is_character_letter
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L363
	ldr	r3, .L407+16
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-44]
	adc	r3, r3, #0
	str	r3, [fp, #-40]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L407+20
	str	r3, [r2]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L364
.L366:
	ldr	r3, .L407+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L365
	ldr	r0, .L407+24
	bl	syntax_error_message
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L365:
	ldr	r3, .L407+20
	ldr	r1, [r3]
	ldr	r3, .L407+32
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	store_character
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
	bl	get_character
.L364:
	bl	is_character_letter_or_digit_or_underscore
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L366
	ldr	r3, .L407+20
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	store_character
	bl	identifier_or_keyword
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L363:
	bl	is_character_digit
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L367
	ldr	r3, .L407+36
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-52]
	adc	r3, r3, #0
	str	r3, [fp, #-48]
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L407+40
	str	r3, [r2]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L368
.L372:
	ldr	r3, .L407+36
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L369
	ldr	r3, .L407+44
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L370
	ldr	r0, .L407+48
	bl	syntax_error_message
	b	.L371
.L370:
	ldr	r0, .L407+52
	bl	syntax_error_message
.L371:
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L369:
	ldr	r3, .L407+40
	ldr	r1, [r3]
	ldr	r3, .L407+32
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	store_character
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-68]
	adc	r3, r3, #0
	str	r3, [fp, #-64]
	sub	r4, fp, #68
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
	bl	get_character
.L368:
	bl	is_character_digit
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L372
	ldr	r3, .L407+40
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	store_character
	ldr	r3, .L407+40
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L407+56
	stm	r1, {r2-r3}
	ldr	r3, .L407+44
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L373
	ldr	r3, .L407+56
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+60
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bls	.L373
	ldr	r0, .L407+48
	bl	syntax_error_message
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L373:
	ldr	r3, .L407+64
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L367:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+68
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L374
	bl	get_character
	ldr	r1, .L407+56
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L375
	ldr	r0, .L407+72
	bl	syntax_error_message
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L376
.L375:
	ldr	r3, .L407+32
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+56
	stm	r1, {r2-r3}
.L376:
	bl	get_character
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+68
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L377
	bl	get_character
	b	.L378
.L377:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L379
	ldr	r3, .L407+68
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_character
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L378
.L379:
	ldr	r3, .L407+68
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_character
.L378:
	ldr	r3, .L407+76
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L374:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+80
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L380
	bl	get_character
	ldr	r3, .L407+84
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-60]
	adc	r3, r3, #0
	str	r3, [fp, #-56]
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	zalloc
	mov	r3, r0
	ldr	r2, .L407+88
	str	r3, [r2]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L381
.L384:
	ldr	r3, .L407+84
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L382
	ldr	r0, .L407+92
	bl	syntax_error_message
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L382:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+96
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L383
	bl	handle_escape_sequence
.L383:
	ldr	r3, .L407+88
	ldr	r1, [r3]
	ldr	r3, .L407+32
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	store_character
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	str	r8, [fp, #-36]
	str	r9, [fp, #-32]
	bl	get_character
.L381:
	bl	is_character_not_double_quote_or_new_line_or_eof
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L384
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+80
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L385
	bl	get_character
	b	.L386
.L385:
	ldr	r3, .L407+80
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_character
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L386:
	ldr	r3, .L407+88
	ldr	r1, [r3]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	store_character
	ldr	r3, .L407+100
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L380:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+104
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L387
	bl	get_character
	ldr	r3, .L407+108
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L387:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+112
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L388
	bl	get_character
	ldr	r3, .L407+116
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L388:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+120
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L389
	bl	get_character
	ldr	r3, .L407+124
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L389:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+128
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L390
	bl	get_character
	ldr	r3, .L407+132
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L390:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+136
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L391
	bl	get_character
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+136
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L392
	bl	get_character
	ldr	r3, .L407+140
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L392:
	ldr	r3, .L407+144
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L391:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+148
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L393
	bl	get_character
	ldr	r3, .L407+152
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L393:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+156
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L394
	bl	get_character
	ldr	r3, .L407+160
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L394:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+164
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L395
	bl	get_character
	ldr	r3, .L407+168
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L395:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+172
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L396
	bl	get_character
	ldr	r3, .L407+176
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L396:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+180
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L397
	bl	get_character
	ldr	r3, .L407+184
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L397:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+188
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L398
	bl	get_character
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+136
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L399
	bl	get_character
	ldr	r3, .L407+192
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L399:
	ldr	r3, .L407+196
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L398:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+200
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L400
	bl	get_character
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+136
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L401
	bl	get_character
	ldr	r3, .L407+204
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L401:
	ldr	r3, .L407+208
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L400:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+212
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L402
	bl	get_character
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+136
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L403
	bl	get_character
	b	.L404
.L403:
	ldr	r3, .L407+136
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_character
.L404:
	ldr	r3, .L407+216
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L402:
	ldr	r3, .L407+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L407+220
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L405
	bl	get_character
	ldr	r3, .L407+224
	ldmia	r3, {r2-r3}
	ldr	r1, .L407+4
	stm	r1, {r2-r3}
	b	.L362
.L405:
	ldr	r3, .L407+228
	ldmia	r3, {r2-r3}
	ldr	r0, .L407+232
	bl	print_line_number
	ldr	r0, .L407+236
	bl	print
	ldr	r3, .L407+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_character
	bl	println
	ldr	r3, .L407+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L362:
	ldr	r3, .L407+240
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	ldr	r3, .L407+240
	stm	r3, {r6-r7}
.L406:
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L408:
	.align	2
.L407:
	.word	SYM_EOF
	.word	symbol
	.word	CHAR_EOF
	.word	SYM_DIV
	.word	MAX_IDENTIFIER_LENGTH
	.word	identifier
	.word	.LC76
	.word	EXITCODE_SCANNERERROR
	.word	character
	.word	MAX_INTEGER_LENGTH
	.word	integer
	.word	integer_is_signed
	.word	.LC77
	.word	.LC78
	.word	literal
	.word	INT64_MIN
	.word	SYM_INTEGER
	.word	CHAR_SINGLEQUOTE
	.word	.LC79
	.word	SYM_CHARACTER
	.word	CHAR_DOUBLEQUOTE
	.word	MAX_STRING_LENGTH
	.word	string
	.word	.LC80
	.word	CHAR_BACKSLASH
	.word	SYM_STRING
	.word	CHAR_SEMICOLON
	.word	SYM_SEMICOLON
	.word	CHAR_PLUS
	.word	SYM_PLUS
	.word	CHAR_DASH
	.word	SYM_MINUS
	.word	CHAR_ASTERISK
	.word	SYM_ASTERISK
	.word	CHAR_EQUAL
	.word	SYM_EQUALITY
	.word	SYM_ASSIGN
	.word	CHAR_LPARENTHESIS
	.word	SYM_LPARENTHESIS
	.word	CHAR_RPARENTHESIS
	.word	SYM_RPARENTHESIS
	.word	CHAR_LBRACE
	.word	SYM_LBRACE
	.word	CHAR_RBRACE
	.word	SYM_RBRACE
	.word	CHAR_COMMA
	.word	SYM_COMMA
	.word	CHAR_LT
	.word	SYM_LEQ
	.word	SYM_LT
	.word	CHAR_GT
	.word	SYM_GEQ
	.word	SYM_GT
	.word	CHAR_EXCLAMATION
	.word	SYM_NOTEQ
	.word	CHAR_PERCENTAGE
	.word	SYM_MOD
	.word	line_number
	.word	.LC70
	.word	.LC81
	.word	number_of_scanned_symbols
	.size	get_symbol, .-get_symbol
	.section	.rodata
	.align	2
.LC82:
	.ascii	"unknown escape sequence found\000"
	.text
	.align	2
	.global	handle_escape_sequence
	.syntax unified
	.arm
	.fpu softvfp
	.type	handle_escape_sequence, %function
handle_escape_sequence:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L419
	ldmia	r3, {r2-r3}
	adds	r0, r2, #1
	adc	r1, r3, #0
	ldr	r3, .L419
	stm	r3, {r0-r1}
	bl	get_character
	ldr	r3, .L419+4
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #110
	bne	.L410
	ldr	r3, .L419+8
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L410:
	ldr	r3, .L419+4
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #116
	bne	.L412
	ldr	r3, .L419+12
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L412:
	ldr	r3, .L419+4
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #98
	bne	.L413
	ldr	r3, .L419+16
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L413:
	ldr	r3, .L419+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L419+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L414
	ldr	r3, .L419+20
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L414:
	ldr	r3, .L419+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L419+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L415
	ldr	r3, .L419+24
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L415:
	ldr	r3, .L419+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L419+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L416
	ldr	r3, .L419+28
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L416:
	ldr	r3, .L419+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L419+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L417
	ldr	r3, .L419+32
	ldmia	r3, {r2-r3}
	ldr	r1, .L419+4
	stm	r1, {r2-r3}
	b	.L418
.L417:
	ldr	r0, .L419+36
	bl	syntax_error_message
	ldr	r3, .L419+40
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L418:
	nop
	pop	{fp, pc}
.L420:
	.align	2
.L419:
	.word	number_of_ignored_characters
	.word	character
	.word	CHAR_LF
	.word	CHAR_TAB
	.word	CHAR_BACKSPACE
	.word	CHAR_SINGLEQUOTE
	.word	CHAR_DOUBLEQUOTE
	.word	CHAR_PERCENTAGE
	.word	CHAR_BACKSLASH
	.word	.LC82
	.word	EXITCODE_SCANNERERROR
	.size	handle_escape_sequence, .-handle_escape_sequence
	.align	2
	.global	hash
	.syntax unified
	.arm
	.fpu softvfp
	.type	hash, %function
hash:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #64
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	ldmia	r3, {r0-r1}
	str	r0, [fp, #-84]
	str	r1, [fp, #-80]
	ldr	r3, [fp, #-32]
	ldmia	r3, {r4-r5}
	str	r4, [fp, #-92]
	str	r5, [fp, #-88]
	ldr	r3, [fp, #-32]
	ldmia	r3, {r8-r9}
	ldr	r3, [fp, #-32]
	ldmia	r3, {r6-r7}
	ldr	r3, [fp, #-32]
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-32]
	ldmia	r3, {r0-r1}
	ldr	r3, .L423
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	adds	r1, r4, r2
	str	r1, [fp, #-44]
	adc	r3, r5, r3
	str	r3, [fp, #-40]
	ldr	r3, .L423
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	adds	r1, r6, r2
	str	r1, [fp, #-52]
	adc	r3, r7, r3
	str	r3, [fp, #-48]
	ldr	r3, .L423
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	adds	r1, r8, r2
	str	r1, [fp, #-60]
	adc	r3, r9, r3
	str	r3, [fp, #-56]
	ldr	r3, .L423
	ldmia	r3, {r2-r3}
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	sub	r5, fp, #92
	ldmia	r5, {r4-r5}
	mov	r1, r4
	adds	r1, r1, r2
	str	r1, [fp, #-68]
	mov	r1, r5
	adc	r3, r1, r3
	str	r3, [fp, #-64]
	ldr	r3, .L423
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-76]
	adc	r3, r1, r3
	str	r3, [fp, #-72]
	ldr	r3, .L423
	ldmia	r3, {r2-r3}
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L424:
	.align	2
.L423:
	.word	HASH_TABLE_SIZE
	.size	hash, .-hash
	.align	2
	.global	create_symbol_table_entry
	.syntax unified
	.arm
	.fpu softvfp
	.type	create_symbol_table_entry, %function
create_symbol_table_entry:
	@ args = 40, 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, #-44]
	str	r1, [fp, #-40]
	str	r2, [fp, #-48]
	ldr	r3, .L432
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	adds	ip, r2, r2
	str	ip, [fp, #-76]
	adc	r3, r3, r3
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	adds	r6, r2, r0
	adc	r7, r3, r1
	ldr	r3, .L432+4
	ldmia	r3, {r2-r3}
	adds	r4, r6, r2
	adc	r5, r7, r3
	adds	r3, r4, r4
	str	r3, [fp, #-84]
	adc	r3, r5, r5
	str	r3, [fp, #-80]
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	str	r0, [fp, #-36]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-36]
	bl	set_string
	ldmib	fp, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_line_number
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_class
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_type
	add	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_value
	add	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_address
	ldr	r3, .L432+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L426
	ldr	r3, .L432+12
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_scope
	ldr	r3, .L432+16
	ldr	r4, [r3]
	ldr	r0, [fp, #-48]
	bl	hash
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r4, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-32]
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	set_next_entry
	ldr	r3, [fp, #-36]
	mov	r2, r3
	asr	r3, r2, #31
	ldr	r1, [fp, #-32]
	stm	r1, {r2-r3}
	ldr	r3, .L432+20
	ldmia	r3, {r2-r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L427
	ldr	r3, .L432+24
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-60]
	adc	r3, r3, #0
	str	r3, [fp, #-56]
	ldr	r3, .L432+24
	sub	r2, fp, #60
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	b	.L431
.L427:
	ldr	r3, .L432+28
	ldmia	r3, {r2-r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L429
	ldr	r3, .L432+32
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-68]
	adc	r3, r3, #0
	str	r3, [fp, #-64]
	ldr	r3, .L432+32
	sub	r2, fp, #68
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	b	.L431
.L429:
	ldr	r3, .L432+36
	ldmia	r3, {r2-r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L431
	ldr	r3, .L432+40
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	ldr	r3, .L432+40
	stm	r3, {r8-r9}
	b	.L431
.L426:
	ldr	r3, .L432+44
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L430
	ldr	r3, .L432+48
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_scope
	ldr	r3, .L432+52
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	set_next_entry
	ldr	r2, .L432+52
	ldr	r3, [fp, #-36]
	str	r3, [r2]
	b	.L431
.L430:
	ldr	r3, .L432+12
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-36]
	bl	set_scope
	ldr	r3, .L432+56
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	set_next_entry
	ldr	r2, .L432+56
	ldr	r3, [fp, #-36]
	str	r3, [r2]
.L431:
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L433:
	.align	2
.L432:
	.word	SIZEOFUINT64
	.word	SIZEOFUINT64STAR
	.word	GLOBAL_TABLE
	.word	REG_GP
	.word	global_symbol_table
	.word	VARIABLE
	.word	number_of_global_variables
	.word	PROCEDURE
	.word	number_of_procedures
	.word	STRING
	.word	number_of_strings
	.word	LOCAL_TABLE
	.word	REG_FP
	.word	local_symbol_table
	.word	library_symbol_table
	.size	create_symbol_table_entry, .-create_symbol_table_entry
	.align	2
	.global	search_symbol_table
	.syntax unified
	.arm
	.fpu softvfp
	.type	search_symbol_table, %function
search_symbol_table:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L439
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	ldr	r3, .L439
	stm	r3, {r6-r7}
	b	.L435
.L438:
	ldr	r3, .L439+4
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L439+4
	stm	r3, {r4-r5}
	ldr	r0, [fp, #-24]
	bl	get_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L436
	ldr	r0, [fp, #-24]
	bl	get_class
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bne	.L436
	ldr	r3, [fp, #-24]
	b	.L437
.L436:
	ldr	r0, [fp, #-24]
	bl	get_next_entry
	str	r0, [fp, #-24]
.L435:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L438
	mov	r3, #0
.L437:
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L440:
	.align	2
.L439:
	.word	number_of_searches
	.word	total_search_time
	.size	search_symbol_table, .-search_symbol_table
	.align	2
	.global	search_global_symbol_table
	.syntax unified
	.arm
	.fpu softvfp
	.type	search_global_symbol_table, %function
search_global_symbol_table:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L443
	ldr	r4, [r3]
	ldr	r0, [fp, #-16]
	bl	hash
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r4, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-16]
	bl	search_symbol_table
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L444:
	.align	2
.L443:
	.word	global_symbol_table
	.size	search_global_symbol_table, .-search_global_symbol_table
	.align	2
	.global	get_scoped_symbol_table_entry
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_scoped_symbol_table_entry, %function
get_scoped_symbol_table_entry:
	@ 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	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L451
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L446
	ldr	r3, .L451+4
	ldr	r0, [r3]
	ldr	r3, .L451
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-16]
	bl	search_symbol_table
	str	r0, [fp, #-8]
	b	.L447
.L446:
	ldr	r3, .L451+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L448
	ldr	r3, .L451+12
	ldr	r0, [r3]
	ldr	r3, .L451+8
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-16]
	bl	search_symbol_table
	str	r0, [fp, #-8]
	b	.L447
.L448:
	mov	r3, #0
	str	r3, [fp, #-8]
.L447:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L449
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-16]
	bl	search_global_symbol_table
	mov	r3, r0
	b	.L450
.L449:
	ldr	r3, [fp, #-8]
.L450:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L452:
	.align	2
.L451:
	.word	VARIABLE
	.word	local_symbol_table
	.word	PROCEDURE
	.word	library_symbol_table
	.size	get_scoped_symbol_table_entry, .-get_scoped_symbol_table_entry
	.align	2
	.global	is_undefined_procedure
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_undefined_procedure, %function
is_undefined_procedure:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	get_class
	ldr	r3, .L458
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L454
	ldr	r3, .L458+4
	ldr	r4, [r3]
	ldr	r0, [fp, #-24]
	bl	get_string
	mov	r1, r0
	ldr	r3, .L458
	ldmia	r3, {r2-r3}
	mov	r0, r4
	bl	search_symbol_table
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L455
	mov	r2, #0
	mov	r3, #0
	b	.L456
.L455:
	ldr	r0, [fp, #-24]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L457
	mov	r2, #1
	mov	r3, #0
	b	.L456
.L457:
	ldr	r0, [fp, #-24]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	load_instruction
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	get_opcode
	ldr	r3, .L458+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L454
	mov	r2, #1
	mov	r3, #0
	b	.L456
.L454:
	mov	r2, #0
	mov	r3, #0
.L456:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L459:
	.align	2
.L458:
	.word	PROCEDURE
	.word	library_symbol_table
	.word	OP_JAL
	.size	is_undefined_procedure, .-is_undefined_procedure
	.section	.rodata
	.align	2
.LC83:
	.ascii	"procedure %s undefined\012\000"
	.text
	.align	2
	.global	report_undefined_procedures
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_undefined_procedures, %function
report_undefined_procedures:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #24
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	b	.L461
.L465:
	ldr	r3, .L467
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	str	r3, [fp, #-32]
	b	.L462
.L464:
	ldr	r0, [fp, #-32]
	bl	is_undefined_procedure
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L463
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r0, [fp, #-32]
	bl	get_line_number
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L467+4
	bl	print_line_number
	ldr	r0, [fp, #-32]
	bl	get_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L467+8
	bl	printf1
.L463:
	ldr	r0, [fp, #-32]
	bl	get_next_entry
	str	r0, [fp, #-32]
.L462:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L464
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L461:
	ldr	r3, .L467+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L465
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L468:
	.align	2
.L467:
	.word	global_symbol_table
	.word	.LC70
	.word	.LC83
	.word	HASH_TABLE_SIZE
	.size	report_undefined_procedures, .-report_undefined_procedures
	.align	2
	.global	is_not_rbrace_or_eof
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_not_rbrace_or_eof, %function
is_not_rbrace_or_eof:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L473
	ldmia	r3, {r0-r1}
	ldr	r3, .L473+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L470
	mov	r2, #0
	mov	r3, #0
	b	.L471
.L470:
	ldr	r3, .L473
	ldmia	r3, {r0-r1}
	ldr	r3, .L473+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L472
	mov	r2, #0
	mov	r3, #0
	b	.L471
.L472:
	mov	r2, #1
	mov	r3, #0
.L471:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L474:
	.align	2
.L473:
	.word	symbol
	.word	SYM_RBRACE
	.word	SYM_EOF
	.size	is_not_rbrace_or_eof, .-is_not_rbrace_or_eof
	.align	2
	.global	is_expression
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_expression, %function
is_expression:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L476
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L476:
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L478
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L478:
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L479
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L479:
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L480
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L480:
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L481
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L481:
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L482
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L482:
	ldr	r3, .L484
	ldmia	r3, {r0-r1}
	ldr	r3, .L484+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L483
	mov	r2, #1
	mov	r3, #0
	b	.L477
.L483:
	mov	r2, #0
	mov	r3, #0
.L477:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L485:
	.align	2
.L484:
	.word	symbol
	.word	SYM_MINUS
	.word	SYM_LPARENTHESIS
	.word	SYM_IDENTIFIER
	.word	SYM_INTEGER
	.word	SYM_ASTERISK
	.word	SYM_STRING
	.word	SYM_CHARACTER
	.size	is_expression, .-is_expression
	.align	2
	.global	is_literal
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_literal, %function
is_literal:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L490
	ldmia	r3, {r0-r1}
	ldr	r3, .L490+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L487
	mov	r2, #1
	mov	r3, #0
	b	.L488
.L487:
	ldr	r3, .L490
	ldmia	r3, {r0-r1}
	ldr	r3, .L490+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L489
	mov	r2, #1
	mov	r3, #0
	b	.L488
.L489:
	mov	r2, #0
	mov	r3, #0
.L488:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L491:
	.align	2
.L490:
	.word	symbol
	.word	SYM_INTEGER
	.word	SYM_CHARACTER
	.size	is_literal, .-is_literal
	.align	2
	.global	is_star_or_div_or_modulo
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_star_or_div_or_modulo, %function
is_star_or_div_or_modulo:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L497
	ldmia	r3, {r0-r1}
	ldr	r3, .L497+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L493
	mov	r2, #1
	mov	r3, #0
	b	.L494
.L493:
	ldr	r3, .L497
	ldmia	r3, {r0-r1}
	ldr	r3, .L497+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L495
	mov	r2, #1
	mov	r3, #0
	b	.L494
.L495:
	ldr	r3, .L497
	ldmia	r3, {r0-r1}
	ldr	r3, .L497+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L496
	mov	r2, #1
	mov	r3, #0
	b	.L494
.L496:
	mov	r2, #0
	mov	r3, #0
.L494:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L498:
	.align	2
.L497:
	.word	symbol
	.word	SYM_ASTERISK
	.word	SYM_DIV
	.word	SYM_MOD
	.size	is_star_or_div_or_modulo, .-is_star_or_div_or_modulo
	.align	2
	.global	is_plus_or_minus
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_plus_or_minus, %function
is_plus_or_minus:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L503
	ldmia	r3, {r0-r1}
	ldr	r3, .L503+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L500
	mov	r2, #1
	mov	r3, #0
	b	.L501
.L500:
	ldr	r3, .L503
	ldmia	r3, {r0-r1}
	ldr	r3, .L503+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L502
	mov	r2, #1
	mov	r3, #0
	b	.L501
.L502:
	mov	r2, #0
	mov	r3, #0
.L501:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L504:
	.align	2
.L503:
	.word	symbol
	.word	SYM_MINUS
	.word	SYM_PLUS
	.size	is_plus_or_minus, .-is_plus_or_minus
	.align	2
	.global	is_comparison
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_comparison, %function
is_comparison:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L513
	ldmia	r3, {r0-r1}
	ldr	r3, .L513+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L506
	mov	r2, #1
	mov	r3, #0
	b	.L507
.L506:
	ldr	r3, .L513
	ldmia	r3, {r0-r1}
	ldr	r3, .L513+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L508
	mov	r2, #1
	mov	r3, #0
	b	.L507
.L508:
	ldr	r3, .L513
	ldmia	r3, {r0-r1}
	ldr	r3, .L513+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L509
	mov	r2, #1
	mov	r3, #0
	b	.L507
.L509:
	ldr	r3, .L513
	ldmia	r3, {r0-r1}
	ldr	r3, .L513+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L510
	mov	r2, #1
	mov	r3, #0
	b	.L507
.L510:
	ldr	r3, .L513
	ldmia	r3, {r0-r1}
	ldr	r3, .L513+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L511
	mov	r2, #1
	mov	r3, #0
	b	.L507
.L511:
	ldr	r3, .L513
	ldmia	r3, {r0-r1}
	ldr	r3, .L513+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L512
	mov	r2, #1
	mov	r3, #0
	b	.L507
.L512:
	mov	r2, #0
	mov	r3, #0
.L507:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L514:
	.align	2
.L513:
	.word	symbol
	.word	SYM_EQUALITY
	.word	SYM_NOTEQ
	.word	SYM_LT
	.word	SYM_GT
	.word	SYM_LEQ
	.word	SYM_GEQ
	.size	is_comparison, .-is_comparison
	.align	2
	.global	look_for_factor
	.syntax unified
	.arm
	.fpu softvfp
	.type	look_for_factor, %function
look_for_factor:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L516
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L516:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L518
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L518:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L519
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L519:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L520
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L520:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L521
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L521:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L522
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L522:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L523
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L523:
	ldr	r3, .L525
	ldmia	r3, {r0-r1}
	ldr	r3, .L525+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L524
	mov	r2, #0
	mov	r3, #0
	b	.L517
.L524:
	mov	r2, #1
	mov	r3, #0
.L517:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L526:
	.align	2
.L525:
	.word	symbol
	.word	SYM_ASTERISK
	.word	SYM_MINUS
	.word	SYM_IDENTIFIER
	.word	SYM_INTEGER
	.word	SYM_CHARACTER
	.word	SYM_STRING
	.word	SYM_LPARENTHESIS
	.word	SYM_EOF
	.size	look_for_factor, .-look_for_factor
	.align	2
	.global	look_for_statement
	.syntax unified
	.arm
	.fpu softvfp
	.type	look_for_statement, %function
look_for_statement:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L535
	ldmia	r3, {r0-r1}
	ldr	r3, .L535+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L528
	mov	r2, #0
	mov	r3, #0
	b	.L529
.L528:
	ldr	r3, .L535
	ldmia	r3, {r0-r1}
	ldr	r3, .L535+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L530
	mov	r2, #0
	mov	r3, #0
	b	.L529
.L530:
	ldr	r3, .L535
	ldmia	r3, {r0-r1}
	ldr	r3, .L535+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L531
	mov	r2, #0
	mov	r3, #0
	b	.L529
.L531:
	ldr	r3, .L535
	ldmia	r3, {r0-r1}
	ldr	r3, .L535+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L532
	mov	r2, #0
	mov	r3, #0
	b	.L529
.L532:
	ldr	r3, .L535
	ldmia	r3, {r0-r1}
	ldr	r3, .L535+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L533
	mov	r2, #0
	mov	r3, #0
	b	.L529
.L533:
	ldr	r3, .L535
	ldmia	r3, {r0-r1}
	ldr	r3, .L535+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L534
	mov	r2, #0
	mov	r3, #0
	b	.L529
.L534:
	mov	r2, #1
	mov	r3, #0
.L529:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L536:
	.align	2
.L535:
	.word	symbol
	.word	SYM_ASTERISK
	.word	SYM_IDENTIFIER
	.word	SYM_WHILE
	.word	SYM_IF
	.word	SYM_RETURN
	.word	SYM_EOF
	.size	look_for_statement, .-look_for_statement
	.align	2
	.global	look_for_type
	.syntax unified
	.arm
	.fpu softvfp
	.type	look_for_type, %function
look_for_type:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L542
	ldmia	r3, {r0-r1}
	ldr	r3, .L542+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L538
	mov	r2, #0
	mov	r3, #0
	b	.L539
.L538:
	ldr	r3, .L542
	ldmia	r3, {r0-r1}
	ldr	r3, .L542+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L540
	mov	r2, #0
	mov	r3, #0
	b	.L539
.L540:
	ldr	r3, .L542
	ldmia	r3, {r0-r1}
	ldr	r3, .L542+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L541
	mov	r2, #0
	mov	r3, #0
	b	.L539
.L541:
	mov	r2, #1
	mov	r3, #0
.L539:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L543:
	.align	2
.L542:
	.word	symbol
	.word	SYM_UINT64
	.word	SYM_VOID
	.word	SYM_EOF
	.size	look_for_type, .-look_for_type
	.section	.rodata
	.align	2
.LC84:
	.ascii	"out of registers\000"
	.text
	.align	2
	.global	talloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	talloc, %function
talloc:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L548
	ldmia	r3, {r4-r5}
	ldr	r3, .L548+4
	ldmia	r3, {r2-r3}
	cmp	r5, r3
	cmpeq	r4, r2
	bcs	.L545
	ldr	r3, .L548
	ldmia	r3, {r2-r3}
	adds	r0, r2, #1
	adc	r1, r3, #0
	ldr	r3, .L548
	stm	r3, {r0-r1}
	b	.L547
.L545:
	ldr	r0, .L548+8
	bl	syntax_error_message
	ldr	r3, .L548+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L547:
	nop
	pop	{r4, r5, fp, pc}
.L549:
	.align	2
.L548:
	.word	allocated_temporaries
	.word	NUMBEROFTEMPORARIES
	.word	.LC84
	.word	EXITCODE_COMPILERERROR
	.size	talloc, .-talloc
	.section	.rodata
	.align	2
.LC85:
	.ascii	"illegal register access\000"
	.text
	.align	2
	.global	current_temporary
	.syntax unified
	.arm
	.fpu softvfp
	.type	current_temporary, %function
current_temporary:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	ldr	ip, .L554
	ldmia	ip, {r4-r5}
	orrs	ip, r4, r5
	beq	.L551
	ldr	ip, .L554
	ldmia	ip, {r4-r5}
	cmp	r5, #0
	cmpeq	r4, #3
	bhi	.L552
	ldr	r1, .L554+4
	ldmia	r1, {r4-r5}
	ldr	r1, .L554
	ldmia	r1, {r0-r1}
	adds	r2, r4, r0
	adc	r3, r5, r1
	b	.L550
.L552:
	ldr	ip, .L554+8
	ldmia	ip, {r6-r7}
	ldr	ip, .L554
	ldmia	ip, {r4-r5}
	adds	r0, r6, r4
	adc	r1, r7, r5
	subs	r2, r0, #3
	sbc	r3, r1, #0
	b	.L550
.L551:
	ldr	r0, .L554+12
	bl	syntax_error_message
	ldr	r3, .L554+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L550:
	mov	r0, r2
	mov	r1, r3
	pop	{r4, r5, r6, r7, fp, pc}
.L555:
	.align	2
.L554:
	.word	allocated_temporaries
	.word	REG_TP
	.word	REG_S11
	.word	.LC85
	.word	EXITCODE_COMPILERERROR
	.size	current_temporary, .-current_temporary
	.align	2
	.global	previous_temporary
	.syntax unified
	.arm
	.fpu softvfp
	.type	previous_temporary, %function
previous_temporary:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L560
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #1
	bls	.L557
	ldr	r3, .L560
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #4
	bne	.L558
	ldr	r3, .L560+4
	ldmia	r3, {r4-r5}
	b	.L559
.L558:
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	subs	r4, r2, #1
	sbc	r5, r3, #0
	b	.L559
.L557:
	ldr	r0, .L560+8
	bl	syntax_error_message
	ldr	r3, .L560+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L556
.L559:
	mov	r2, r4
	mov	r3, r5
.L556:
	mov	r0, r2
	mov	r1, r3
	pop	{r4, r5, fp, pc}
.L561:
	.align	2
.L560:
	.word	allocated_temporaries
	.word	REG_T2
	.word	.LC85
	.word	EXITCODE_COMPILERERROR
	.size	previous_temporary, .-previous_temporary
	.align	2
	.global	next_temporary
	.syntax unified
	.arm
	.fpu softvfp
	.type	next_temporary, %function
next_temporary:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L566
	ldmia	r3, {r0-r1}
	ldr	r3, .L566+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcs	.L563
	ldr	r3, .L566
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #3
	bne	.L564
	ldr	r3, .L566+8
	ldmia	r3, {r4-r5}
	b	.L565
.L564:
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	adds	r4, r2, #1
	adc	r5, r3, #0
	b	.L565
.L563:
	ldr	r0, .L566+12
	bl	syntax_error_message
	ldr	r3, .L566+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L562
.L565:
	mov	r2, r4
	mov	r3, r5
.L562:
	mov	r0, r2
	mov	r1, r3
	pop	{r4, r5, fp, pc}
.L567:
	.align	2
.L566:
	.word	allocated_temporaries
	.word	NUMBEROFTEMPORARIES
	.word	REG_T3
	.word	.LC84
	.word	EXITCODE_COMPILERERROR
	.size	next_temporary, .-next_temporary
	.section	.rodata
	.align	2
.LC86:
	.ascii	"illegal register deallocation\000"
	.text
	.align	2
	.global	tfree
	.syntax unified
	.arm
	.fpu softvfp
	.type	tfree, %function
tfree:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #8
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L572
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bhi	.L569
	ldr	r3, .L572
	ldmia	r3, {r0-r1}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	ldr	r3, .L572
	stm	r3, {r4-r5}
	b	.L571
.L569:
	ldr	r0, .L572+4
	bl	syntax_error_message
	ldr	r3, .L572+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L571:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L573:
	.align	2
.L572:
	.word	allocated_temporaries
	.word	.LC86
	.word	EXITCODE_COMPILERERROR
	.size	tfree, .-tfree
	.align	2
	.global	save_temporaries
	.syntax unified
	.arm
	.fpu softvfp
	.type	save_temporaries, %function
save_temporaries:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #8
	b	.L575
.L576:
	ldr	r3, .L577
	ldmia	r3, {r0-r1}
	ldr	r3, .L577
	ldmia	r3, {r4-r5}
	ldr	r3, .L577+4
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L577
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	emit_sd
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L575:
	ldr	r3, .L577+8
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L576
	nop
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L578:
	.align	2
.L577:
	.word	REG_SP
	.word	REGISTERSIZE
	.word	allocated_temporaries
	.size	save_temporaries, .-save_temporaries
	.align	2
	.global	restore_temporaries
	.syntax unified
	.arm
	.fpu softvfp
	.type	restore_temporaries, %function
restore_temporaries:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	b	.L580
.L581:
	bl	talloc
	bl	current_temporary
	ldr	r3, .L582
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L582
	ldmia	r3, {r0-r1}
	ldr	r3, .L582
	ldmia	r3, {r4-r5}
	ldr	r3, .L582+4
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
.L580:
	ldr	r3, .L582+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bhi	.L581
	nop
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L583:
	.align	2
.L582:
	.word	REG_SP
	.word	REGISTERSIZE
	.word	allocated_temporaries
	.size	restore_temporaries, .-restore_temporaries
	.align	2
	.global	syntax_error_symbol
	.syntax unified
	.arm
	.fpu softvfp
	.type	syntax_error_symbol, %function
syntax_error_symbol:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L585
	ldmia	r3, {r2-r3}
	ldr	r0, .L585+4
	bl	print_line_number
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_symbol
	ldr	r0, .L585+8
	bl	print
	ldr	r3, .L585+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_symbol
	ldr	r0, .L585+16
	bl	print
	ldr	r3, .L585+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L586:
	.align	2
.L585:
	.word	line_number
	.word	.LC70
	.word	.LC72
	.word	symbol
	.word	.LC73
	.word	EXITCODE_SCANNERERROR
	.size	syntax_error_symbol, .-syntax_error_symbol
	.section	.rodata
	.align	2
.LC87:
	.ascii	"unexpected symbol \000"
	.text
	.align	2
	.global	syntax_error_unexpected
	.syntax unified
	.arm
	.fpu softvfp
	.type	syntax_error_unexpected, %function
syntax_error_unexpected:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L588
	ldmia	r3, {r2-r3}
	ldr	r0, .L588+4
	bl	print_line_number
	ldr	r0, .L588+8
	bl	print
	ldr	r3, .L588+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_symbol
	ldr	r0, .L588+16
	bl	print
	ldr	r3, .L588+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	nop
	pop	{fp, pc}
.L589:
	.align	2
.L588:
	.word	line_number
	.word	.LC70
	.word	.LC87
	.word	symbol
	.word	.LC73
	.word	EXITCODE_SCANNERERROR
	.size	syntax_error_unexpected, .-syntax_error_unexpected
	.section	.rodata
	.align	2
.LC88:
	.ascii	"uint64_t*\000"
	.align	2
.LC89:
	.ascii	"unknown\000"
	.text
	.align	2
	.global	print_type
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_type, %function
print_type:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L596
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L591
	ldr	r0, .L596+4
	bl	print
	b	.L595
.L591:
	ldr	r3, .L596+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L593
	ldr	r0, .L596+12
	bl	print
	b	.L595
.L593:
	ldr	r3, .L596+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L594
	ldr	r0, .L596+20
	bl	print
	b	.L595
.L594:
	ldr	r0, .L596+24
	bl	print
.L595:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L597:
	.align	2
.L596:
	.word	UINT64_T
	.word	.LC3
	.word	UINT64STAR_T
	.word	.LC88
	.word	VOID_T
	.word	.LC2
	.word	.LC89
	.size	print_type, .-print_type
	.section	.rodata
	.align	2
.LC90:
	.ascii	"warning\000"
	.align	2
.LC91:
	.ascii	"type mismatch, \000"
	.text
	.align	2
	.global	type_warning
	.syntax unified
	.arm
	.fpu softvfp
	.type	type_warning, %function
type_warning:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L599
	ldmia	r3, {r2-r3}
	ldr	r0, .L599+4
	bl	print_line_number
	ldr	r0, .L599+8
	bl	print
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_type
	ldr	r0, .L599+12
	bl	print
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	print_type
	ldr	r0, .L599+16
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L600:
	.align	2
.L599:
	.word	line_number
	.word	.LC90
	.word	.LC91
	.word	.LC72
	.word	.LC73
	.size	type_warning, .-type_warning
	.section	.rodata
	.align	2
.LC92:
	.ascii	"%s undeclared\012\000"
	.text
	.align	2
	.global	get_variable_or_big_int
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_variable_or_big_int, %function
get_variable_or_big_int:
	@ 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	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L605
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L602
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-16]
	bl	search_global_symbol_table
	mov	r3, r0
	b	.L603
.L602:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-16]
	bl	get_scoped_symbol_table_entry
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L604
	ldr	r3, .L605+4
	ldmia	r3, {r2-r3}
	ldr	r0, .L605+8
	bl	print_line_number
	ldr	r1, [fp, #-16]
	ldr	r0, .L605+12
	bl	printf1
	ldr	r3, .L605+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L604:
	ldr	r3, [fp, #-8]
.L603:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L606:
	.align	2
.L605:
	.word	BIGINT
	.word	line_number
	.word	.LC70
	.word	.LC92
	.word	EXITCODE_PARSERERROR
	.size	get_variable_or_big_int, .-get_variable_or_big_int
	.align	2
	.global	load_upper_base_address
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_upper_base_address, %function
load_upper_base_address:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #32
	str	r0, [fp, #-40]
	ldr	r0, [fp, #-40]
	bl	get_address
	mov	r2, #12
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	bl	get_bits
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	ldr	r0, [fp, #-40]
	bl	get_address
	mov	r2, #20
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r0, #11
	mov	r1, #0
	bl	two_to_the_power_of
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcc	.L608
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
.L608:
	bl	talloc
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_lui
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r0, [fp, #-40]
	bl	get_scope
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_add
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	load_upper_base_address, .-load_upper_base_address
	.align	2
	.global	load_variable_or_big_int
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_variable_or_big_int, %function
load_variable_or_big_int:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-40]
	bl	get_variable_or_big_int
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-32]
	bl	get_address
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	is_signed_integer
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L610
	bl	talloc
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r0, [fp, #-32]
	bl	get_scope
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_ld
	b	.L611
.L610:
	ldr	r0, [fp, #-32]
	bl	load_upper_base_address
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	mov	r2, #12
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, #12
	mov	r3, #0
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_ld
.L611:
	ldr	r0, [fp, #-32]
	bl	get_type
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	load_variable_or_big_int, .-load_variable_or_big_int
	.align	2
	.global	load_integer
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_integer, %function
load_integer:
	@ 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, #72
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	is_signed_integer
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L614
	bl	talloc
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L621
	ldmia	r3, {r0-r1}
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	b	.L620
.L614:
	mov	r2, #32
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	is_signed_integer
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L616
	mov	r2, #12
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #20
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	bl	talloc
	mov	r0, #11
	mov	r1, #0
	bl	two_to_the_power_of
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bcc	.L617
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	str	r6, [fp, #-36]
	str	r7, [fp, #-32]
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_lui
	mov	r0, #19
	mov	r1, #0
	bl	two_to_the_power_of
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	bne	.L618
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L621
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	mov	r0, r6
	mov	r1, r7
	bl	emit_sub
	b	.L618
.L617:
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_lui
.L618:
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	b	.L620
.L616:
	ldr	r3, .L621+4
	ldr	r1, [r3]
	ldr	r3, .L621+8
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	search_global_symbol_table
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L619
	ldr	r3, .L621+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L621+16
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L621+12
	stm	r3, {r4-r5}
	ldr	r3, .L621+20
	ldmia	r3, {r8-r9}
	ldr	r3, .L621+4
	ldr	ip, [r3]
	ldr	r3, .L621+24
	ldmia	r3, {r2-r3}
	ldr	r1, .L621+8
	ldmia	r1, {r0-r1}
	ldr	lr, .L621+28
	ldmia	lr, {r4-r5}
	ldr	lr, .L621+12
	ldmia	lr, {r6-r7}
	rsbs	r6, r6, #0
	rsc	r7, r7, #0
	str	r6, [sp, #32]
	str	r7, [sp, #36]
	sub	r7, fp, #60
	ldmia	r7, {r6-r7}
	str	r6, [sp, #24]
	str	r7, [sp, #28]
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, ip
	mov	r0, r8
	mov	r1, r9
	bl	create_symbol_table_entry
.L619:
	ldr	r3, .L621+4
	ldr	r1, [r3]
	ldr	r3, .L621+8
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	load_variable_or_big_int
.L620:
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L622:
	.align	2
.L621:
	.word	REG_ZR
	.word	integer
	.word	BIGINT
	.word	allocated_memory
	.word	REGISTERSIZE
	.word	GLOBAL_TABLE
	.word	line_number
	.word	UINT64_T
	.size	load_integer, .-load_integer
	.align	2
	.global	load_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_string, %function
load_string:
	@ args = 0, pretend = 0, frame = 16
	@ 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, #-40]
	ldr	r0, [fp, #-40]
	bl	string_length
	mov	r2, r0
	mov	r3, r1
	adds	r6, r2, #1
	adc	r7, r3, #0
	str	r6, [fp, #-36]
	str	r7, [fp, #-32]
	ldr	r3, .L624
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	round_up
	ldr	r3, .L624+4
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L624+4
	stm	r3, {r4-r5}
	ldr	r3, .L624+8
	ldmia	r3, {r8-r9}
	ldr	r3, .L624+12
	ldmia	r3, {r2-r3}
	ldr	r1, .L624+16
	ldmia	r1, {r0-r1}
	ldr	ip, .L624+20
	ldmia	ip, {r4-r5}
	ldr	ip, .L624+4
	ldmia	ip, {r6-r7}
	rsbs	r6, r6, #0
	rsc	r7, r7, #0
	str	r6, [sp, #32]
	str	r7, [sp, #36]
	mov	r6, #0
	mov	r7, #0
	str	r6, [sp, #24]
	str	r7, [sp, #28]
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-40]
	mov	r0, r8
	mov	r1, r9
	bl	create_symbol_table_entry
	ldr	r3, .L624+4
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	mov	r0, r2
	mov	r1, r3
	bl	load_integer
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L624+24
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	mov	r0, r6
	mov	r1, r7
	bl	emit_add
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L625:
	.align	2
.L624:
	.word	REGISTERSIZE
	.word	allocated_memory
	.word	GLOBAL_TABLE
	.word	line_number
	.word	STRING
	.word	UINT64STAR_T
	.word	REG_GP
	.size	load_string, .-load_string
	.align	2
	.global	help_call_codegen
	.syntax unified
	.arm
	.fpu softvfp
	.type	help_call_codegen, %function
help_call_codegen:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #56
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L627
	ldr	r3, .L632
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L632+4
	ldmia	r3, {r6-r7}
	ldr	r3, .L632+8
	ldmia	r3, {r2-r3}
	ldr	r1, .L632+12
	ldmia	r1, {r0-r1}
	ldr	ip, .L632+16
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	sub	r5, fp, #28
	ldmia	r5, {r4-r5}
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-36]
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L632+20
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	emit_jal
	b	.L628
.L627:
	ldr	r0, [fp, #-32]
	bl	get_type
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	ldr	r0, [fp, #-32]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L629
	ldr	r3, .L632+16
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	bl	set_address
	ldr	r3, .L632+20
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	emit_jal
	b	.L628
.L629:
	ldr	r0, [fp, #-32]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	load_instruction
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	get_opcode
	ldr	r3, .L632+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L630
	ldr	r3, .L632+20
	ldmia	r3, {r4-r5}
	ldr	r0, [fp, #-32]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_jal
	ldr	r3, .L632+16
	ldmia	r3, {r0-r1}
	ldr	r3, .L632+28
	ldmia	r3, {r2-r3}
	subs	r6, r0, r2
	sbc	r7, r1, r3
	mov	r2, r6
	mov	r3, r7
	ldr	r0, [fp, #-32]
	bl	set_address
	b	.L628
.L630:
	ldr	r3, .L632+20
	ldmia	r3, {r6-r7}
	ldr	r0, [fp, #-32]
	bl	get_address
	ldr	r3, .L632+16
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	mov	r2, r4
	mov	r3, r5
	mov	r0, r6
	mov	r1, r7
	bl	emit_jal
.L628:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L633:
	.align	2
.L632:
	.word	UINT64_T
	.word	GLOBAL_TABLE
	.word	line_number
	.word	PROCEDURE
	.word	binary_length
	.word	REG_RA
	.word	OP_JAL
	.word	INSTRUCTIONSIZE
	.size	help_call_codegen, .-help_call_codegen
	.align	2
	.global	help_procedure_prologue
	.syntax unified
	.arm
	.fpu softvfp
	.type	help_procedure_prologue, %function
help_procedure_prologue:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	ldr	r3, .L638
	ldmia	r3, {r0-r1}
	ldr	r3, .L638
	ldmia	r3, {r4-r5}
	ldr	r3, .L638+4
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L638
	ldmia	r3, {r0-r1}
	ldr	r3, .L638+8
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	bl	emit_sd
	ldr	r3, .L638
	ldmia	r3, {r0-r1}
	ldr	r3, .L638
	ldmia	r3, {r4-r5}
	ldr	r3, .L638+4
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L638
	ldmia	r3, {r0-r1}
	ldr	r3, .L638+12
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	bl	emit_sd
	ldr	r3, .L638+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L638
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L637
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	rsbs	r0, r2, #0
	rsc	r1, r3, #0
	mov	r2, #12
	mov	r3, #0
	bl	is_signed_integer
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L636
	ldr	r3, .L638
	ldmia	r3, {r0-r1}
	ldr	r3, .L638
	ldmia	r3, {r4-r5}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	b	.L637
.L636:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	mov	r0, r2
	mov	r1, r3
	bl	load_integer
	ldr	r3, .L638
	ldmia	r3, {r4-r5}
	ldr	r3, .L638
	ldmia	r3, {r6-r7}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_add
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L637:
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L639:
	.align	2
.L638:
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_RA
	.word	REG_FP
	.size	help_procedure_prologue, .-help_procedure_prologue
	.align	2
	.global	help_procedure_epilogue
	.syntax unified
	.arm
	.fpu softvfp
	.type	help_procedure_epilogue, %function
help_procedure_epilogue:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #16
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	ldr	r3, .L641
	ldmia	r3, {r0-r1}
	ldr	r3, .L641+4
	ldmia	r3, {r2-r3}
	mov	r6, #0
	mov	r7, #0
	stm	sp, {r6-r7}
	bl	emit_addi
	ldr	r3, .L641+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L641
	ldmia	r3, {r2-r3}
	mov	r6, #0
	mov	r7, #0
	stm	sp, {r6-r7}
	bl	emit_ld
	ldr	r3, .L641
	ldmia	r3, {r0-r1}
	ldr	r3, .L641
	ldmia	r3, {r6-r7}
	ldr	r3, .L641+8
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	bl	emit_addi
	ldr	r3, .L641+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L641
	ldmia	r3, {r2-r3}
	mov	r6, #0
	mov	r7, #0
	stm	sp, {r6-r7}
	bl	emit_ld
	ldr	r3, .L641
	ldmia	r3, {r6-r7}
	ldr	r3, .L641
	ldmia	r3, {r8-r9}
	ldr	r3, .L641+8
	ldmia	r3, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	stm	sp, {r4-r5}
	mov	r2, r8
	mov	r3, r9
	mov	r0, r6
	mov	r1, r7
	bl	emit_addi
	ldr	r3, .L641+16
	ldmia	r3, {r0-r1}
	ldr	r3, .L641+12
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L642:
	.align	2
.L641:
	.word	REG_SP
	.word	REG_FP
	.word	REGISTERSIZE
	.word	REG_RA
	.word	REG_ZR
	.size	help_procedure_epilogue, .-help_procedure_epilogue
	.align	2
	.global	compile_call
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_call, %function
compile_call:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	str	r0, [fp, #-48]
	ldr	r3, .L651
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-48]
	bl	get_scoped_symbol_table_entry
	str	r0, [fp, #-40]
	ldr	r3, .L651+4
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	bl	save_temporaries
	bl	is_expression
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L644
	bl	compile_expression
	ldr	r3, .L651+8
	ldmia	r3, {r0-r1}
	ldr	r3, .L651+8
	ldmia	r3, {r6-r7}
	ldr	r3, .L651+12
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	bl	emit_addi
	ldr	r3, .L651+8
	ldmia	r3, {r6-r7}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	emit_sd
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L645
.L646:
	bl	get_symbol
	bl	compile_expression
	ldr	r3, .L651+8
	ldmia	r3, {r0-r1}
	ldr	r3, .L651+8
	ldmia	r3, {r6-r7}
	ldr	r3, .L651+12
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	bl	emit_addi
	ldr	r3, .L651+8
	ldmia	r3, {r6-r7}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	emit_sd
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L645:
	ldr	r3, .L651+16
	ldmia	r3, {r0-r1}
	ldr	r3, .L651+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L646
	ldr	r3, .L651+16
	ldmia	r3, {r0-r1}
	ldr	r3, .L651+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L647
	bl	get_symbol
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	help_call_codegen
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	b	.L648
.L647:
	ldr	r3, .L651+24
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L651+28
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L648
.L644:
	ldr	r3, .L651+16
	ldmia	r3, {r0-r1}
	ldr	r3, .L651+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L649
	bl	get_symbol
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	help_call_codegen
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	b	.L648
.L649:
	ldr	r3, .L651+24
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L651+28
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
.L648:
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	restore_temporaries
	ldr	r3, .L651+32
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L651+32
	stm	r3, {r4-r5}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L652:
	.align	2
.L651:
	.word	PROCEDURE
	.word	allocated_temporaries
	.word	REG_SP
	.word	REGISTERSIZE
	.word	symbol
	.word	SYM_COMMA
	.word	SYM_RPARENTHESIS
	.word	UINT64_T
	.word	number_of_calls
	.size	compile_call, .-compile_call
	.align	2
	.global	compile_factor
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_factor, %function
compile_factor:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #56
	b	.L654
.L656:
	bl	syntax_error_unexpected
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L655
	ldr	r3, .L681+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L654
.L655:
	bl	get_symbol
.L654:
	bl	look_for_factor
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L656
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L657
	bl	get_symbol
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L658
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	bl	compile_type
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L659
	bl	get_symbol
	b	.L660
.L659:
	ldr	r3, .L681+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L660
.L658:
	bl	compile_expression
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L661
	bl	get_symbol
	b	.L662
.L661:
	ldr	r3, .L681+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L662:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	b	.L663
.L657:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
.L660:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L664
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r1, .L681+28
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	bl	get_symbol
	ldr	r1, .L681+28
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	b	.L665
.L664:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
.L665:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L666
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	bl	get_symbol
	b	.L667
.L666:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
.L667:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+36
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L668
	ldr	r3, .L681+40
	ldr	r3, [r3]
	str	r3, [fp, #-64]
	bl	get_symbol
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L669
	bl	get_symbol
	ldr	r0, [fp, #-64]
	bl	compile_call
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	bl	talloc
	bl	current_temporary
	ldr	r3, .L681+44
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	ldr	r3, .L681+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+48
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	b	.L670
.L669:
	ldr	r3, .L681+52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-64]
	bl	load_variable_or_big_int
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	b	.L670
.L668:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+56
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L671
	ldr	r3, .L681+60
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	load_integer
	bl	get_symbol
	ldr	r3, .L681+64
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L670
.L671:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+68
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L672
	bl	talloc
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L681+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	bl	get_symbol
	ldr	r3, .L681+64
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L670
.L672:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+72
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L673
	ldr	r3, .L681+76
	ldr	r3, [r3]
	mov	r0, r3
	bl	load_string
	bl	get_symbol
	ldr	r3, .L681+80
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L670
.L673:
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L674
	bl	get_symbol
	bl	compile_expression
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, .L681
	ldmia	r3, {r0-r1}
	ldr	r3, .L681+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L675
	bl	get_symbol
	b	.L670
.L675:
	ldr	r3, .L681+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L670
.L674:
	bl	syntax_error_unexpected
	ldr	r3, .L681+64
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
.L670:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L676
	ldr	r3, .L681+80
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L677
	ldr	r3, .L681+80
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	bl	type_warning
.L677:
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	mov	r1, #0
	stm	sp, {r0-r1}
	mov	r0, r4
	mov	r1, r5
	bl	emit_ld
	ldr	r3, .L681+64
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
.L676:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L678
	ldr	r3, .L681+64
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L679
	ldr	r3, .L681+64
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	bl	type_warning
	ldr	r3, .L681+64
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
.L679:
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L681+48
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	mov	r0, r6
	mov	r1, r7
	bl	emit_sub
.L678:
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L680
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	b	.L663
.L680:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
.L663:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L682:
	.align	2
.L681:
	.word	symbol
	.word	SYM_EOF
	.word	EXITCODE_PARSERERROR
	.word	SYM_LPARENTHESIS
	.word	SYM_UINT64
	.word	SYM_RPARENTHESIS
	.word	SYM_MINUS
	.word	integer_is_signed
	.word	SYM_ASTERISK
	.word	SYM_IDENTIFIER
	.word	identifier
	.word	REG_A0
	.word	REG_ZR
	.word	VARIABLE
	.word	SYM_INTEGER
	.word	literal
	.word	UINT64_T
	.word	SYM_CHARACTER
	.word	SYM_STRING
	.word	string
	.word	UINT64STAR_T
	.size	compile_factor, .-compile_factor
	.align	2
	.global	compile_term
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_term, %function
compile_term:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #32
	bl	compile_factor
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	b	.L684
.L689:
	ldr	r3, .L691
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	get_symbol
	bl	compile_factor
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L685
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	type_warning
.L685:
	ldr	r3, .L691+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L686
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_mul
	b	.L687
.L686:
	ldr	r3, .L691+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L688
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_divu
	b	.L687
.L688:
	ldr	r3, .L691+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L687
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_remu
.L687:
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L684:
	bl	is_star_or_div_or_modulo
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L689
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L692:
	.align	2
.L691:
	.word	symbol
	.word	SYM_ASTERISK
	.word	SYM_DIV
	.word	SYM_MOD
	.size	compile_term, .-compile_term
	.section	.rodata
	.align	2
.LC93:
	.ascii	"(uint64_t*) + (uint64_t*) is undefined\000"
	.align	2
.LC94:
	.ascii	"(uint64_t) - (uint64_t*) is undefined\000"
	.text
	.align	2
	.global	compile_simple_expression
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_simple_expression, %function
compile_simple_expression:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #32
	bl	compile_term
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	b	.L694
.L703:
	ldr	r3, .L705
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	get_symbol
	bl	compile_term
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	ldr	r3, .L705+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L695
	ldr	r3, .L705+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L696
	ldr	r3, .L705+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L697
	bl	current_temporary
	mov	r2, #3
	mov	r3, #0
	bl	emit_left_shift_by
	b	.L698
.L697:
	ldr	r0, .L705+16
	bl	syntax_error_message
	b	.L698
.L696:
	ldr	r3, .L705+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L698
	bl	previous_temporary
	mov	r2, #3
	mov	r3, #0
	bl	emit_left_shift_by
	ldr	r3, .L705+8
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
.L698:
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_add
	b	.L699
.L695:
	ldr	r3, .L705+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L699
	ldr	r3, .L705+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L700
	ldr	r3, .L705+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L701
	bl	current_temporary
	mov	r2, #3
	mov	r3, #0
	bl	emit_left_shift_by
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sub
	b	.L699
.L701:
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sub
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L705+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L705+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_divu
	ldr	r3, .L705+12
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L699
.L700:
	ldr	r3, .L705+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L702
	ldr	r0, .L705+32
	bl	syntax_error_message
	b	.L699
.L702:
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sub
.L699:
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L694:
	bl	is_plus_or_minus
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L703
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L706:
	.align	2
.L705:
	.word	symbol
	.word	SYM_PLUS
	.word	UINT64STAR_T
	.word	UINT64_T
	.word	.LC93
	.word	SYM_MINUS
	.word	REG_ZR
	.word	SIZEOFUINT64
	.word	.LC94
	.size	compile_simple_expression, .-compile_simple_expression
	.align	2
	.global	compile_expression
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_expression, %function
compile_expression:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #32
	bl	compile_simple_expression
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	bl	is_comparison
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L708
	ldr	r3, .L716
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	get_symbol
	bl	compile_simple_expression
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L709
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	type_warning
.L709:
	ldr	r3, .L716+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L710
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_xor
	bl	current_temporary
	ldr	r3, .L716+8
	ldmia	r3, {r2-r3}
	mov	r4, #1
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sltu
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L708
.L710:
	ldr	r3, .L716+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L711
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_xor
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L716+8
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	mov	r0, r6
	mov	r1, r7
	bl	emit_sltu
	b	.L708
.L711:
	ldr	r3, .L716+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L712
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sltu
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L708
.L712:
	ldr	r3, .L716+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L713
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sltu
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L708
.L713:
	ldr	r3, .L716+24
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L714
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sltu
	bl	current_temporary
	ldr	r3, .L716+8
	ldmia	r3, {r2-r3}
	mov	r4, #1
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sub
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L708
.L714:
	ldr	r3, .L716+28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L708
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sltu
	bl	current_temporary
	ldr	r3, .L716+8
	ldmia	r3, {r2-r3}
	mov	r4, #1
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_sub
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L708:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L717:
	.align	2
.L716:
	.word	symbol
	.word	SYM_EQUALITY
	.word	REG_ZR
	.word	SYM_NOTEQ
	.word	SYM_LT
	.word	SYM_GT
	.word	SYM_LEQ
	.word	SYM_GEQ
	.size	compile_expression, .-compile_expression
	.align	2
	.global	compile_while
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_while, %function
compile_while:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	ldr	r3, .L728
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, .L728+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L728+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L719
	bl	get_symbol
	ldr	r3, .L728+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L728+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L720
	bl	get_symbol
	bl	compile_expression
	ldr	r3, .L728
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	bl	current_temporary
	ldr	r3, .L728+16
	ldmia	r3, {r2-r3}
	mov	r8, #0
	mov	r9, #0
	stm	sp, {r8-r9}
	bl	emit_beq
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	ldr	r3, .L728+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L728+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L721
	bl	get_symbol
	ldr	r3, .L728+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L728+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L722
	bl	get_symbol
	b	.L723
.L724:
	bl	compile_statement
.L723:
	bl	is_not_rbrace_or_eof
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L724
	ldr	r3, .L728+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L728+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L725
	bl	get_symbol
	b	.L726
.L725:
	ldr	r3, .L728+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L728+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L726
.L722:
	bl	compile_statement
	b	.L726
.L721:
	ldr	r3, .L728+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L726
.L720:
	ldr	r3, .L728+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L726
.L719:
	ldr	r3, .L728+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L726:
	ldr	r3, .L728+16
	ldmia	r3, {r8-r9}
	ldr	r3, .L728
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	subs	r6, r0, r2
	sbc	r7, r1, r3
	mov	r2, r6
	mov	r3, r7
	mov	r0, r8
	mov	r1, r9
	bl	emit_jal
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L727
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	fixup_relative_BFormat
.L727:
	ldr	r3, .L728+36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L728+36
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L729:
	.align	2
.L728:
	.word	binary_length
	.word	symbol
	.word	SYM_WHILE
	.word	SYM_LPARENTHESIS
	.word	REG_ZR
	.word	SYM_RPARENTHESIS
	.word	SYM_LBRACE
	.word	SYM_RBRACE
	.word	EXITCODE_PARSERERROR
	.word	number_of_while
	.size	compile_while, .-compile_while
	.align	2
	.global	compile_if
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_if, %function
compile_if:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #24
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L731
	bl	get_symbol
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L732
	bl	get_symbol
	bl	compile_expression
	ldr	r3, .L746+12
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	current_temporary
	ldr	r3, .L746+16
	ldmia	r3, {r2-r3}
	mov	r6, #0
	mov	r7, #0
	stm	sp, {r6-r7}
	bl	emit_beq
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L733
	bl	get_symbol
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L734
	bl	get_symbol
	b	.L735
.L736:
	bl	compile_statement
.L735:
	bl	is_not_rbrace_or_eof
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L736
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L737
	bl	get_symbol
	b	.L738
.L737:
	ldr	r3, .L746+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L746+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L738
.L734:
	bl	compile_statement
.L738:
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+36
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L739
	bl	get_symbol
	ldr	r3, .L746+12
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L746+16
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	emit_jal
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	fixup_relative_BFormat
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L740
	bl	get_symbol
	b	.L741
.L742:
	bl	compile_statement
.L741:
	bl	is_not_rbrace_or_eof
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L742
	ldr	r3, .L746
	ldmia	r3, {r0-r1}
	ldr	r3, .L746+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L743
	bl	get_symbol
	b	.L744
.L743:
	ldr	r3, .L746+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L746+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L744
.L740:
	bl	compile_statement
.L744:
	ldr	r3, .L746+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	fixup_relative_JFormat
	b	.L745
.L739:
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	fixup_relative_BFormat
	b	.L745
.L733:
	ldr	r3, .L746+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L745
.L732:
	ldr	r3, .L746+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L745
.L731:
	ldr	r3, .L746+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L745:
	ldr	r3, .L746+40
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L746+40
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L747:
	.align	2
.L746:
	.word	symbol
	.word	SYM_IF
	.word	SYM_LPARENTHESIS
	.word	binary_length
	.word	REG_ZR
	.word	SYM_RPARENTHESIS
	.word	SYM_LBRACE
	.word	SYM_RBRACE
	.word	EXITCODE_PARSERERROR
	.word	SYM_ELSE
	.word	number_of_if
	.size	compile_if, .-compile_if
	.align	2
	.global	compile_return
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_return, %function
compile_return:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #16
	ldr	r3, .L754
	ldmia	r3, {r0-r1}
	ldr	r3, .L754+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L749
	bl	get_symbol
	b	.L750
.L749:
	ldr	r3, .L754+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L750:
	ldr	r3, .L754
	ldmia	r3, {r0-r1}
	ldr	r3, .L754+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L751
	bl	compile_expression
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	ldr	r3, .L754+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L752
	ldr	r3, .L754+12
	ldmia	r3, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	bl	type_warning
.L752:
	ldr	r3, .L754+16
	ldmia	r3, {r8-r9}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	mov	r1, #0
	stm	sp, {r0-r1}
	mov	r0, r8
	mov	r1, r9
	bl	emit_addi
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L753
.L751:
	ldr	r3, .L754+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L754+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L753
	ldr	r3, .L754+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L754+20
	ldmia	r3, {r2-r3}
	bl	type_warning
.L753:
	ldr	r3, .L754+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L754+28
	ldmia	r3, {r2-r3}
	bl	emit_jal
	ldr	r3, .L754+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L754+36
	ldmia	r3, {r2-r3}
	subs	r6, r0, r2
	sbc	r7, r1, r3
	ldr	r3, .L754+28
	stm	r3, {r6-r7}
	ldr	r3, .L754+40
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L754+40
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L755:
	.align	2
.L754:
	.word	symbol
	.word	SYM_RETURN
	.word	SYM_SEMICOLON
	.word	return_type
	.word	REG_A0
	.word	VOID_T
	.word	REG_ZR
	.word	return_branches
	.word	binary_length
	.word	INSTRUCTIONSIZE
	.word	number_of_return
	.size	compile_return, .-compile_return
	.align	2
	.global	compile_statement
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_statement, %function
compile_statement:
	@ 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, #40
	b	.L757
.L759:
	bl	syntax_error_unexpected
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L758
	ldr	r3, .L787+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L757
.L758:
	bl	get_symbol
.L757:
	bl	look_for_statement
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L759
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L760
	bl	get_symbol
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L761
	ldr	r3, .L787+20
	ldr	r1, [r3]
	ldr	r3, .L787+24
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	load_variable_or_big_int
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, .L787+28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L762
	ldr	r3, .L787+28
	ldmia	r3, {r0-r1}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	bl	type_warning
.L762:
	bl	get_symbol
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L763
	bl	get_symbol
	bl	compile_expression
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, .L787+36
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L764
	ldr	r3, .L787+36
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	bl	type_warning
.L764:
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	emit_sd
	mov	r0, #2
	mov	r1, #0
	bl	tfree
	ldr	r3, .L787+40
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	ldr	r3, .L787+40
	stm	r3, {r8-r9}
	b	.L765
.L763:
	ldr	r3, .L787+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L765:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L766
	bl	get_symbol
	b	.L786
.L766:
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L786
.L761:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+48
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L768
	bl	get_symbol
	bl	compile_expression
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, .L787+28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L769
	ldr	r3, .L787+28
	ldmia	r3, {r0-r1}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	bl	type_warning
.L769:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+52
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L770
	bl	get_symbol
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L771
	bl	get_symbol
	bl	compile_expression
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, .L787+36
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L772
	ldr	r3, .L787+36
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	bl	type_warning
.L772:
	bl	previous_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	emit_sd
	mov	r0, #2
	mov	r1, #0
	bl	tfree
	ldr	r3, .L787+40
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	ldr	r3, .L787+40
	stm	r3, {r6-r7}
	b	.L773
.L771:
	ldr	r3, .L787+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	mov	r0, #1
	mov	r1, #0
	bl	tfree
.L773:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L774
	bl	get_symbol
	b	.L786
.L774:
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L786
.L770:
	ldr	r3, .L787+52
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L786
.L768:
	ldr	r3, .L787+48
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L786
.L760:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L775
	ldr	r3, .L787+20
	ldr	r3, [r3]
	str	r3, [fp, #-60]
	bl	get_symbol
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+48
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L776
	bl	get_symbol
	ldr	r0, [fp, #-60]
	bl	compile_call
	ldr	r3, .L787+56
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+60
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L777
	bl	get_symbol
	b	.L786
.L777:
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L786
.L776:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L778
	ldr	r3, .L787+24
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-60]
	bl	get_variable_or_big_int
	str	r0, [fp, #-56]
	ldr	r0, [fp, #-56]
	bl	get_type
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	bl	get_symbol
	bl	compile_expression
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L779
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	type_warning
.L779:
	ldr	r0, [fp, #-56]
	bl	get_address
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	is_signed_integer
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L780
	ldr	r0, [fp, #-56]
	bl	get_scope
	mov	r6, r0
	mov	r7, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	emit_sd
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	b	.L781
.L780:
	ldr	r0, [fp, #-56]
	bl	load_upper_base_address
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	mov	r2, #12
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, #12
	mov	r3, #0
	bl	sign_extend
	mov	r8, r0
	mov	r9, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r8
	mov	r3, r9
	mov	r0, r6
	mov	r1, r7
	bl	emit_sd
	mov	r0, #2
	mov	r1, #0
	bl	tfree
.L781:
	ldr	r3, .L787+40
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L787+40
	stm	r3, {r4-r5}
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L782
	bl	get_symbol
	b	.L786
.L782:
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L786
.L778:
	bl	syntax_error_unexpected
	b	.L786
.L775:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+64
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L783
	bl	compile_while
	b	.L786
.L783:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+68
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L784
	bl	compile_if
	b	.L786
.L784:
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+72
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L786
	bl	compile_return
	ldr	r3, .L787
	ldmia	r3, {r0-r1}
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L785
	bl	get_symbol
	b	.L786
.L785:
	ldr	r3, .L787+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L786:
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L788:
	.align	2
.L787:
	.word	symbol
	.word	SYM_EOF
	.word	EXITCODE_PARSERERROR
	.word	SYM_ASTERISK
	.word	SYM_IDENTIFIER
	.word	identifier
	.word	VARIABLE
	.word	UINT64STAR_T
	.word	SYM_ASSIGN
	.word	UINT64_T
	.word	number_of_assignments
	.word	SYM_SEMICOLON
	.word	SYM_LPARENTHESIS
	.word	SYM_RPARENTHESIS
	.word	REG_A0
	.word	REG_ZR
	.word	SYM_WHILE
	.word	SYM_IF
	.word	SYM_RETURN
	.size	compile_statement, .-compile_statement
	.align	2
	.global	compile_type
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_type, %function
compile_type:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L793
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r3, .L793+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L793+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L790
	bl	get_symbol
	ldr	r3, .L793+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L793+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L791
	ldr	r3, .L793+16
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	bl	get_symbol
	b	.L791
.L790:
	ldr	r3, .L793+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L791:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L794:
	.align	2
.L793:
	.word	UINT64_T
	.word	symbol
	.word	SYM_UINT64
	.word	SYM_ASTERISK
	.word	UINT64STAR_T
	.size	compile_type, .-compile_type
	.section	.rodata
	.align	2
.LC95:
	.ascii	"missing variable name\000"
	.text
	.align	2
	.global	compile_variable
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_variable, %function
compile_variable:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #56
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	bl	compile_type
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	ldr	r3, .L799
	ldmia	r3, {r0-r1}
	ldr	r3, .L799+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L796
	ldr	r3, .L799+8
	ldmia	r3, {r6-r7}
	ldr	r3, .L799+12
	ldr	ip, [r3]
	ldr	r3, .L799+16
	ldmia	r3, {r2-r3}
	ldr	r1, .L799+20
	ldmia	r1, {r0-r1}
	sub	r5, fp, #36
	ldmia	r5, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	sub	r5, fp, #28
	ldmia	r5, {r4-r5}
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, ip
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	bl	get_symbol
	b	.L798
.L796:
	ldr	r3, .L799+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L799+8
	ldmia	r3, {r6-r7}
	ldr	r3, .L799+16
	ldmia	r3, {r2-r3}
	ldr	r1, .L799+20
	ldmia	r1, {r0-r1}
	sub	r5, fp, #36
	ldmia	r5, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	sub	r5, fp, #28
	ldmia	r5, {r4-r5}
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	ldr	r2, .L799+24
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
.L798:
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L800:
	.align	2
.L799:
	.word	symbol
	.word	SYM_IDENTIFIER
	.word	LOCAL_TABLE
	.word	identifier
	.word	line_number
	.word	VARIABLE
	.word	.LC95
	.size	compile_variable, .-compile_variable
	.align	2
	.global	compile_initialization
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_initialization, %function
compile_initialization:
	@ 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, #-36]
	str	r1, [fp, #-32]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L814
	ldmia	r3, {r0-r1}
	ldr	r3, .L814+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L802
	bl	get_symbol
	ldr	r3, .L814
	ldmia	r3, {r0-r1}
	ldr	r3, .L814+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L803
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	bl	get_symbol
	bl	compile_type
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L814
	ldmia	r3, {r0-r1}
	ldr	r3, .L814+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L804
	bl	get_symbol
	b	.L803
.L804:
	ldr	r3, .L814+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L803:
	ldr	r3, .L814
	ldmia	r3, {r0-r1}
	ldr	r3, .L814+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L805
	ldr	r1, .L814+20
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	bl	get_symbol
	ldr	r1, .L814+20
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L814+24
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	b	.L806
.L805:
	ldr	r3, .L814+24
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
.L806:
	bl	is_literal
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L807
	bl	get_symbol
	b	.L808
.L807:
	bl	syntax_error_unexpected
.L808:
	ldr	r3, .L814
	ldmia	r3, {r0-r1}
	ldr	r3, .L814+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L809
	bl	get_symbol
	b	.L810
.L809:
	ldr	r3, .L814+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L810
.L802:
	ldr	r3, .L814+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L810:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L811
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L812
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	type_warning
	b	.L812
.L811:
	ldr	r3, .L814+32
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L812
	ldr	r3, .L814+32
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	type_warning
.L812:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L815:
	.align	2
.L814:
	.word	symbol
	.word	SYM_ASSIGN
	.word	SYM_LPARENTHESIS
	.word	SYM_RPARENTHESIS
	.word	SYM_MINUS
	.word	integer_is_signed
	.word	literal
	.word	SYM_SEMICOLON
	.word	UINT64_T
	.size	compile_initialization, .-compile_initialization
	.section	.rodata
	.align	2
.LC96:
	.ascii	"main\000"
	.align	2
.LC97:
	.ascii	"redefinition of procedure %s ignored\012\000"
	.text
	.align	2
	.global	compile_procedure
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_procedure, %function
compile_procedure:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #112
	str	r0, [fp, #-72]
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L817
	bl	get_symbol
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L818
	mov	r0, #0
	mov	r1, #0
	bl	compile_variable
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	b	.L819
.L820:
	bl	get_symbol
	mov	r0, #0
	mov	r1, #0
	bl	compile_variable
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-92]
	adc	r3, r3, #0
	str	r3, [fp, #-88]
	sub	r3, fp, #92
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
.L819:
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L820
	ldr	r3, .L843+16
	ldr	r3, [r3]
	str	r3, [fp, #-64]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L821
.L822:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r4, r2, #2
	adc	r5, r3, #0
	ldr	r3, .L843+20
	ldmia	r3, {r2-r3}
	mul	r0, r2, r5
	mul	r1, r4, r3
	add	ip, r0, r1
	umull	r0, r1, r4, r2
	add	r3, ip, r1
	mov	r1, r3
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-64]
	bl	set_address
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r1, r2, #1
	str	r1, [fp, #-100]
	adc	r3, r3, #0
	str	r3, [fp, #-96]
	sub	r3, fp, #100
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r0, [fp, #-64]
	bl	get_next_entry
	str	r0, [fp, #-64]
.L821:
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L822
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L823
	bl	get_symbol
	b	.L824
.L823:
	ldr	r3, .L843+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L824
.L818:
	bl	get_symbol
	b	.L824
.L817:
	ldr	r3, .L843+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L824:
	ldr	r3, .L843+24
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-72]
	bl	search_global_symbol_table
	str	r0, [fp, #-64]
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L825
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	bne	.L826
	ldr	r3, .L843+32
	ldmia	r3, {r6-r7}
	ldr	r3, .L843+36
	ldmia	r3, {r2-r3}
	ldr	r1, .L843+24
	ldmia	r1, {r0-r1}
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	sub	r5, fp, #84
	ldmia	r5, {r4-r5}
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-72]
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	b	.L827
.L826:
	ldr	r0, [fp, #-64]
	bl	get_type
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	beq	.L827
	ldr	r0, [fp, #-64]
	bl	get_type
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	bl	type_warning
.L827:
	bl	get_symbol
	b	.L828
.L825:
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+40
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L829
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	bne	.L830
	ldr	r3, .L843+32
	ldmia	r3, {r6-r7}
	ldr	r3, .L843+36
	ldmia	r3, {r2-r3}
	ldr	r1, .L843+24
	ldmia	r1, {r0-r1}
	ldr	ip, .L843+44
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	sub	r5, fp, #84
	ldmia	r5, {r4-r5}
	str	r4, [sp, #16]
	str	r5, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-72]
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	b	.L831
.L830:
	ldr	r0, [fp, #-64]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L832
	ldr	r0, [fp, #-64]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	load_instruction
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	get_opcode
	ldr	r3, .L843+48
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L833
	ldr	r0, [fp, #-64]
	bl	get_address
	ldr	r3, .L843+44
	ldmia	r3, {r2-r3}
	bl	fixlink_relative
	b	.L832
.L833:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
.L832:
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L834
	ldr	r3, .L843+36
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-64]
	bl	set_line_number
	ldr	r0, [fp, #-64]
	bl	get_type
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	cmp	r3, r1
	cmpeq	r2, r0
	beq	.L835
	ldr	r0, [fp, #-64]
	bl	get_type
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	bl	type_warning
.L835:
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-64]
	bl	set_type
	ldr	r3, .L843+44
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-64]
	bl	set_address
	ldr	r1, .L843+52
	ldr	r0, [fp, #-72]
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L831
	ldr	r3, .L843+56
	ldr	r3, [r3]
	ldr	r2, .L843+60
	str	r3, [r2]
	ldr	r3, .L843+64
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	ldr	r3, .L843+64
	stm	r3, {r6-r7}
	b	.L831
.L834:
	ldr	r3, .L843+36
	ldmia	r3, {r2-r3}
	ldr	r0, .L843+68
	bl	print_line_number
	ldr	r1, [fp, #-72]
	ldr	r0, .L843+72
	bl	printf1
.L831:
	bl	get_symbol
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L836
.L838:
	ldr	r3, .L843+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	adds	r8, r0, r2
	adc	r9, r1, r3
	str	r8, [fp, #-36]
	str	r9, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	mov	r0, r2
	mov	r1, r3
	bl	compile_variable
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L837
	bl	get_symbol
	b	.L836
.L837:
	ldr	r3, .L843+28
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L836:
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+76
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L838
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	help_procedure_prologue
	ldr	r1, .L843+80
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L843+84
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	b	.L839
.L840:
	bl	compile_statement
.L839:
	bl	is_not_rbrace_or_eof
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L840
	ldr	r1, .L843+84
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L843
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+88
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L841
	bl	get_symbol
	b	.L842
.L841:
	ldr	r3, .L843+88
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	ldr	r3, .L843+92
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L842:
	ldr	r3, .L843+80
	ldmia	r3, {r0-r1}
	ldr	r3, .L843+44
	ldmia	r3, {r2-r3}
	bl	fixlink_relative
	ldr	r1, .L843+80
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L843+20
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-52]
	mul	r0, r3, r1
	ldr	r1, [fp, #-48]
	mul	r1, r2, r1
	add	ip, r0, r1
	ldr	lr, [fp, #-52]
	umull	r0, r1, lr, r2
	add	r3, ip, r1
	mov	r1, r3
	bl	help_procedure_epilogue
	b	.L828
.L829:
	bl	syntax_error_unexpected
.L828:
	ldr	r3, .L843+16
	mov	r2, #0
	str	r2, [r3]
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L844:
	.align	2
.L843:
	.word	symbol
	.word	SYM_LPARENTHESIS
	.word	SYM_RPARENTHESIS
	.word	SYM_COMMA
	.word	local_symbol_table
	.word	REGISTERSIZE
	.word	PROCEDURE
	.word	SYM_SEMICOLON
	.word	GLOBAL_TABLE
	.word	line_number
	.word	SYM_LBRACE
	.word	binary_length
	.word	OP_JAL
	.word	.LC96
	.word	source_name
	.word	binary_name
	.word	number_of_calls
	.word	.LC90
	.word	.LC97
	.word	SYM_UINT64
	.word	return_branches
	.word	return_type
	.word	SYM_RBRACE
	.word	EXITCODE_PARSERERROR
	.size	compile_procedure, .-compile_procedure
	.section	.rodata
	.align	2
.LC98:
	.ascii	"redefinition of global variable %s ignored\012\000"
	.text
	.align	2
	.global	compile_cstar
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile_cstar, %function
compile_cstar:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #72
	b	.L846
.L849:
	bl	syntax_error_unexpected
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L848
	ldr	r3, .L858+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	b	.L847
.L848:
	bl	get_symbol
.L847:
	bl	look_for_type
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L849
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L850
	ldr	r3, .L858+16
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	get_symbol
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L851
	ldr	r3, .L858+24
	ldr	r3, [r3]
	str	r3, [fp, #-52]
	bl	get_symbol
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-52]
	bl	compile_procedure
	b	.L846
.L851:
	ldr	r3, .L858+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
	b	.L846
.L850:
	bl	compile_type
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L852
	ldr	r3, .L858+24
	ldr	r3, [r3]
	str	r3, [fp, #-52]
	bl	get_symbol
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L853
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-52]
	bl	compile_procedure
	b	.L846
.L853:
	ldr	r3, .L858+32
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+36
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L854
	bl	get_symbol
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L855
.L854:
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	compile_initialization
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
.L855:
	ldr	r3, .L858+40
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-52]
	bl	search_global_symbol_table
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L856
	ldr	r3, .L858+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+48
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L858+44
	stm	r3, {r4-r5}
	ldr	r3, .L858+52
	ldmia	r3, {r6-r7}
	ldr	r3, .L858+40
	ldmia	r3, {r2-r3}
	ldr	r1, .L858+44
	ldmia	r1, {r0-r1}
	rsbs	r0, r0, #0
	rsc	r1, r1, #0
	str	r0, [sp, #32]
	str	r1, [sp, #36]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-52]
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	b	.L846
.L856:
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, .L858+56
	bl	print_line_number
	ldr	r1, [fp, #-52]
	ldr	r0, .L858+60
	bl	printf1
	b	.L846
.L852:
	ldr	r3, .L858+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	syntax_error_symbol
.L846:
	ldr	r3, .L858
	ldmia	r3, {r0-r1}
	ldr	r3, .L858+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L847
	nop
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L859:
	.align	2
.L858:
	.word	symbol
	.word	SYM_EOF
	.word	EXITCODE_PARSERERROR
	.word	SYM_VOID
	.word	VOID_T
	.word	SYM_IDENTIFIER
	.word	identifier
	.word	SYM_LPARENTHESIS
	.word	line_number
	.word	SYM_SEMICOLON
	.word	VARIABLE
	.word	allocated_memory
	.word	REGISTERSIZE
	.word	GLOBAL_TABLE
	.word	.LC90
	.word	.LC98
	.size	compile_cstar, .-compile_cstar
	.align	2
	.global	emit_round_up
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_round_up, %function
emit_round_up:
	@ 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, #24
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	bl	talloc
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	stm	sp, {r4-r5}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	emit_addi
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L861
	ldmia	r3, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	emit_remu
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	emit_sub
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L862:
	.align	2
.L861:
	.word	REG_ZR
	.size	emit_round_up, .-emit_round_up
	.align	2
	.global	emit_left_shift_by
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_left_shift_by, %function
emit_left_shift_by:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #24
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	bl	next_temporary
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L864
	ldmia	r3, {r4-r5}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	mov	r0, r6
	mov	r1, r7
	bl	emit_addi
	bl	next_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	emit_mul
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L865:
	.align	2
.L864:
	.word	REG_ZR
	.size	emit_left_shift_by, .-emit_left_shift_by
	.align	2
	.global	emit_program_entry
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_program_entry, %function
emit_program_entry:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #8
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	b	.L867
.L868:
	bl	emit_nop
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L867:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	cmp	r3, #0
	cmpeq	r2, #19
	bls	.L868
	nop
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	emit_program_entry, .-emit_program_entry
	.section	.rodata
	.align	2
.LC99:
	.ascii	"maximum program break exceeded\000"
	.align	2
.LC100:
	.ascii	"_bump\000"
	.text
	.align	2
	.global	emit_bootstrapping
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_bootstrapping, %function
emit_bootstrapping:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #48
	ldr	r3, .L875
	ldmia	r3, {r4-r5}
	ldr	r3, .L875+4
	ldmia	r3, {r2-r3}
	adds	r0, r4, r2
	adc	r1, r5, r3
	ldr	r3, .L875+8
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-60]
	adc	r3, r1, r3
	str	r3, [fp, #-56]
	sub	r4, fp, #60
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-44]
	str	r4, [fp, #-40]
	ldr	r3, .L875+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-68]
	adc	r3, r1, r3
	str	r3, [fp, #-64]
	sub	r4, fp, #68
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-44]
	str	r4, [fp, #-40]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L870
	bl	emit_nop
.L870:
	ldr	r3, .L875+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L875+16
	stm	r1, {r2-r3}
	ldr	r1, .L875+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	bl	report_undefined_procedures
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L871
	ldr	r3, .L875+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	b	.L872
.L871:
	mov	r0, #31
	mov	r1, #0
	bl	two_to_the_power_of
	mov	r4, r0
	mov	r5, r1
	mov	r0, #11
	mov	r1, #0
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	subs	r8, r4, r2
	sbc	r9, r5, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	cmp	r3, r9
	cmpeq	r2, r8
	bcs	.L873
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	load_integer
	b	.L874
.L873:
	ldr	r0, .L875+28
	bl	syntax_error_message
	ldr	r3, .L875+32
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L874:
	ldr	r3, .L875+36
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	mov	r1, #0
	stm	sp, {r0-r1}
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	ldr	r3, .L875+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	ldr	r3, .L875+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L875+44
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L875+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+48
	ldmia	r3, {r2-r3}
	bl	emit_round_up
	ldr	r3, .L875+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L875+44
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r0, .L875+52
	bl	string_copy
	mov	r1, r0
	ldr	r3, .L875+56
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	search_global_symbol_table
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	get_scope
	mov	r4, r0
	mov	r5, r1
	ldr	r0, [fp, #-48]
	bl	get_address
	ldr	r3, .L875+20
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_sd
	ldr	r3, .L875+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	bl	talloc
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L875+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+12
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_addi
	ldr	r3, .L875+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+60
	ldmia	r3, {r4-r5}
	ldr	r3, .L875+12
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L875+60
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	emit_sd
	mov	r0, #1
	mov	r1, #0
	bl	tfree
	ldr	r0, .L875+64
	bl	string_copy
	mov	r1, r0
	ldr	r3, .L875+68
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	get_scoped_symbol_table_entry
	str	r0, [fp, #-48]
	ldr	r1, .L875+64
	ldr	r0, [fp, #-48]
	bl	help_call_codegen
.L872:
	ldr	r3, .L875+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+60
	ldmia	r3, {r4-r5}
	ldr	r3, .L875+12
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L875+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+20
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	bl	emit_sd
	ldr	r3, .L875+72
	ldmia	r3, {r4-r5}
	ldr	r3, .L875+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L875+76
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	subs	r6, r4, r2
	sbc	r7, r5, r3
	ldr	r3, .L875+72
	stm	r3, {r6-r7}
	ldr	r3, .L875+16
	ldmia	r3, {r2-r3}
	ldr	r1, .L875+4
	stm	r1, {r2-r3}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L876:
	.align	2
.L875:
	.word	ELF_ENTRY_POINT
	.word	binary_length
	.word	allocated_memory
	.word	REGISTERSIZE
	.word	code_length
	.word	REG_A0
	.word	REG_ZR
	.word	.LC99
	.word	EXITCODE_COMPILERERROR
	.word	REG_GP
	.word	REG_A7
	.word	SYSCALL_BRK
	.word	SIZEOFUINT64
	.word	.LC100
	.word	VARIABLE
	.word	REG_SP
	.word	.LC96
	.word	PROCEDURE
	.word	ic_addi
	.word	INSTRUCTIONSIZE
	.size	emit_bootstrapping, .-emit_bootstrapping
	.section	.rodata
	.align	2
.LC101:
	.ascii	"library\000"
	.align	2
.LC102:
	.ascii	"%s: selfie compiling %s with starc\012\000"
	.align	2
.LC103:
	.ascii	"%s: could not open input file %s\012\000"
	.align	2
.LC104:
	.ascii	"%s: %d characters read in %d lines and %d comments\012"
	.ascii	"\000"
	.align	2
.LC105:
	.ascii	"%s: with %d(%.2d%%) characters in %d actual symbols"
	.ascii	"\012\000"
	.align	2
.LC106:
	.ascii	"%s: %d global variables, %d procedures, %d string l"
	.ascii	"iterals\012\000"
	.align	2
.LC107:
	.ascii	"%s: %d calls, %d assignments, %d while, %d if, %d r"
	.ascii	"eturn\012\000"
	.align	2
.LC108:
	.ascii	"%s: nothing to compile, only library generated\012\000"
	.align	2
.LC109:
	.ascii	"%s: symbol table search time was %d iterations on a"
	.ascii	"verage and %d in total\012\000"
	.align	2
.LC110:
	.ascii	"%s: %d bytes generated with %d instructions and %d "
	.ascii	"bytes of data\012\000"
	.text
	.align	2
	.global	selfie_compile
	.syntax unified
	.arm
	.fpu softvfp
	.type	selfie_compile, %function
selfie_compile:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #80
	mov	r2, #1
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L884
	ldr	r2, .L884+4
	str	r2, [r3]
	ldr	r3, .L884
	ldr	r3, [r3]
	ldr	r2, .L884+8
	str	r3, [r2]
	ldr	r3, .L884+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	mov	r3, r0
	ldr	r2, .L884+16
	str	r3, [r2]
	ldr	r1, .L884+20
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L884+24
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L884+28
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+32
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, .L884+36
	ldmia	r3, {r2-r3}
	mul	lr, r2, r1
	mul	ip, r0, r3
	add	ip, lr, ip
	umull	r4, r5, r0, r2
	add	r3, ip, r5
	mov	r5, r3
	mov	r0, r4
	mov	r1, r5
	bl	zalloc
	mov	r3, r0
	ldr	r2, .L884+40
	str	r3, [r2]
	ldr	r3, .L884+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+48
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, .L884+36
	ldmia	r3, {r2-r3}
	mul	lr, r2, r1
	mul	ip, r0, r3
	add	ip, lr, ip
	umull	r4, r5, r0, r2
	add	r3, ip, r5
	mov	r5, r3
	mov	r0, r4
	mov	r1, r5
	bl	zalloc
	mov	r3, r0
	ldr	r2, .L884+52
	str	r3, [r2]
	bl	reset_symbol_tables
	bl	reset_instruction_counters
	bl	emit_program_entry
	bl	emit_exit
	bl	emit_read
	bl	emit_write
	bl	emit_open
	bl	emit_malloc
	bl	emit_switch
	bl	emit_symbolic_input
	bl	emit_printsv
	bl	emit_assert_begin
	bl	emit_assert_end
	bl	emit_assert
	ldr	r3, .L884+56
	ldmia	r3, {r6-r7}
	ldr	r0, .L884+60
	bl	string_copy
	mov	ip, r0
	ldr	r3, .L884+64
	ldmia	r3, {r4-r5}
	ldr	r3, .L884+68
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #32]
	str	r3, [sp, #36]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #24]
	str	r3, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r4, [sp, #8]
	str	r5, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, ip
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	b	.L878
.L882:
	bl	number_of_remaining_arguments
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L879
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L878
.L879:
	bl	peek_argument
	mov	r1, r0
	mov	r2, #0
	mov	r3, #0
	mov	r0, r1
	bl	load_character
	mov	r2, r0
	mov	r3, r1
	cmp	r3, #0
	cmpeq	r2, #45
	bne	.L880
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L878
.L880:
	bl	get_argument
	mov	r3, r0
	ldr	r2, .L884
	str	r3, [r2]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r8, r2, #1
	adc	r9, r3, #0
	str	r8, [fp, #-36]
	str	r9, [fp, #-32]
	ldr	r3, .L884+72
	ldr	r3, [r3]
	ldr	r2, .L884
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L884+76
	bl	printf2
	ldr	r3, .L884
	ldr	ip, [r3]
	ldr	r3, .L884+80
	ldmia	r3, {r2-r3}
	mov	r0, #0
	mov	r1, #0
	stm	sp, {r0-r1}
	mov	r0, ip
	bl	open
	ldr	r3, .L884+84
	ldmia	r3, {r2-r3}
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L884+88
	stm	r1, {r2-r3}
	ldr	r3, .L884+88
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L881
	ldr	r3, .L884+72
	ldr	r3, [r3]
	ldr	r2, .L884
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L884+92
	bl	printf2
	ldr	r3, .L884+96
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L881:
	bl	reset_scanner
	bl	reset_parser
	bl	compile_cstar
	ldr	r3, .L884+72
	ldr	r1, [r3]
	ldr	r3, .L884+100
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	ldr	r3, .L884+104
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L884+108
	ldmia	r3, {r2-r3}
	mov	r3, r2
	str	r3, [sp]
	mov	r3, ip
	mov	r2, r0
	ldr	r0, .L884+112
	bl	printf4
	ldr	r3, .L884+72
	ldr	r6, [r3]
	ldr	r3, .L884+100
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+116
	ldmia	r3, {r2-r3}
	subs	ip, r0, r2
	str	ip, [fp, #-52]
	sbc	r3, r1, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	mov	r7, r3
	ldr	r3, .L884+100
	ldmia	r3, {r4-r5}
	ldr	r3, .L884+100
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+116
	ldmia	r3, {r2-r3}
	subs	ip, r0, r2
	str	ip, [fp, #-60]
	sbc	r3, r1, r3
	str	r3, [fp, #-56]
	mov	r2, #4
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	fixed_point_ratio
	mov	r2, #4
	mov	r3, #0
	bl	fixed_point_percentage
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	r1, r3
	ldr	r3, .L884+120
	ldmia	r3, {r2-r3}
	mov	r3, r2
	str	r3, [sp]
	mov	r3, r1
	mov	r2, r7
	mov	r1, r6
	ldr	r0, .L884+124
	bl	printf4
	ldr	r3, .L884+72
	ldr	r1, [r3]
	ldr	r3, .L884+128
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	ldr	r3, .L884+132
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L884+136
	ldmia	r3, {r2-r3}
	mov	r3, r2
	str	r3, [sp]
	mov	r3, ip
	mov	r2, r0
	ldr	r0, .L884+140
	bl	printf4
	ldr	r3, .L884+72
	ldr	r1, [r3]
	ldr	r3, .L884+144
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	lr, r3
	ldr	r3, .L884+148
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r4, r3
	ldr	r3, .L884+152
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L884+156
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	ldr	r3, .L884+160
	ldmia	r3, {r2-r3}
	mov	r3, r2
	str	r3, [sp, #8]
	str	r0, [sp, #4]
	str	ip, [sp]
	mov	r3, r4
	mov	r2, lr
	ldr	r0, .L884+164
	bl	printf6
.L878:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L882
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L883
	ldr	r3, .L884+72
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L884+168
	bl	printf1
.L883:
	bl	emit_bootstrapping
	bl	emit_data_segment
	ldr	r3, .L884+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	create_elf_header
	mov	r3, r0
	ldr	r2, .L884+172
	str	r3, [r2]
	ldr	r3, .L884+176
	ldmia	r3, {r2-r3}
	ldr	r1, .L884+180
	stm	r1, {r2-r3}
	ldr	r3, .L884+72
	ldr	r4, [r3]
	ldr	r3, .L884+184
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+188
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	r1, r3
	ldr	r3, .L884+184
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r2, r1
	mov	r1, r4
	ldr	r0, .L884+192
	bl	printf3
	ldr	r3, .L884+72
	ldr	r4, [r3]
	ldr	r3, .L884+20
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r5, r3
	ldr	r3, .L884+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+32
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L884+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L884+24
	ldmia	r3, {r2-r3}
	subs	lr, r0, r2
	str	lr, [fp, #-68]
	sbc	r3, r1, r3
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	str	r3, [sp]
	mov	r3, ip
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L884+196
	bl	printf4
	bl	print_instruction_counters
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L885:
	.align	2
.L884:
	.word	source_name
	.word	.LC101
	.word	binary_name
	.word	MAX_BINARY_LENGTH
	.word	binary
	.word	binary_length
	.word	code_length
	.word	MAX_CODE_LENGTH
	.word	INSTRUCTIONSIZE
	.word	SIZEOFUINT64
	.word	code_line_number
	.word	MAX_DATA_LENGTH
	.word	REGISTERSIZE
	.word	data_line_number
	.word	GLOBAL_TABLE
	.word	.LC96
	.word	PROCEDURE
	.word	UINT64_T
	.word	selfie_name
	.word	.LC102
	.word	O_RDONLY
	.word	SYSCALL_BITWIDTH
	.word	source_fd
	.word	.LC103
	.word	EXITCODE_IOERROR
	.word	number_of_read_characters
	.word	line_number
	.word	number_of_comments
	.word	.LC104
	.word	number_of_ignored_characters
	.word	number_of_scanned_symbols
	.word	.LC105
	.word	number_of_global_variables
	.word	number_of_procedures
	.word	number_of_strings
	.word	.LC106
	.word	number_of_calls
	.word	number_of_assignments
	.word	number_of_while
	.word	number_of_if
	.word	number_of_return
	.word	.LC107
	.word	.LC108
	.word	ELF_header
	.word	ELF_ENTRY_POINT
	.word	entry_point
	.word	total_search_time
	.word	number_of_searches
	.word	.LC109
	.word	.LC110
	.size	selfie_compile, .-selfie_compile
	.align	2
	.global	get_register_name
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_register_name, %function
get_register_name:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L888
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L889:
	.align	2
.L888:
	.word	REGISTERS
	.size	get_register_name, .-get_register_name
	.align	2
	.global	print_register_name
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_register_name, %function
print_register_name:
	@ 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, #-12]
	str	r1, [fp, #-8]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_register_name
	mov	r3, r0
	mov	r0, r3
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	print_register_name, .-print_register_name
	.section	.rodata
	.align	2
.LC111:
	.ascii	"encoding error\000"
	.align	2
.LC112:
	.ascii	"%d expected between %d and %d\012\000"
	.text
	.align	2
	.global	check_immediate_range
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_immediate_range, %function
check_immediate_range:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, fp, lr}
	add	fp, sp, #24
	sub	sp, sp, #20
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	is_signed_integer
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L893
	ldr	r3, .L894
	ldmia	r3, {r2-r3}
	ldr	r0, .L894+4
	bl	print_line_number
	ldr	r3, [fp, #-36]
	mov	r8, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	subs	r6, r2, #1
	sbc	r7, r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	mov	r3, r2
	mov	r6, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	two_to_the_power_of
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	sub	r3, r3, #8
	mov	r2, r6
	mov	r1, r8
	ldr	r0, .L894+8
	bl	printf3
	ldr	r3, .L894+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L893:
	nop
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, fp, pc}
.L895:
	.align	2
.L894:
	.word	line_number
	.word	.LC111
	.word	.LC112
	.word	EXITCODE_COMPILERERROR
	.size	check_immediate_range, .-check_immediate_range
	.align	2
	.global	encode_r_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	encode_r_format, %function
encode_r_format:
	@ args = 32, 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, #-36]
	str	r1, [fp, #-32]
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	ldmib	fp, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-52]
	adc	r3, r1, r3
	str	r3, [fp, #-48]
	mov	r2, #3
	mov	r3, #0
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	left_shift
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #7
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	add	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-60]
	adc	r3, r1, r3
	str	r3, [fp, #-56]
	sub	r3, fp, #60
	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}
	.size	encode_r_format, .-encode_r_format
	.align	2
	.global	get_funct7
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_funct7, %function
get_funct7:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #7
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #25
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_funct7, .-get_funct7
	.align	2
	.global	get_rs2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_rs2, %function
get_rs2:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #5
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_rs2, .-get_rs2
	.align	2
	.global	get_rs1
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_rs1, %function
get_rs1:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #5
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #15
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_rs1, .-get_rs1
	.align	2
	.global	get_funct3
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_funct3, %function
get_funct3:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #3
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_funct3, .-get_funct3
	.align	2
	.global	get_rd
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_rd, %function
get_rd:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #5
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #7
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_rd, .-get_rd
	.align	2
	.global	get_opcode
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_opcode, %function
get_opcode:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #7
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_opcode, .-get_opcode
	.align	2
	.global	decode_r_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_r_format, %function
decode_r_format:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L911
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_funct7
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L911+4
	stm	r1, {r2-r3}
	ldr	r3, .L911
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs2
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L911+8
	stm	r1, {r2-r3}
	ldr	r3, .L911
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L911+12
	stm	r1, {r2-r3}
	ldr	r3, .L911
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_funct3
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L911+16
	stm	r1, {r2-r3}
	ldr	r3, .L911
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L911+20
	stm	r1, {r2-r3}
	ldr	r1, .L911+24
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L912:
	.align	2
.L911:
	.word	ir
	.word	funct7
	.word	rs2
	.word	rs1
	.word	funct3
	.word	rd
	.word	imm
	.size	decode_r_format, .-decode_r_format
	.align	2
	.global	encode_i_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	encode_i_format, %function
encode_i_format:
	@ args = 24, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	check_immediate_range
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	sign_shrink
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #3
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	ldmib	fp, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #7
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-52]
	adc	r3, r1, r3
	str	r3, [fp, #-48]
	sub	r3, fp, #52
	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}
	.size	encode_i_format, .-encode_i_format
	.align	2
	.global	get_immediate_i_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_immediate_i_format, %function
get_immediate_i_format:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #12
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, #12
	mov	r3, #0
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_immediate_i_format, .-get_immediate_i_format
	.align	2
	.global	decode_i_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_i_format, %function
decode_i_format:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L918
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L918+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L918+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L918+12
	stm	r1, {r2-r3}
	ldr	r3, .L918+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_funct3
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L918+16
	stm	r1, {r2-r3}
	ldr	r3, .L918+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L918+20
	stm	r1, {r2-r3}
	ldr	r3, .L918+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_immediate_i_format
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L918+24
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L919:
	.align	2
.L918:
	.word	funct7
	.word	rs2
	.word	ir
	.word	rs1
	.word	funct3
	.word	rd
	.word	imm
	.size	decode_i_format, .-decode_i_format
	.align	2
	.global	encode_s_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	encode_s_format, %function
encode_s_format:
	@ args = 24, pretend = 0, frame = 48
	@ 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, #-52]
	str	r1, [fp, #-48]
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	check_immediate_range
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	sign_shrink
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	mov	r2, #7
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #5
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	ldmib	fp, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-68]
	adc	r3, r1, r3
	str	r3, [fp, #-64]
	mov	r2, #3
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	left_shift
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #7
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-76]
	adc	r3, r1, r3
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	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}
	.size	encode_s_format, .-encode_s_format
	.align	2
	.global	get_immediate_s_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_immediate_s_format, %function
get_immediate_s_format:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #7
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #25
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	mov	r2, #5
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #7
	mov	r3, #0
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #12
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	get_immediate_s_format, .-get_immediate_s_format
	.align	2
	.global	decode_s_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_s_format, %function
decode_s_format:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L925
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L925+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs2
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L925+8
	stm	r1, {r2-r3}
	ldr	r3, .L925+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L925+12
	stm	r1, {r2-r3}
	ldr	r3, .L925+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_funct3
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L925+16
	stm	r1, {r2-r3}
	ldr	r1, .L925+20
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L925+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_immediate_s_format
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L925+24
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L926:
	.align	2
.L925:
	.word	funct7
	.word	ir
	.word	rs2
	.word	rs1
	.word	funct3
	.word	rd
	.word	imm
	.size	decode_s_format, .-decode_s_format
	.align	2
	.global	encode_b_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	encode_b_format, %function
encode_b_format:
	@ args = 24, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #88
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	mov	r2, #13
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	check_immediate_range
	mov	r2, #13
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sign_shrink
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	mov	r2, #6
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	mov	r2, #4
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #1
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #11
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #6
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	ldmib	fp, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #3
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-84]
	adc	r3, r1, r3
	str	r3, [fp, #-80]
	mov	r2, #4
	mov	r3, #0
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-92]
	adc	r3, r1, r3
	str	r3, [fp, #-88]
	mov	r2, #1
	mov	r3, #0
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-100]
	adc	r3, r1, r3
	str	r3, [fp, #-96]
	mov	r2, #7
	mov	r3, #0
	sub	r1, fp, #100
	ldmia	r1, {r0-r1}
	bl	left_shift
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-108]
	adc	r3, r1, r3
	str	r3, [fp, #-104]
	sub	r3, fp, #108
	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}
	.size	encode_b_format, .-encode_b_format
	.align	2
	.global	get_immediate_b_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_immediate_b_format, %function
get_immediate_b_format:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #48
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #31
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	mov	r2, #6
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #25
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	mov	r2, #4
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #8
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #7
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #1
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #6
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #4
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #1
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	mov	r2, #13
	mov	r3, #0
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
	.size	get_immediate_b_format, .-get_immediate_b_format
	.align	2
	.global	decode_b_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_b_format, %function
decode_b_format:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L932
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L932+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs2
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L932+8
	stm	r1, {r2-r3}
	ldr	r3, .L932+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rs1
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L932+12
	stm	r1, {r2-r3}
	ldr	r3, .L932+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_funct3
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L932+16
	stm	r1, {r2-r3}
	ldr	r1, .L932+20
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L932+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_immediate_b_format
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L932+24
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L933:
	.align	2
.L932:
	.word	funct7
	.word	ir
	.word	rs2
	.word	rs1
	.word	funct3
	.word	rd
	.word	imm
	.size	decode_b_format, .-decode_b_format
	.align	2
	.global	encode_j_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	encode_j_format, %function
encode_j_format:
	@ args = 8, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #72
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	mov	r2, #21
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	check_immediate_range
	mov	r2, #21
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sign_shrink
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	mov	r2, #10
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #1
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #11
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #8
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #10
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #1
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-84]
	adc	r3, r1, r3
	str	r3, [fp, #-80]
	mov	r2, #8
	mov	r3, #0
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #5
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #7
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	ldmib	fp, {r2-r3}
	adds	ip, r0, r2
	str	ip, [fp, #-92]
	adc	r3, r1, r3
	str	r3, [fp, #-88]
	sub	r3, fp, #92
	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}
	.size	encode_j_format, .-encode_j_format
	.align	2
	.global	get_immediate_j_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_immediate_j_format, %function
get_immediate_j_format:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #48
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #31
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	mov	r2, #10
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #21
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #8
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	get_bits
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r2, #8
	mov	r3, #0
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	mov	r2, #1
	mov	r3, #0
	mov	r0, r8
	mov	r1, r9
	bl	left_shift
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, #10
	mov	r3, #0
	mov	r0, r6
	mov	r1, r7
	bl	left_shift
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #1
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	mov	r2, #21
	mov	r3, #0
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
	.size	get_immediate_j_format, .-get_immediate_j_format
	.align	2
	.global	decode_j_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_j_format, %function
decode_j_format:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L939
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L939+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L939+8
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L939+12
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L939+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L939+20
	stm	r1, {r2-r3}
	ldr	r3, .L939+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_immediate_j_format
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L939+24
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L940:
	.align	2
.L939:
	.word	funct7
	.word	rs2
	.word	rs1
	.word	funct3
	.word	ir
	.word	rd
	.word	imm
	.size	decode_j_format, .-decode_j_format
	.align	2
	.global	encode_u_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	encode_u_format, %function
encode_u_format:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	check_immediate_range
	mov	r2, #20
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	sign_shrink
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	mov	r2, #5
	mov	r3, #0
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	left_shift
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r2, #7
	mov	r3, #0
	mov	r0, r4
	mov	r1, r5
	bl	left_shift
	ldmib	fp, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	mov	r2, r6
	mov	r3, r7
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	encode_u_format, .-encode_u_format
	.align	2
	.global	get_immediate_u_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_immediate_u_format, %function
get_immediate_u_format:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #20
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, #12
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_bits
	mov	r2, #20
	mov	r3, #0
	bl	sign_extend
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_immediate_u_format, .-get_immediate_u_format
	.align	2
	.global	decode_u_format
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_u_format, %function
decode_u_format:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r1, .L946
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L946+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L946+8
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L946+12
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L946+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_rd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L946+20
	stm	r1, {r2-r3}
	ldr	r3, .L946+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_immediate_u_format
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L946+24
	stm	r1, {r2-r3}
	nop
	pop	{fp, pc}
.L947:
	.align	2
.L946:
	.word	funct7
	.word	rs2
	.word	rs1
	.word	funct3
	.word	ir
	.word	rd
	.word	imm
	.size	decode_u_format, .-decode_u_format
	.align	2
	.global	reset_instruction_counters
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_instruction_counters, %function
reset_instruction_counters:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r1, .L949
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+8
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+12
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+16
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+20
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+24
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+28
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+32
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+36
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+40
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+44
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+48
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+52
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L949+56
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L950:
	.align	2
.L949:
	.word	ic_lui
	.word	ic_addi
	.word	ic_add
	.word	ic_sub
	.word	ic_mul
	.word	ic_divu
	.word	ic_remu
	.word	ic_xor
	.word	ic_sltu
	.word	ic_ld
	.word	ic_sd
	.word	ic_beq
	.word	ic_jal
	.word	ic_jalr
	.word	ic_ecall
	.size	reset_instruction_counters, .-reset_instruction_counters
	.align	2
	.global	get_total_number_of_instructions
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_total_number_of_instructions, %function
get_total_number_of_instructions:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, r8, r9, fp}
	add	fp, sp, #24
	sub	sp, sp, #92
	ldr	r3, .L953
	ldmia	r3, {r0-r1}
	ldr	r3, .L953+4
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L953+8
	ldmia	r3, {r2-r3}
	adds	r6, r4, r2
	adc	r7, r5, r3
	ldr	r3, .L953+12
	ldmia	r3, {r2-r3}
	adds	r8, r6, r2
	adc	r9, r7, r3
	ldr	r3, .L953+16
	ldmia	r3, {r2-r3}
	adds	r1, r8, r2
	str	r1, [fp, #-36]
	adc	r3, r9, r3
	str	r3, [fp, #-32]
	ldr	r3, .L953+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-44]
	adc	r3, r1, r3
	str	r3, [fp, #-40]
	ldr	r3, .L953+24
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-52]
	adc	r3, r1, r3
	str	r3, [fp, #-48]
	ldr	r3, .L953+28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-60]
	adc	r3, r1, r3
	str	r3, [fp, #-56]
	ldr	r3, .L953+32
	ldmia	r3, {r2-r3}
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-68]
	adc	r3, r1, r3
	str	r3, [fp, #-64]
	ldr	r3, .L953+36
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-76]
	adc	r3, r1, r3
	str	r3, [fp, #-72]
	ldr	r3, .L953+40
	ldmia	r3, {r2-r3}
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-84]
	adc	r3, r1, r3
	str	r3, [fp, #-80]
	ldr	r3, .L953+44
	ldmia	r3, {r2-r3}
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-92]
	adc	r3, r1, r3
	str	r3, [fp, #-88]
	ldr	r3, .L953+48
	ldmia	r3, {r2-r3}
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-100]
	adc	r3, r1, r3
	str	r3, [fp, #-96]
	ldr	r3, .L953+52
	ldmia	r3, {r2-r3}
	sub	r1, fp, #100
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-108]
	adc	r3, r1, r3
	str	r3, [fp, #-104]
	ldr	r3, .L953+56
	ldmia	r3, {r2-r3}
	sub	r1, fp, #108
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-116]
	adc	r3, r1, r3
	str	r3, [fp, #-112]
	sub	r3, fp, #116
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp}
	bx	lr
.L954:
	.align	2
.L953:
	.word	ic_lui
	.word	ic_addi
	.word	ic_add
	.word	ic_sub
	.word	ic_mul
	.word	ic_divu
	.word	ic_remu
	.word	ic_xor
	.word	ic_sltu
	.word	ic_ld
	.word	ic_sd
	.word	ic_beq
	.word	ic_jal
	.word	ic_jalr
	.word	ic_ecall
	.size	get_total_number_of_instructions, .-get_total_number_of_instructions
	.section	.rodata
	.align	2
.LC113:
	.ascii	"%s: %d(%.2d%%)\000"
	.text
	.align	2
	.global	print_instruction_counter
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_instruction_counter, %function
print_instruction_counter:
	@ args = 4, 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, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	mov	r4, r3
	mov	r2, #4
	mov	r3, #0
	stm	sp, {r2-r3}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	fixed_point_ratio
	mov	r2, #4
	mov	r3, #0
	bl	fixed_point_percentage
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	r2, r4
	ldr	r1, [fp, #4]
	ldr	r0, .L956
	bl	printf3
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L957:
	.align	2
.L956:
	.word	.LC113
	.size	print_instruction_counter, .-print_instruction_counter
	.section	.rodata
	.align	2
.LC114:
	.ascii	"%s: init:    \000"
	.align	2
.LC115:
	.ascii	"lui\000"
	.align	2
.LC116:
	.ascii	", \000"
	.align	2
.LC117:
	.ascii	"addi\000"
	.align	2
.LC118:
	.ascii	"%s: memory:  \000"
	.align	2
.LC119:
	.ascii	"ld\000"
	.align	2
.LC120:
	.ascii	"sd\000"
	.align	2
.LC121:
	.ascii	"%s: compute: \000"
	.align	2
.LC122:
	.ascii	"add\000"
	.align	2
.LC123:
	.ascii	"sub\000"
	.align	2
.LC124:
	.ascii	"mul\000"
	.align	2
.LC125:
	.ascii	"divu\000"
	.align	2
.LC126:
	.ascii	"remu\000"
	.align	2
.LC127:
	.ascii	"xor\000"
	.align	2
.LC128:
	.ascii	"%s: control: \000"
	.align	2
.LC129:
	.ascii	"sltu\000"
	.align	2
.LC130:
	.ascii	"beq\000"
	.align	2
.LC131:
	.ascii	"jal\000"
	.align	2
.LC132:
	.ascii	"jalr\000"
	.align	2
.LC133:
	.ascii	"ecall\000"
	.text
	.align	2
	.global	print_instruction_counters
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_instruction_counters, %function
print_instruction_counters:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	bl	get_total_number_of_instructions
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L959
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L959+4
	bl	printf1
	ldr	r3, .L959+8
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+12
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+20
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+24
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	bl	println
	ldr	r3, .L959
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L959+28
	bl	printf1
	ldr	r3, .L959+32
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+36
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+40
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+44
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	bl	println
	ldr	r3, .L959
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L959+48
	bl	printf1
	ldr	r3, .L959+52
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+56
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+60
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+64
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+68
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+72
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+76
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+80
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+84
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+88
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+92
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+96
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	bl	println
	ldr	r3, .L959
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L959+100
	bl	printf1
	ldr	r3, .L959+104
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+108
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+112
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+116
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+120
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+124
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+128
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+132
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	ldr	r0, .L959+16
	bl	print
	ldr	r3, .L959+136
	ldmia	r3, {r2-r3}
	ldr	r1, .L959+140
	str	r1, [sp]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_instruction_counter
	bl	println
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L960:
	.align	2
.L959:
	.word	selfie_name
	.word	.LC114
	.word	ic_lui
	.word	.LC115
	.word	.LC116
	.word	ic_addi
	.word	.LC117
	.word	.LC118
	.word	ic_ld
	.word	.LC119
	.word	ic_sd
	.word	.LC120
	.word	.LC121
	.word	ic_add
	.word	.LC122
	.word	ic_sub
	.word	.LC123
	.word	ic_mul
	.word	.LC124
	.word	ic_divu
	.word	.LC125
	.word	ic_remu
	.word	.LC126
	.word	ic_xor
	.word	.LC127
	.word	.LC128
	.word	ic_sltu
	.word	.LC129
	.word	ic_beq
	.word	.LC130
	.word	ic_jal
	.word	.LC131
	.word	ic_jalr
	.word	.LC132
	.word	ic_ecall
	.word	.LC133
	.size	print_instruction_counters, .-print_instruction_counters
	.align	2
	.global	load_instruction
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_instruction, %function
load_instruction:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #12
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L964
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	orrs	r3, r2, r3
	bne	.L962
	ldr	r3, .L964+4
	ldr	r4, [r3]
	ldr	r3, .L964
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r4, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_low_word
	mov	r2, r0
	mov	r3, r1
	b	.L963
.L962:
	ldr	r3, .L964+4
	ldr	r4, [r3]
	ldr	r3, .L964
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r4, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_high_word
	mov	r2, r0
	mov	r3, r1
.L963:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L965:
	.align	2
.L964:
	.word	REGISTERSIZE
	.word	binary
	.size	load_instruction, .-load_instruction
	.section	.rodata
	.align	2
.LC134:
	.ascii	"maximum code length exceeded\000"
	.text
	.align	2
	.global	store_instruction
	.syntax unified
	.arm
	.fpu softvfp
	.type	store_instruction, %function
store_instruction:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, fp, lr}
	add	fp, sp, #24
	sub	sp, sp, #28
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, .L970
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L967
	ldr	r0, .L970+4
	bl	syntax_error_message
	ldr	r3, .L970+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L967:
	ldr	r3, .L970+12
	ldr	r8, [r3]
	ldr	r3, .L970+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r8, r3
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L970+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	orrs	r3, r2, r3
	bne	.L968
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_high_word
	ldr	r3, .L970+20
	ldmia	r3, {r2-r3}
	bl	left_shift
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	adds	r4, r2, r0
	adc	r5, r3, r1
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
	b	.L969
.L968:
	ldr	r3, .L970+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	left_shift
	mov	r4, r0
	mov	r5, r1
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_low_word
	mov	r2, r0
	mov	r3, r1
	adds	r6, r4, r2
	adc	r7, r5, r3
	str	r6, [fp, #-36]
	str	r7, [fp, #-32]
.L969:
	ldr	r3, .L970+12
	ldr	r4, [r3]
	ldr	r3, .L970+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r4, r3
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, fp, pc}
.L971:
	.align	2
.L970:
	.word	MAX_CODE_LENGTH
	.word	.LC134
	.word	EXITCODE_COMPILERERROR
	.word	binary
	.word	REGISTERSIZE
	.word	WORDSIZEINBITS
	.size	store_instruction, .-store_instruction
	.align	2
	.global	load_data
	.syntax unified
	.arm
	.fpu softvfp
	.type	load_data, %function
load_data:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #12
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L974
	ldr	r4, [r3]
	ldr	r3, .L974+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r4, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L975:
	.align	2
.L974:
	.word	binary
	.word	REGISTERSIZE
	.size	load_data, .-load_data
	.section	.rodata
	.align	2
.LC135:
	.ascii	"maximum data length exceeded\000"
	.text
	.align	2
	.global	store_data
	.syntax unified
	.arm
	.fpu softvfp
	.type	store_data, %function
store_data:
	@ 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, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L978
	ldmia	r3, {r0-r1}
	ldr	r3, .L978+4
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	cmp	r3, r5
	cmpeq	r2, r4
	bcc	.L977
	ldr	r0, .L978+8
	bl	syntax_error_message
	ldr	r3, .L978+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L977:
	ldr	r3, .L978+16
	ldr	r4, [r3]
	ldr	r3, .L978+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r4, r3
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L979:
	.align	2
.L978:
	.word	MAX_CODE_LENGTH
	.word	MAX_DATA_LENGTH
	.word	.LC135
	.word	EXITCODE_COMPILERERROR
	.word	binary
	.word	REGISTERSIZE
	.size	store_data, .-store_data
	.align	2
	.global	emit_instruction
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_instruction, %function
emit_instruction:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, fp, lr}
	add	fp, sp, #16
	sub	sp, sp, #12
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	ldr	r3, .L982
	ldmia	r3, {r0-r1}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	bl	store_instruction
	ldr	r3, .L982+4
	ldr	r6, [r3]
	ldr	r3, .L982
	ldmia	r3, {r0-r1}
	ldr	r3, .L982+8
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r6, r3
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L981
	ldr	r3, .L982+4
	ldr	r6, [r3]
	ldr	r3, .L982
	ldmia	r3, {r0-r1}
	ldr	r3, .L982+8
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r6, r3
	ldr	r3, .L982+12
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
.L981:
	ldr	r3, .L982
	ldmia	r3, {r0-r1}
	ldr	r3, .L982+8
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L982
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, fp, pc}
.L983:
	.align	2
.L982:
	.word	binary_length
	.word	code_line_number
	.word	INSTRUCTIONSIZE
	.word	line_number
	.size	emit_instruction, .-emit_instruction
	.align	2
	.global	emit_nop
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_nop, %function
emit_nop:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	ldr	r3, .L985
	ldmia	r3, {r8-r9}
	ldr	r3, .L985+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L985
	ldmia	r1, {r0-r1}
	ldr	ip, .L985+8
	ldmia	ip, {r6-r7}
	str	r6, [sp, #16]
	str	r7, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r8
	mov	r3, r9
	mov	r0, #0
	mov	r1, #0
	bl	encode_i_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L985+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L985+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L986:
	.align	2
.L985:
	.word	REG_ZR
	.word	F3_NOP
	.word	OP_IMM
	.word	ic_addi
	.size	emit_nop, .-emit_nop
	.align	2
	.global	emit_lui
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_lui, %function
emit_lui:
	@ 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, #24
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L988
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	encode_u_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L988+4
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L988+4
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L989:
	.align	2
.L988:
	.word	OP_LUI
	.word	ic_lui
	.size	emit_lui, .-emit_lui
	.align	2
	.global	emit_addi
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_addi, %function
emit_addi:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #40
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L991
	ldmia	r3, {r2-r3}
	ldr	r1, .L991+4
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldmib	fp, {r0-r1}
	bl	encode_i_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L991+8
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L991+8
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L992:
	.align	2
.L991:
	.word	F3_ADDI
	.word	OP_IMM
	.word	ic_addi
	.size	emit_addi, .-emit_addi
	.align	2
	.global	emit_add
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_add, %function
emit_add:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L994
	ldmia	r3, {r6-r7}
	ldr	r3, .L994+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L994+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L994+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L994+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L995:
	.align	2
.L994:
	.word	F7_ADD
	.word	F3_ADD
	.word	OP_OP
	.word	ic_add
	.size	emit_add, .-emit_add
	.align	2
	.global	emit_sub
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_sub, %function
emit_sub:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L997
	ldmia	r3, {r6-r7}
	ldr	r3, .L997+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L997+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L997+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L997+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L998:
	.align	2
.L997:
	.word	F7_SUB
	.word	F3_SUB
	.word	OP_OP
	.word	ic_sub
	.size	emit_sub, .-emit_sub
	.align	2
	.global	emit_mul
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_mul, %function
emit_mul:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1000
	ldmia	r3, {r6-r7}
	ldr	r3, .L1000+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1000+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1000+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1000+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1001:
	.align	2
.L1000:
	.word	F7_MUL
	.word	F3_MUL
	.word	OP_OP
	.word	ic_mul
	.size	emit_mul, .-emit_mul
	.align	2
	.global	emit_divu
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_divu, %function
emit_divu:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1003
	ldmia	r3, {r6-r7}
	ldr	r3, .L1003+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1003+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1003+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1003+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1004:
	.align	2
.L1003:
	.word	F7_DIVU
	.word	F3_DIVU
	.word	OP_OP
	.word	ic_divu
	.size	emit_divu, .-emit_divu
	.align	2
	.global	emit_remu
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_remu, %function
emit_remu:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1006
	ldmia	r3, {r6-r7}
	ldr	r3, .L1006+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1006+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1006+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1006+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1007:
	.align	2
.L1006:
	.word	F7_REMU
	.word	F3_REMU
	.word	OP_OP
	.word	ic_remu
	.size	emit_remu, .-emit_remu
	.align	2
	.global	emit_xor
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_xor, %function
emit_xor:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1009
	ldmia	r3, {r6-r7}
	ldr	r3, .L1009+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1009+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1009+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1009+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1010:
	.align	2
.L1009:
	.word	F7_XOR
	.word	F3_XOR
	.word	OP_OP
	.word	ic_xor
	.size	emit_xor, .-emit_xor
	.align	2
	.global	emit_sltu
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_sltu, %function
emit_sltu:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1012
	ldmia	r3, {r6-r7}
	ldr	r3, .L1012+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1012+8
	ldmia	r1, {r0-r1}
	str	r0, [sp, #24]
	str	r1, [sp, #28]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	encode_r_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1012+12
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1012+12
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1013:
	.align	2
.L1012:
	.word	F7_SLTU
	.word	F3_SLTU
	.word	OP_OP
	.word	ic_sltu
	.size	emit_sltu, .-emit_sltu
	.align	2
	.global	emit_ld
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_ld, %function
emit_ld:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #40
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L1015
	ldmia	r3, {r2-r3}
	ldr	r1, .L1015+4
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldmib	fp, {r0-r1}
	bl	encode_i_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1015+8
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1015+8
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1016:
	.align	2
.L1015:
	.word	F3_LD
	.word	OP_LD
	.word	ic_ld
	.size	emit_ld, .-emit_ld
	.align	2
	.global	emit_sd
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_sd, %function
emit_sd:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #40
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L1018
	ldmia	r3, {r2-r3}
	ldr	r1, .L1018+4
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldmib	fp, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	encode_s_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1018+8
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1018+8
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1019:
	.align	2
.L1018:
	.word	F3_SD
	.word	OP_SD
	.word	ic_sd
	.size	emit_sd, .-emit_sd
	.align	2
	.global	emit_beq
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_beq, %function
emit_beq:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #40
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L1021
	ldmia	r3, {r2-r3}
	ldr	r1, .L1021+4
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldmib	fp, {r0-r1}
	bl	encode_b_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1021+8
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1021+8
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1022:
	.align	2
.L1021:
	.word	F3_BEQ
	.word	OP_BRANCH
	.word	ic_beq
	.size	emit_beq, .-emit_beq
	.align	2
	.global	emit_jal
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_jal, %function
emit_jal:
	@ 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, #24
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L1024
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	encode_j_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1024+4
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1024+4
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1025:
	.align	2
.L1024:
	.word	OP_JAL
	.word	ic_jal
	.size	emit_jal, .-emit_jal
	.align	2
	.global	emit_jalr
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_jalr, %function
emit_jalr:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #40
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L1027
	ldmia	r3, {r2-r3}
	ldr	r1, .L1027+4
	ldmia	r1, {r0-r1}
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldmib	fp, {r0-r1}
	bl	encode_i_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1027+8
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1027+8
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1028:
	.align	2
.L1027:
	.word	F3_JALR
	.word	OP_JALR
	.word	ic_jalr
	.size	emit_jalr, .-emit_jalr
	.align	2
	.global	emit_ecall
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_ecall, %function
emit_ecall:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #32
	ldr	r3, .L1030
	ldmia	r3, {r8-r9}
	ldr	r3, .L1030+4
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1030+8
	ldmia	r3, {r2-r3}
	ldr	r1, .L1030+4
	ldmia	r1, {r0-r1}
	ldr	ip, .L1030+12
	ldmia	ip, {r6-r7}
	str	r6, [sp, #16]
	str	r7, [sp, #20]
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r8
	mov	r1, r9
	bl	encode_i_format
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	emit_instruction
	ldr	r3, .L1030+16
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	ldr	r3, .L1030+16
	stm	r3, {r4-r5}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1031:
	.align	2
.L1030:
	.word	F12_ECALL
	.word	REG_ZR
	.word	F3_ECALL
	.word	OP_SYSTEM
	.word	ic_ecall
	.size	emit_ecall, .-emit_ecall
	.align	2
	.global	fixup_relative_BFormat
	.syntax unified
	.arm
	.fpu softvfp
	.type	fixup_relative_BFormat, %function
fixup_relative_BFormat:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #48
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	load_instruction
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	ldr	r3, .L1033
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_rs2
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_rs1
	mov	r6, r0
	mov	r7, r1
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_funct3
	mov	r8, r0
	mov	r9, r1
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	get_opcode
	mov	r2, r0
	mov	r3, r1
	str	r2, [sp, #16]
	str	r3, [sp, #20]
	str	r8, [sp, #8]
	str	r9, [sp, #12]
	stm	sp, {r6-r7}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	encode_b_format
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	store_instruction
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1034:
	.align	2
.L1033:
	.word	binary_length
	.size	fixup_relative_BFormat, .-fixup_relative_BFormat
	.align	2
	.global	fixup_relative_JFormat
	.syntax unified
	.arm
	.fpu softvfp
	.type	fixup_relative_JFormat, %function
fixup_relative_JFormat:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #32
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	load_instruction
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	get_rd
	mov	r6, r0
	mov	r7, r1
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	get_opcode
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	encode_j_format
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	store_instruction
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
	.size	fixup_relative_JFormat, .-fixup_relative_JFormat
	.align	2
	.global	fixlink_relative
	.syntax unified
	.arm
	.fpu softvfp
	.type	fixlink_relative, %function
fixlink_relative:
	@ 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, #-20]
	str	r1, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	b	.L1037
.L1038:
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	load_instruction
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	get_immediate_j_format
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	fixup_relative_JFormat
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
.L1037:
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L1038
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	fixlink_relative, .-fixlink_relative
	.align	2
	.global	emit_data_word
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_data_word, %function
emit_data_word:
	@ args = 8, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L1042
	ldmia	r3, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	store_data
	ldr	r3, .L1042+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L1041
	ldr	r3, .L1042+4
	ldr	r6, [r3]
	ldr	r3, .L1042+8
	ldmia	r3, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L1042+12
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r1, r6, r3
	ldmib	fp, {r2-r3}
	stm	r1, {r2-r3}
.L1041:
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1043:
	.align	2
.L1042:
	.word	binary_length
	.word	data_line_number
	.word	allocated_memory
	.word	REGISTERSIZE
	.size	emit_data_word, .-emit_data_word
	.align	2
	.global	emit_string_data
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_string_data, %function
emit_string_data:
	@ 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, #40
	str	r0, [fp, #-56]
	ldr	r0, [fp, #-56]
	bl	get_string
	str	r0, [fp, #-48]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r0, [fp, #-48]
	bl	string_length
	mov	r2, r0
	mov	r3, r1
	adds	r8, r2, #1
	adc	r9, r3, #0
	ldr	r3, .L1047
	ldmia	r3, {r2-r3}
	mov	r0, r8
	mov	r1, r9
	bl	round_up
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	b	.L1045
.L1046:
	ldr	r3, [fp, #-48]
	ldmia	r3, {r8-r9}
	ldr	r0, [fp, #-56]
	bl	get_address
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	ldr	r0, [fp, #-56]
	bl	get_line_number
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r8
	mov	r1, r9
	bl	emit_data_word
	ldr	r3, [fp, #-48]
	add	r3, r3, #8
	str	r3, [fp, #-48]
	ldr	r3, .L1047
	ldmia	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	adds	r4, r0, r2
	adc	r5, r1, r3
	str	r4, [fp, #-44]
	str	r5, [fp, #-40]
.L1045:
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L1046
	nop
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1048:
	.align	2
.L1047:
	.word	REGISTERSIZE
	.size	emit_string_data, .-emit_string_data
	.align	2
	.global	emit_data_segment
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_data_segment, %function
emit_data_segment:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	ldr	r3, .L1057
	ldmia	r3, {r0-r1}
	ldr	r3, .L1057+4
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	ldr	r3, .L1057
	stm	r3, {r6-r7}
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	b	.L1050
.L1056:
	ldr	r3, .L1057+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	str	r3, [fp, #-40]
	b	.L1051
.L1055:
	ldr	r0, [fp, #-40]
	bl	get_class
	ldr	r3, .L1057+12
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1052
	ldr	r0, [fp, #-40]
	bl	get_value
	mov	r6, r0
	mov	r7, r1
	ldr	r0, [fp, #-40]
	bl	get_address
	mov	r8, r0
	mov	r9, r1
	ldr	r0, [fp, #-40]
	bl	get_line_number
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r8
	mov	r3, r9
	mov	r0, r6
	mov	r1, r7
	bl	emit_data_word
	b	.L1053
.L1052:
	ldr	r0, [fp, #-40]
	bl	get_class
	ldr	r3, .L1057+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1054
	ldr	r0, [fp, #-40]
	bl	get_value
	mov	r6, r0
	mov	r7, r1
	ldr	r0, [fp, #-40]
	bl	get_address
	mov	r8, r0
	mov	r9, r1
	ldr	r0, [fp, #-40]
	bl	get_line_number
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r8
	mov	r3, r9
	mov	r0, r6
	mov	r1, r7
	bl	emit_data_word
	b	.L1053
.L1054:
	ldr	r0, [fp, #-40]
	bl	get_class
	ldr	r3, .L1057+20
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1053
	ldr	r0, [fp, #-40]
	bl	emit_string_data
.L1053:
	ldr	r0, [fp, #-40]
	bl	get_next_entry
	str	r0, [fp, #-40]
.L1051:
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L1055
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
.L1050:
	ldr	r3, .L1057+24
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L1056
	ldr	r1, .L1057+4
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1058:
	.align	2
.L1057:
	.word	binary_length
	.word	allocated_memory
	.word	global_symbol_table
	.word	VARIABLE
	.word	BIGINT
	.word	STRING
	.word	HASH_TABLE_SIZE
	.size	emit_data_segment, .-emit_data_segment
	.align	2
	.global	create_elf_header
	.syntax unified
	.arm
	.fpu softvfp
	.type	create_elf_header, %function
create_elf_header:
	@ args = 0, pretend = 0, frame = 96
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #96
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, .L1061
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	smalloc
	str	r0, [fp, #-32]
	mov	r2, #8
	mov	r3, #0
	mov	r0, #69
	mov	r1, #0
	bl	left_shift
	mov	r4, r0
	mov	r5, r1
	mov	r2, #16
	mov	r3, #0
	mov	r0, #76
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	adds	r6, r4, r2
	adc	r7, r5, r3
	mov	r2, #24
	mov	r3, #0
	mov	r0, #70
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	adds	r8, r6, r2
	adc	r9, r7, r3
	mov	r2, #32
	mov	r3, #0
	mov	r0, #2
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	adds	r1, r8, r2
	str	r1, [fp, #-52]
	adc	r3, r9, r3
	str	r3, [fp, #-48]
	mov	r2, #40
	mov	r3, #0
	mov	r0, #1
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-60]
	adc	r3, r1, r3
	str	r3, [fp, #-56]
	mov	r2, #48
	mov	r3, #0
	mov	r0, #1
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	mov	ip, r0
	adds	ip, ip, r2
	str	ip, [fp, #-68]
	adc	r3, r1, r3
	str	r3, [fp, #-64]
	sub	r4, fp, #68
	ldmia	r4, {r3-r4}
	mov	r2, r3
	adds	r2, r2, #127
	str	r2, [fp, #-76]
	mov	r3, r4
	adc	r3, r3, #0
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-32]
	sub	r2, fp, #76
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	ldr	r3, [fp, #-32]
	add	r1, r3, #8
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	mov	r2, #16
	mov	r3, #0
	mov	r0, #243
	mov	r1, #0
	bl	left_shift
	mov	r4, r0
	mov	r5, r1
	mov	r2, #32
	mov	r3, #0
	mov	r0, #1
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	adds	r1, r4, r2
	str	r1, [fp, #-84]
	adc	r3, r5, r3
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-32]
	add	r3, r3, #16
	sub	r2, fp, #84
	ldmia	r2, {r1-r2}
	mov	r0, r1
	adds	r0, r0, #2
	str	r0, [fp, #-92]
	adc	r2, r2, #0
	str	r2, [fp, #-88]
	sub	r2, fp, #92
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	ldr	r3, [fp, #-32]
	add	r1, r3, #24
	ldr	r3, .L1061+4
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, .L1061+8
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-32]
	add	ip, r3, #32
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #3
	orr	r3, r3, r0, lsr #29
	lsl	r2, r0, #3
	stm	ip, {r2-r3}
	ldr	r3, [fp, #-32]
	add	r1, r3, #40
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L1061+8
	ldmia	r3, {r2-r3}
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #3
	orr	r1, r1, r2, lsr #29
	lsl	r0, r2, #3
	mov	r2, #32
	mov	r3, #0
	bl	left_shift
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L1061+8
	ldmia	r3, {r4-r5}
	mov	r2, r4
	mov	r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #3
	orr	r1, r1, r2, lsr #29
	lsl	r0, r2, #3
	mov	r2, r0
	mov	r3, r1
	subs	r1, r2, r4
	str	r1, [fp, #-100]
	sbc	r3, r3, r5
	str	r3, [fp, #-96]
	mov	r2, #48
	mov	r3, #0
	sub	r1, fp, #100
	ldmia	r1, {r0-r1}
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-32]
	add	r1, r1, #48
	adds	r0, r6, r2
	str	r0, [fp, #-108]
	adc	r3, r7, r3
	str	r3, [fp, #-104]
	sub	r4, fp, #108
	ldmia	r4, {r3-r4}
	stm	r1, {r3-r4}
	ldr	r3, [fp, #-32]
	add	r1, r3, #56
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	mov	r2, #32
	mov	r3, #0
	mov	r0, #7
	mov	r1, #0
	bl	left_shift
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-32]
	add	r1, r1, #64
	adds	r0, r2, #1
	str	r0, [fp, #-116]
	adc	r3, r3, #0
	str	r3, [fp, #-112]
	sub	r4, fp, #116
	ldmia	r4, {r3-r4}
	stm	r1, {r3-r4}
	ldr	r3, .L1061
	ldmia	r3, {r0-r1}
	ldr	r3, .L1061+8
	ldmia	r3, {r2-r3}
	ldr	ip, [fp, #-32]
	add	ip, ip, #72
	adds	lr, r0, r2
	str	lr, [fp, #-124]
	adc	r3, r1, r3
	str	r3, [fp, #-120]
	sub	r4, fp, #124
	ldmia	r4, {r3-r4}
	stm	ip, {r3-r4}
	ldr	r3, [fp, #-32]
	add	r1, r3, #80
	ldr	r3, .L1061+4
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-32]
	add	r1, r3, #88
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-32]
	add	r1, r3, #96
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-32]
	add	r1, r3, #104
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-32]
	add	r1, r3, #112
	ldr	r3, .L1061+12
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-32]
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1062:
	.align	2
.L1061:
	.word	ELF_HEADER_LEN
	.word	ELF_ENTRY_POINT
	.word	SIZEOFUINT64
	.word	PAGESIZE
	.size	create_elf_header, .-create_elf_header
	.align	2
	.global	open_write_only
	.syntax unified
	.arm
	.fpu softvfp
	.type	open_write_only, %function
open_write_only:
	@ 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]
	ldr	r3, .L1066
	ldmia	r3, {r0-r1}
	ldr	r3, .L1066+4
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-16]
	bl	open
	ldr	r3, .L1066+8
	ldmia	r3, {r2-r3}
	bl	sign_extend
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1064
	ldr	r3, .L1066+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1066+4
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-16]
	bl	open
	ldr	r3, .L1066+8
	ldmia	r3, {r2-r3}
	bl	sign_extend
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1064
	ldr	r3, .L1066+16
	ldmia	r3, {r0-r1}
	ldr	r3, .L1066+4
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-16]
	bl	open
	ldr	r3, .L1066+8
	ldmia	r3, {r2-r3}
	bl	sign_extend
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
.L1064:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1067:
	.align	2
.L1066:
	.word	MAC_O_CREAT_TRUNC_WRONLY
	.word	S_IRUSR_IWUSR_IRGRP_IROTH
	.word	SYSCALL_BITWIDTH
	.word	LINUX_O_CREAT_TRUNC_WRONLY
	.word	WINDOWS_O_BINARY_CREAT_TRUNC_WRONLY
	.size	open_write_only, .-open_write_only
	.section	.rodata
	.align	2
.LC136:
	.ascii	"%s: nothing to emit to output file %s\012\000"
	.align	2
.LC137:
	.ascii	"%s: could not create binary output file %s\012\000"
	.align	2
.LC138:
	.ascii	"%s: could not write ELF header of binary output fil"
	.ascii	"e %s\012\000"
	.align	2
.LC139:
	.ascii	"%s: could not write code length of binary output fi"
	.ascii	"le %s\012\000"
	.align	2
.LC140:
	.ascii	"%s: could not write binary into binary output file "
	.ascii	"%s\012\000"
	.align	2
.LC141:
	.ascii	"%s: %d bytes with %d instructions and %d bytes of d"
	.ascii	"ata written into %s\012\000"
	.text
	.align	2
	.global	selfie_output
	.syntax unified
	.arm
	.fpu softvfp
	.type	selfie_output, %function
selfie_output:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	add	fp, sp, #32
	sub	sp, sp, #20
	bl	get_argument
	mov	r3, r0
	ldr	r2, .L1075
	str	r3, [r2]
	ldr	r3, .L1075+4
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L1069
	ldr	r3, .L1075+8
	ldr	r3, [r3]
	ldr	r2, .L1075
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1075+12
	bl	printf2
	b	.L1068
.L1069:
	ldr	r3, .L1075
	ldr	r3, [r3]
	mov	r0, r3
	bl	open_write_only
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1071
	ldr	r3, .L1075+8
	ldr	r3, [r3]
	ldr	r2, .L1075
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1075+16
	bl	printf2
	ldr	r3, .L1075+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L1071:
	ldr	r3, .L1075+24
	ldr	r1, [r3]
	ldr	r3, .L1075+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	write
	ldr	r3, .L1075+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L1072
	ldr	r3, .L1075+8
	ldr	r3, [r3]
	ldr	r2, .L1075
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1075+32
	bl	printf2
	ldr	r3, .L1075+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L1072:
	ldr	r3, .L1075+36
	ldr	r1, [r3]
	ldr	r3, .L1075+40
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, .L1075+36
	ldr	r1, [r3]
	ldr	r3, .L1075+44
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	write
	ldr	r3, .L1075+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L1073
	ldr	r3, .L1075+8
	ldr	r3, [r3]
	ldr	r2, .L1075
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1075+48
	bl	printf2
	ldr	r3, .L1075+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L1073:
	ldr	r3, .L1075+52
	ldr	r1, [r3]
	ldr	r3, .L1075+4
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r1
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	write
	ldr	r3, .L1075+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	beq	.L1074
	ldr	r3, .L1075+8
	ldr	r3, [r3]
	ldr	r2, .L1075
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1075+56
	bl	printf2
	ldr	r3, .L1075+20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L1074:
	ldr	r3, .L1075+8
	ldr	r10, [r3]
	ldr	r3, .L1075+28
	ldmia	r3, {r0-r1}
	ldr	r3, .L1075+44
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L1075+4
	ldmia	r3, {r2-r3}
	adds	r8, r4, r2
	adc	r9, r5, r3
	mov	r3, r8
	mov	r4, r3
	ldr	r3, .L1075+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1075+60
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L1075+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1075+40
	ldmia	r3, {r2-r3}
	subs	r6, r0, r2
	sbc	r7, r1, r3
	mov	r3, r6
	mov	r2, r3
	ldr	r3, .L1075
	ldr	r3, [r3]
	str	r3, [sp, #4]
	str	r2, [sp]
	mov	r3, ip
	mov	r2, r4
	mov	r1, r10
	ldr	r0, .L1075+64
	bl	printf5
.L1068:
	sub	sp, fp, #32
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L1076:
	.align	2
.L1075:
	.word	binary_name
	.word	binary_length
	.word	selfie_name
	.word	.LC136
	.word	.LC137
	.word	EXITCODE_IOERROR
	.word	ELF_header
	.word	ELF_HEADER_LEN
	.word	.LC138
	.word	binary_buffer
	.word	code_length
	.word	SIZEOFUINT64
	.word	.LC139
	.word	binary
	.word	.LC140
	.word	INSTRUCTIONSIZE
	.word	.LC141
	.size	selfie_output, .-selfie_output
	.section	.rodata
	.align	2
.LC142:
	.ascii	"exit\000"
	.text
	.align	2
	.global	emit_exit
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_exit, %function
emit_exit:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1078
	ldmia	r3, {r6-r7}
	ldr	r3, .L1078+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1078+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1078+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1078+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1078+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1078+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1078+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1078+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1078+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1078+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1078+36
	ldmia	r3, {r4-r5}
	ldr	r3, .L1078+40
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1079:
	.align	2
.L1078:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	VOID_T
	.word	binary_length
	.word	.LC142
	.word	REG_A0
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_EXIT
	.size	emit_exit, .-emit_exit
	.section	.rodata
	.align	2
.LC143:
	.ascii	"read\000"
	.text
	.align	2
	.global	emit_read
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_read, %function
emit_read:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1081
	ldmia	r3, {r6-r7}
	ldr	r3, .L1081+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1081+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1081+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1081+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1081+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1081+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1081+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1081+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1081+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1081+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1081+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1081+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1081+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1081+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+44
	ldmia	r3, {r4-r5}
	ldr	r3, .L1081+48
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1081+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1081+52
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1082:
	.align	2
.L1081:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC143
	.word	REG_A2
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A1
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_READ
	.word	REG_RA
	.size	emit_read, .-emit_read
	.section	.rodata
	.align	2
.LC144:
	.ascii	"input\000"
	.text
	.align	2
	.global	emit_symbolic_input
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_symbolic_input, %function
emit_symbolic_input:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1084
	ldmia	r3, {r6-r7}
	ldr	r3, .L1084+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1084+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1084+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1084+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1084+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1084+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1084+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1084+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1084+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1084+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1084+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1084+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1084+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1084+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+44
	ldmia	r3, {r4-r5}
	ldr	r3, .L1084+48
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1084+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1084+52
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1085:
	.align	2
.L1084:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC144
	.word	REG_A2
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A1
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_SYMBOLIC_INPUT
	.word	REG_RA
	.size	emit_symbolic_input, .-emit_symbolic_input
	.section	.rodata
	.align	2
.LC145:
	.ascii	"printsv\000"
	.text
	.align	2
	.global	emit_printsv
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_printsv, %function
emit_printsv:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1087
	ldmia	r3, {r6-r7}
	ldr	r3, .L1087+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1087+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1087+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1087+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1087+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1087+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1087+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1087+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1087+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1087+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1087+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1087+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1087+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1087+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1087+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1087+40
	ldmia	r3, {r4-r5}
	ldr	r3, .L1087+44
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1087+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1087+48
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1088:
	.align	2
.L1087:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC145
	.word	REG_A1
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_PRINTSV
	.word	REG_RA
	.size	emit_printsv, .-emit_printsv
	.section	.rodata
	.align	2
.LC146:
	.ascii	"assert\000"
	.text
	.align	2
	.global	emit_assert
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_assert, %function
emit_assert:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1090
	ldmia	r3, {r6-r7}
	ldr	r3, .L1090+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1090+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1090+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1090+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1090+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1090+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1090+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1090+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1090+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1090+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1090+36
	ldmia	r3, {r4-r5}
	ldr	r3, .L1090+40
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1090+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1090+44
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1091:
	.align	2
.L1090:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC146
	.word	REG_A0
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_ASSERT
	.word	REG_RA
	.size	emit_assert, .-emit_assert
	.section	.rodata
	.align	2
.LC147:
	.ascii	"assert_begin\000"
	.text
	.align	2
	.global	emit_assert_begin
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_assert_begin, %function
emit_assert_begin:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1093
	ldmia	r3, {r6-r7}
	ldr	r3, .L1093+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1093+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1093+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1093+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1093+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1093+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1093+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1093+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1093+32
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1094:
	.align	2
.L1093:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC147
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_ASSERT_ZONE_BGN
	.word	REG_RA
	.size	emit_assert_begin, .-emit_assert_begin
	.section	.rodata
	.align	2
.LC148:
	.ascii	"assert_end\000"
	.text
	.align	2
	.global	emit_assert_end
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_assert_end, %function
emit_assert_end:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1096
	ldmia	r3, {r6-r7}
	ldr	r3, .L1096+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1096+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1096+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1096+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1096+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1096+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1096+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1096+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1096+32
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1097:
	.align	2
.L1096:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC148
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_ASSERT_ZONE_END
	.word	REG_RA
	.size	emit_assert_end, .-emit_assert_end
	.section	.rodata
	.align	2
.LC149:
	.ascii	"write\000"
	.text
	.align	2
	.global	emit_write
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_write, %function
emit_write:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1099
	ldmia	r3, {r6-r7}
	ldr	r3, .L1099+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1099+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1099+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1099+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1099+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1099+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1099+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1099+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1099+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1099+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1099+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1099+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1099+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1099+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+44
	ldmia	r3, {r4-r5}
	ldr	r3, .L1099+48
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1099+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1099+52
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1100:
	.align	2
.L1099:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC149
	.word	REG_A2
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A1
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_WRITE
	.word	REG_RA
	.size	emit_write, .-emit_write
	.section	.rodata
	.align	2
.LC150:
	.ascii	"open\000"
	.text
	.align	2
	.global	emit_open
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_open, %function
emit_open:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1102
	ldmia	r3, {r6-r7}
	ldr	r3, .L1102+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1102+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1102+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1102+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1102+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1102+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1102+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1102+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1102+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1102+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1102+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1102+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1102+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1102+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+44
	ldmia	r3, {r4-r5}
	ldr	r3, .L1102+48
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1102+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1102+52
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1103:
	.align	2
.L1102:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64_T
	.word	binary_length
	.word	.LC150
	.word	REG_A2
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A1
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_OPEN
	.word	REG_RA
	.size	emit_open, .-emit_open
	.section	.rodata
	.align	2
.LC151:
	.ascii	"malloc\000"
	.align	2
.LC152:
	.ascii	"zalloc\000"
	.text
	.align	2
	.global	emit_malloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_malloc, %function
emit_malloc:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #80
	ldr	r3, .L1105
	ldmia	r3, {r6-r7}
	ldr	r3, .L1105+4
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+8
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+12
	ldmia	r3, {r2-r3}
	str	r2, [sp, #32]
	str	r3, [sp, #36]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #24]
	str	r3, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r4, [sp, #8]
	str	r5, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1105+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1105
	ldmia	r3, {r6-r7}
	ldr	r3, .L1105+4
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+8
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+12
	ldmia	r3, {r2-r3}
	str	r2, [sp, #32]
	str	r3, [sp, #36]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #24]
	str	r3, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r4, [sp, #8]
	str	r5, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1105+20
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1105+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+28
	ldmia	r3, {r2-r3}
	adds	r8, r0, r2
	adc	r9, r1, r3
	ldr	r3, .L1105+24
	stm	r3, {r8-r9}
	ldr	r3, .L1105+32
	ldmia	r3, {r6-r7}
	ldr	r0, .L1105+36
	bl	string_copy
	mov	ip, r0
	ldr	r3, .L1105+40
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+24
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	str	r2, [sp, #32]
	str	r3, [sp, #36]
	mov	r2, #0
	mov	r3, #0
	str	r2, [sp, #24]
	str	r3, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r4, [sp, #8]
	str	r5, [sp, #12]
	mov	r2, #1
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, ip
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1105+48
	ldmia	r3, {r2-r3}
	subs	r1, r2, #1
	str	r1, [fp, #-44]
	sbc	r3, r3, #0
	str	r3, [fp, #-40]
	ldr	r3, .L1105+48
	sub	r2, fp, #44
	ldmia	r2, {r1-r2}
	stm	r3, {r1-r2}
	ldr	r0, .L1105+36
	bl	string_copy
	mov	r1, r0
	ldr	r3, .L1105+40
	ldmia	r3, {r2-r3}
	mov	r0, r1
	bl	search_global_symbol_table
	str	r0, [fp, #-32]
	bl	talloc
	bl	current_temporary
	ldr	r3, .L1105+52
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1105+52
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+52
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	current_temporary
	ldr	r3, .L1105+56
	ldmia	r3, {r2-r3}
	bl	emit_round_up
	bl	talloc
	bl	current_temporary
	mov	r4, r0
	mov	r5, r1
	ldr	r0, [fp, #-32]
	bl	get_scope
	mov	r6, r0
	mov	r7, r1
	ldr	r0, [fp, #-32]
	bl	get_address
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_ld
	ldr	r3, .L1105+60
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_add
	ldr	r3, .L1105+64
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+68
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+72
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1105+52
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+52
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+28
	ldmia	r3, {r2-r3}
	rsbs	r2, r2, #0
	rsc	r3, r3, #0
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1105+52
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, #0
	mov	r3, #0
	bl	emit_sd
	ldr	r3, .L1105+60
	ldmia	r3, {r4-r5}
	bl	current_temporary
	mov	r6, r0
	mov	r7, r1
	bl	previous_temporary
	mov	r2, r0
	mov	r3, r1
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_add
	ldr	r3, .L1105+60
	ldmia	r3, {r4-r5}
	bl	current_temporary
	ldr	r3, .L1105+76
	ldmia	r3, {r2-r3}
	adds	ip, r2, r2
	str	ip, [fp, #-60]
	adc	r3, r3, r3
	str	r3, [fp, #-56]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_beq
	ldr	r3, .L1105+68
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+68
	ldmia	r3, {r6-r7}
	ldr	r3, .L1105+76
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #2
	orr	r3, r3, r0, lsr #30
	lsl	r2, r0, #2
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_beq
	ldr	r3, .L1105+68
	ldmia	r3, {r4-r5}
	bl	previous_temporary
	mov	r6, r0
	mov	r7, r1
	ldr	r3, .L1105+76
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	adds	ip, r2, r2
	str	ip, [fp, #-68]
	adc	r3, r3, r3
	str	r3, [fp, #-64]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	adds	ip, r2, r0
	str	ip, [fp, #-52]
	adc	r3, r3, r1
	str	r3, [fp, #-48]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_beq
	ldr	r3, .L1105+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+68
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	ldr	r3, .L1105+68
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+68
	ldmia	r3, {r6-r7}
	ldr	r3, .L1105+76
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #2
	orr	r3, r3, r0, lsr #30
	lsl	r2, r0, #2
	stm	sp, {r2-r3}
	mov	r2, r6
	mov	r3, r7
	mov	r0, r4
	mov	r1, r5
	bl	emit_beq
	ldr	r0, [fp, #-32]
	bl	get_scope
	mov	r4, r0
	mov	r5, r1
	ldr	r0, [fp, #-32]
	bl	get_address
	ldr	r3, .L1105+60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	emit_sd
	ldr	r3, .L1105+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+52
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1105+52
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+52
	ldmia	r3, {r4-r5}
	ldr	r3, .L1105+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	mov	r0, #2
	mov	r1, #0
	bl	tfree
	ldr	r3, .L1105+68
	ldmia	r3, {r0-r1}
	ldr	r3, .L1105+80
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1106:
	.align	2
.L1105:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64STAR_T
	.word	binary_length
	.word	.LC151
	.word	.LC152
	.word	allocated_memory
	.word	REGISTERSIZE
	.word	GLOBAL_TABLE
	.word	.LC100
	.word	VARIABLE
	.word	UINT64_T
	.word	number_of_global_variables
	.word	REG_SP
	.word	SIZEOFUINT64
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_BRK
	.word	INSTRUCTIONSIZE
	.word	REG_RA
	.size	emit_malloc, .-emit_malloc
	.section	.rodata
	.align	2
.LC153:
	.ascii	"hypster_switch\000"
	.text
	.align	2
	.global	emit_switch
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_switch, %function
emit_switch:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #40
	ldr	r3, .L1108
	ldmia	r3, {r6-r7}
	ldr	r3, .L1108+4
	ldmia	r3, {r2-r3}
	ldr	r1, .L1108+8
	ldmia	r1, {r0-r1}
	ldr	ip, .L1108+12
	ldmia	ip, {r4-r5}
	str	r4, [sp, #32]
	str	r5, [sp, #36]
	mov	r4, #0
	mov	r5, #0
	str	r4, [sp, #24]
	str	r5, [sp, #28]
	str	r0, [sp, #16]
	str	r1, [sp, #20]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	mov	r2, #0
	mov	r3, #0
	stm	sp, {r2-r3}
	ldr	r2, .L1108+16
	mov	r0, r6
	mov	r1, r7
	bl	create_symbol_table_entry
	ldr	r3, .L1108+20
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1108+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1108+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1108+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+24
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_ld
	ldr	r3, .L1108+24
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+24
	ldmia	r3, {r4-r5}
	ldr	r3, .L1108+28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	ldr	r3, .L1108+36
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+40
	ldmia	r3, {r4-r5}
	ldr	r3, .L1108+44
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	bl	emit_addi
	bl	emit_ecall
	ldr	r3, .L1108+32
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+20
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_addi
	ldr	r3, .L1108+40
	ldmia	r3, {r0-r1}
	ldr	r3, .L1108+48
	ldmia	r3, {r2-r3}
	mov	r4, #0
	mov	r5, #0
	stm	sp, {r4-r5}
	bl	emit_jalr
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1109:
	.align	2
.L1108:
	.word	LIBRARY_TABLE
	.word	PROCEDURE
	.word	UINT64STAR_T
	.word	binary_length
	.word	.LC153
	.word	REG_A1
	.word	REG_SP
	.word	REGISTERSIZE
	.word	REG_A0
	.word	REG_A7
	.word	REG_ZR
	.word	SYSCALL_SWITCH
	.word	REG_RA
	.size	emit_switch, .-emit_switch
	.section	.rodata
	.align	2
.LC154:
	.ascii	"(~%d)\000"
	.text
	.align	2
	.global	print_code_line_number_for_instruction
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_code_line_number_for_instruction, %function
print_code_line_number_for_instruction:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #12
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L1113
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L1112
	ldr	r3, .L1113
	ldr	r4, [r3]
	ldr	r3, .L1113+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r4, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	ldr	r0, .L1113+8
	bl	printf1
.L1112:
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L1114:
	.align	2
.L1113:
	.word	code_line_number
	.word	INSTRUCTIONSIZE
	.word	.LC154
	.size	print_code_line_number_for_instruction, .-print_code_line_number_for_instruction
	.section	.rodata
	.align	2
.LC155:
	.ascii	"%x\000"
	.align	2
.LC156:
	.ascii	": %p\000"
	.align	2
.LC157:
	.ascii	": \000"
	.text
	.align	2
	.global	print_code_context_for_instruction
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_code_context_for_instruction, %function
print_code_context_for_instruction:
	@ 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, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L1117
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	ldr	r0, .L1117+4
	bl	printf1
	ldr	r3, .L1117+8
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1116
	ldr	r3, .L1117
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_line_number_for_instruction
	ldr	r3, .L1117+12
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	ldr	r0, .L1117+16
	bl	printf1
.L1116:
	ldr	r0, .L1117+20
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1118:
	.align	2
.L1117:
	.word	pc
	.word	.LC155
	.word	disassemble_verbose
	.word	ir
	.word	.LC156
	.word	.LC157
	.size	print_code_context_for_instruction, .-print_code_context_for_instruction
	.section	.rodata
	.align	2
.LC158:
	.ascii	"lui %s,%x\000"
	.text
	.align	2
	.global	print_lui
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_lui, %function
print_lui:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L1120
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1120+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r4, r0
	ldr	r3, .L1120+8
	ldmia	r3, {r0-r1}
	mov	r2, #20
	mov	r3, #0
	bl	sign_shrink
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L1120+12
	bl	printf2
	nop
	pop	{r4, r5, fp, pc}
.L1121:
	.align	2
.L1120:
	.word	pc
	.word	rd
	.word	imm
	.word	.LC158
	.size	print_lui, .-print_lui
	.section	.rodata
	.align	2
.LC159:
	.ascii	"nop\000"
	.align	2
.LC160:
	.ascii	"addi %s,%s,%d\000"
	.text
	.align	2
	.global	print_addi
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_addi, %function
print_addi:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L1125
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1125+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1125+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1123
	ldr	r3, .L1125+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1125+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1123
	ldr	r3, .L1125+16
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L1123
	ldr	r0, .L1125+20
	bl	print
	pop	{r4, r5, fp, pc}
.L1123:
	ldr	r3, .L1125+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r4, r0
	ldr	r3, .L1125+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r1, r0
	ldr	r3, .L1125+16
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r2, r1
	mov	r1, r4
	ldr	r0, .L1125+24
	bl	printf3
	pop	{r4, r5, fp, pc}
.L1126:
	.align	2
.L1125:
	.word	pc
	.word	rd
	.word	REG_ZR
	.word	rs1
	.word	imm
	.word	.LC159
	.word	.LC160
	.size	print_addi, .-print_addi
	.section	.rodata
	.align	2
.LC161:
	.ascii	"%s %s,%s,%s\000"
	.text
	.align	2
	.global	print_add_sub_mul_divu_remu_sltu
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_add_sub_mul_divu_remu_sltu, %function
print_add_sub_mul_divu_remu_sltu:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L1128
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1128+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r4, r0
	ldr	r3, .L1128+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r5, r0
	ldr	r3, .L1128+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r3, r0
	str	r3, [sp]
	mov	r3, r5
	mov	r2, r4
	ldr	r1, [fp, #-16]
	ldr	r0, .L1128+16
	bl	printf4
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1129:
	.align	2
.L1128:
	.word	pc
	.word	rd
	.word	rs1
	.word	rs2
	.word	.LC161
	.size	print_add_sub_mul_divu_remu_sltu, .-print_add_sub_mul_divu_remu_sltu
	.section	.rodata
	.align	2
.LC162:
	.ascii	"ld %s,%d(%s)\000"
	.text
	.align	2
	.global	print_ld
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_ld, %function
print_ld:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L1131
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1131+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r4, r0
	ldr	r3, .L1131+8
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r5, r3
	ldr	r3, .L1131+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r3, r0
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L1131+16
	bl	printf3
	nop
	pop	{r4, r5, fp, pc}
.L1132:
	.align	2
.L1131:
	.word	pc
	.word	rd
	.word	imm
	.word	rs1
	.word	.LC162
	.size	print_ld, .-print_ld
	.section	.rodata
	.align	2
.LC163:
	.ascii	"sd %s,%d(%s)\000"
	.text
	.align	2
	.global	print_sd
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_sd, %function
print_sd:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L1134
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1134+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r4, r0
	ldr	r3, .L1134+8
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r5, r3
	ldr	r3, .L1134+12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r3, r0
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L1134+16
	bl	printf3
	nop
	pop	{r4, r5, fp, pc}
.L1135:
	.align	2
.L1134:
	.word	pc
	.word	rs2
	.word	imm
	.word	rs1
	.word	.LC163
	.size	print_sd, .-print_sd
	.section	.rodata
	.align	2
.LC164:
	.ascii	"beq %s,%s,%d[%x]\000"
	.text
	.align	2
	.global	print_beq
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_beq, %function
print_beq:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #8
	ldr	r3, .L1137
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1137+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r6, r0
	ldr	r3, .L1137+8
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r7, r0
	ldr	r3, .L1137+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1137+16
	ldmia	r3, {r2-r3}
	bl	signed_division
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L1137
	ldmia	r3, {r0-r1}
	ldr	r3, .L1137+12
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r3, r4
	str	r3, [sp]
	mov	r3, ip
	mov	r2, r7
	mov	r1, r6
	ldr	r0, .L1137+20
	bl	printf4
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L1138:
	.align	2
.L1137:
	.word	pc
	.word	rs1
	.word	rs2
	.word	imm
	.word	INSTRUCTIONSIZE
	.word	.LC164
	.size	print_beq, .-print_beq
	.section	.rodata
	.align	2
.LC165:
	.ascii	"jal %s,%d[%x]\000"
	.text
	.align	2
	.global	print_jal
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_jal, %function
print_jal:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	ldr	r3, .L1140
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1140+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r6, r0
	ldr	r3, .L1140+8
	ldmia	r3, {r0-r1}
	ldr	r3, .L1140+12
	ldmia	r3, {r2-r3}
	bl	signed_division
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L1140
	ldmia	r3, {r0-r1}
	ldr	r3, .L1140+8
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	mov	r3, r4
	mov	r2, ip
	mov	r1, r6
	ldr	r0, .L1140+16
	bl	printf3
	nop
	pop	{r4, r5, r6, r7, fp, pc}
.L1141:
	.align	2
.L1140:
	.word	pc
	.word	rd
	.word	imm
	.word	INSTRUCTIONSIZE
	.word	.LC165
	.size	print_jal, .-print_jal
	.section	.rodata
	.align	2
.LC166:
	.ascii	"jalr %s,%d(%s)\000"
	.text
	.align	2
	.global	print_jalr
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_jalr, %function
print_jalr:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L1143
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r3, .L1143+4
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r4, r0
	ldr	r3, .L1143+8
	ldmia	r3, {r0-r1}
	ldr	r3, .L1143+12
	ldmia	r3, {r2-r3}
	bl	signed_division
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	r5, r3
	ldr	r3, .L1143+16
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_register_name
	mov	r3, r0
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L1143+20
	bl	printf3
	nop
	pop	{r4, r5, fp, pc}
.L1144:
	.align	2
.L1143:
	.word	pc
	.word	rd
	.word	imm
	.word	INSTRUCTIONSIZE
	.word	rs1
	.word	.LC166
	.size	print_jalr, .-print_jalr
	.align	2
	.global	print_ecall
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_ecall, %function
print_ecall:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L1146
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	print_code_context_for_instruction
	ldr	r0, .L1146+4
	bl	print
	nop
	pop	{fp, pc}
.L1147:
	.align	2
.L1146:
	.word	pc
	.word	.LC133
	.size	print_ecall, .-print_ecall
	.align	2
	.global	print_data_line_number
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_data_line_number, %function
print_data_line_number:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	ldr	r3, .L1151
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L1150
	ldr	r3, .L1151
	ldr	r6, [r3]
	ldr	r3, .L1151+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1151+8
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	ldr	r3, .L1151+12
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r6, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	ldr	r0, .L1151+16
	bl	printf1
.L1150:
	nop
	pop	{r4, r5, r6, r7, fp, pc}
.L1152:
	.align	2
.L1151:
	.word	data_line_number
	.word	pc
	.word	code_length
	.word	REGISTERSIZE
	.word	.LC154
	.size	print_data_line_number, .-print_data_line_number
	.section	.rodata
	.align	2
.LC167:
	.ascii	" \000"
	.text
	.align	2
	.global	print_data_context
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_data_context, %function
print_data_context:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #8
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, .L1157
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r1, r3
	ldr	r0, .L1157+4
	bl	printf1
	ldr	r3, .L1157+8
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1154
	bl	print_data_line_number
	ldr	r0, .L1157+12
	bl	print
	ldr	r3, .L1157+16
	ldmia	r3, {r2-r3}
	adds	r4, r2, r2
	adc	r5, r3, r3
	mov	r2, r4
	mov	r3, r5
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	print_hexadecimal
	ldr	r0, .L1157+20
	bl	print
	b	.L1156
.L1154:
	ldr	r0, .L1157+12
	bl	print
.L1156:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1158:
	.align	2
.L1157:
	.word	pc
	.word	.LC155
	.word	disassemble_verbose
	.word	.LC157
	.word	SIZEOFUINT64
	.word	.LC167
	.size	print_data_context, .-print_data_context
	.section	.rodata
	.align	2
.LC168:
	.ascii	".quad %x\000"
	.text
	.align	2
	.global	print_data
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_data, %function
print_data:
	@ 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, #-12]
	str	r1, [fp, #-8]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_data_context
	ldr	r3, [fp, #-12]
	mov	r1, r3
	ldr	r0, .L1160
	bl	printf1
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1161:
	.align	2
.L1160:
	.word	.LC168
	.size	print_data, .-print_data
	.section	.rodata
	.align	2
.LC169:
	.ascii	"%s=%x\000"
	.text
	.align	2
	.global	print_register_hexadecimal
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_register_hexadecimal, %function
print_register_hexadecimal:
	@ 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, #-12]
	str	r1, [fp, #-8]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_register_name
	mov	r1, r0
	ldr	r3, .L1163
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r2, r3
	ldr	r0, .L1163+4
	bl	printf2
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1164:
	.align	2
.L1163:
	.word	registers
	.word	.LC169
	.size	print_register_hexadecimal, .-print_register_hexadecimal
	.section	.rodata
	.align	2
.LC170:
	.ascii	"%s=%o\000"
	.text
	.align	2
	.global	print_register_octal
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_register_octal, %function
print_register_octal:
	@ 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, #-12]
	str	r1, [fp, #-8]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_register_name
	mov	r1, r0
	ldr	r3, .L1166
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r2, r3
	ldr	r0, .L1166+4
	bl	printf2
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1167:
	.align	2
.L1166:
	.word	registers
	.word	.LC170
	.size	print_register_octal, .-print_register_octal
	.align	2
	.global	is_system_register
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_system_register, %function
is_system_register:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L1174
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1169
	mov	r2, #1
	mov	r3, #0
	b	.L1170
.L1169:
	ldr	r3, .L1174+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1171
	mov	r2, #1
	mov	r3, #0
	b	.L1170
.L1171:
	ldr	r3, .L1174+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1172
	mov	r2, #1
	mov	r3, #0
	b	.L1170
.L1172:
	ldr	r3, .L1174+12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1173
	mov	r2, #1
	mov	r3, #0
	b	.L1170
.L1173:
	mov	r2, #0
	mov	r3, #0
.L1170:
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L1175:
	.align	2
.L1174:
	.word	REG_GP
	.word	REG_FP
	.word	REG_RA
	.word	REG_SP
	.size	is_system_register, .-is_system_register
	.section	.rodata
	.align	2
.LC171:
	.ascii	"%s=%d(%x)\000"
	.text
	.align	2
	.global	print_register_value
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_register_value, %function
print_register_value:
	@ 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, #-12]
	str	r1, [fp, #-8]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	is_system_register
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1177
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	print_register_hexadecimal
	b	.L1179
.L1177:
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	get_register_name
	mov	r1, r0
	ldr	r3, .L1180
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r0, r3
	ldr	r3, .L1180
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r2, r0
	ldr	r0, .L1180+4
	bl	printf3
.L1179:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1181:
	.align	2
.L1180:
	.word	registers
	.word	.LC171
	.size	print_register_value, .-print_register_value
	.section	.rodata
	.align	2
.LC172:
	.ascii	"%s: unknown instruction with %x opcode detected\012"
	.ascii	"\000"
	.text
	.align	2
	.global	decode_execute
	.syntax unified
	.arm
	.fpu softvfp
	.type	decode_execute, %function
decode_execute:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L1229
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	get_opcode
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L1229+4
	stm	r1, {r2-r3}
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+8
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1183
	bl	decode_i_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+16
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1214
	bl	print_addi
	bl	println
	b	.L1214
.L1183:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+24
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1187
	bl	decode_i_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+28
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1215
	bl	print_ld
	bl	println
	b	.L1215
.L1187:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+32
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1189
	bl	decode_s_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+36
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1216
	bl	print_sd
	bl	println
	b	.L1216
.L1189:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+40
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1191
	bl	decode_r_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+44
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1192
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+52
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1193
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1217
	ldr	r0, .L1229+56
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1217
.L1193:
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+60
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1195
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1218
	ldr	r0, .L1229+64
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1218
.L1195:
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+68
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1219
	ldr	r0, .L1229+72
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1219
.L1192:
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+76
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1198
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+80
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1220
	ldr	r0, .L1229+84
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1220
.L1198:
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+88
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1200
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+92
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1221
	ldr	r0, .L1229+96
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1221
.L1200:
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+100
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1202
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+104
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1222
	ldr	r0, .L1229+108
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1222
.L1202:
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+112
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+48
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+116
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1223
	ldr	r0, .L1229+120
	bl	print_add_sub_mul_divu_remu_sltu
	bl	println
	b	.L1223
.L1191:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+124
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1205
	bl	decode_b_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+128
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1224
	bl	print_beq
	bl	println
	b	.L1224
.L1205:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+132
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1207
	bl	decode_j_format
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1225
	bl	print_jal
	bl	println
	b	.L1225
.L1207:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+136
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1209
	bl	decode_i_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+140
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1226
	bl	print_jalr
	bl	println
	b	.L1226
.L1209:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+144
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1211
	bl	decode_u_format
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1227
	bl	print_lui
	bl	println
	b	.L1227
.L1211:
	ldr	r3, .L1229+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+148
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	bl	decode_i_format
	ldr	r3, .L1229+12
	ldmia	r3, {r0-r1}
	ldr	r3, .L1229+152
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L1184
	ldr	r3, .L1229+20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	beq	.L1228
	bl	print_ecall
	bl	println
	b	.L1228
.L1184:
	ldr	r1, .L1229+156
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L1229+160
	ldr	r1, [r3]
	ldr	r3, .L1229+4
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r2, r3
	ldr	r0, .L1229+164
	bl	printf2
	ldr	r3, .L1229+168
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
	pop	{fp, pc}
.L1214:
	nop
	pop	{fp, pc}
.L1215:
	nop
	pop	{fp, pc}
.L1216:
	nop
	pop	{fp, pc}
.L1217:
	nop
	pop	{fp, pc}
.L1218:
	nop
	pop	{fp, pc}
.L1219:
	nop
	pop	{fp, pc}
.L1220:
	nop
	pop	{fp, pc}
.L1221:
	nop
	pop	{fp, pc}
.L1222:
	nop
	pop	{fp, pc}
.L1223:
	nop
	pop	{fp, pc}
.L1224:
	nop
	pop	{fp, pc}
.L1225:
	nop
	pop	{fp, pc}
.L1226:
	nop
	pop	{fp, pc}
.L1227:
	nop
	pop	{fp, pc}
.L1228:
	nop
	pop	{fp, pc}
.L1230:
	.align	2
.L1229:
	.word	ir
	.word	opcode
	.word	OP_IMM
	.word	funct3
	.word	F3_ADDI
	.word	disassemble
	.word	OP_LD
	.word	F3_LD
	.word	OP_SD
	.word	F3_SD
	.word	OP_OP
	.word	F3_ADD
	.word	funct7
	.word	F7_ADD
	.word	.LC122
	.word	F7_SUB
	.word	.LC123
	.word	F7_MUL
	.word	.LC124
	.word	F3_DIVU
	.word	F7_DIVU
	.word	.LC125
	.word	F3_REMU
	.word	F7_REMU
	.word	.LC126
	.word	F3_SLTU
	.word	F7_SLTU
	.word	.LC129
	.word	F3_XOR
	.word	F7_XOR
	.word	.LC127
	.word	OP_BRANCH
	.word	F3_BEQ
	.word	OP_JAL
	.word	OP_JALR
	.word	F3_JALR
	.word	OP_LUI
	.word	OP_SYSTEM
	.word	F3_ECALL
	.word	output_fd
	.word	selfie_name
	.word	.LC172
	.word	EXITCODE_UNKNOWNINSTRUCTION
	.size	decode_execute, .-decode_execute
	.section	.rodata
	.align	2
.LC173:
	.ascii	"%s: nothing to disassemble to output file %s\012\000"
	.align	2
.LC174:
	.ascii	"%s: could not create assembly output file %s\012\000"
	.align	2
.LC175:
	.ascii	"%s: %d characters of assembly with %d instructions "
	.ascii	"and %d bytes of data written into %s\012\000"
	.text
	.align	2
	.global	selfie_disassemble
	.syntax unified
	.arm
	.fpu softvfp
	.type	selfie_disassemble, %function
selfie_disassemble:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #24
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	bl	get_argument
	mov	r3, r0
	ldr	r2, .L1239
	str	r3, [r2]
	ldr	r3, .L1239+4
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L1232
	ldr	r3, .L1239+8
	ldr	r3, [r3]
	ldr	r2, .L1239
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1239+12
	bl	printf2
	b	.L1231
.L1232:
	ldr	r3, .L1239
	ldr	r3, [r3]
	mov	r0, r3
	bl	open_write_only
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L1239+16
	stm	r1, {r2-r3}
	ldr	r3, .L1239+16
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	signed_less_than
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1234
	ldr	r3, .L1239+8
	ldr	r3, [r3]
	ldr	r2, .L1239
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L1239+20
	bl	printf2
	ldr	r3, .L1239+24
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	exit
.L1234:
	ldr	r3, .L1239
	ldr	r3, [r3]
	ldr	r2, .L1239+28
	str	r3, [r2]
	ldr	r3, .L1239+16
	ldmia	r3, {r2-r3}
	ldr	r1, .L1239+32
	stm	r1, {r2-r3}
	bl	reset_library
	bl	reset_interpreter
	ldr	r1, .L1239+36
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L1239+40
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	b	.L1235
.L1236:
	ldr	r3, .L1239+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	load_instruction
	mov	r2, r0
	mov	r3, r1
	ldr	r1, .L1239+48
	stm	r1, {r2-r3}
	bl	decode_execute
	ldr	r3, .L1239+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1239+52
	ldmia	r3, {r2-r3}
	adds	r6, r0, r2
	adc	r7, r1, r3
	ldr	r3, .L1239+44
	stm	r3, {r6-r7}
.L1235:
	ldr	r3, .L1239+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1239+4
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L1236
	b	.L1237
.L1238:
	ldr	r3, .L1239+44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	load_data
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	print_data
	bl	println
	ldr	r3, .L1239+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1239+56
	ldmia	r3, {r2-r3}
	adds	r4, r0, r2
	adc	r5, r1, r3
	ldr	r3, .L1239+44
	stm	r3, {r4-r5}
.L1237:
	ldr	r3, .L1239+44
	ldmia	r3, {r0-r1}
	ldr	r3, .L1239+60
	ldmia	r3, {r2-r3}
	cmp	r1, r3
	cmpeq	r0, r2
	bcc	.L1238
	ldr	r1, .L1239+40
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r1, .L1239+36
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L1239+28
	mov	r2, #0
	str	r2, [r3]
	ldr	r1, .L1239+32
	mov	r2, #1
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, .L1239+8
	ldr	r4, [r3]
	ldr	r3, .L1239+64
	ldmia	r3, {r2-r3}
	mov	r3, r2
	mov	r5, r3
	ldr	r3, .L1239+4
	ldmia	r3, {r0-r1}
	ldr	r3, .L1239+52
	ldmia	r3, {r2-r3}
	bl	__aeabi_uldivmod
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	mov	ip, r3
	ldr	r3, .L1239+60
	ldmia	r3, {r0-r1}
	ldr	r3, .L1239+4
	ldmia	r3, {r2-r3}
	subs	r8, r0, r2
	sbc	r9, r1, r3
	mov	r3, r8
	mov	r2, r3
	ldr	r3, .L1239
	ldr	r3, [r3]
	str	r3, [sp, #4]
	str	r2, [sp]
	mov	r3, ip
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L1239+68
	bl	printf5
.L1231:
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L1240:
	.align	2
.L1239:
	.word	assembly_name
	.word	code_length
	.word	selfie_name
	.word	.LC173
	.word	assembly_fd
	.word	.LC174
	.word	EXITCODE_IOERROR
	.word	output_name
	.word	output_fd
	.word	disassemble
	.word	disassemble_verbose
	.word	pc
	.word	ir
	.word	INSTRUCTIONSIZE
	.word	REGISTERSIZE
	.word	binary_length
	.word	number_of_written_characters
	.word	.LC175
	.size	selfie_disassemble, .-selfie_disassemble
	.align	2
	.global	number_of_remaining_arguments
	.syntax unified
	.arm
	.fpu softvfp
	.type	number_of_remaining_arguments, %function
number_of_remaining_arguments:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L1243
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L1244:
	.align	2
.L1243:
	.word	selfie_argc
	.size	number_of_remaining_arguments, .-number_of_remaining_arguments
	.align	2
	.global	remaining_arguments
	.syntax unified
	.arm
	.fpu softvfp
	.type	remaining_arguments, %function
remaining_arguments:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L1247
	ldr	r3, [r3]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L1248:
	.align	2
.L1247:
	.word	selfie_argv
	.size	remaining_arguments, .-remaining_arguments
	.align	2
	.global	peek_argument
	.syntax unified
	.arm
	.fpu softvfp
	.type	peek_argument, %function
peek_argument:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	number_of_remaining_arguments
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1250
	ldr	r3, .L1252
	ldr	r3, [r3]
	ldmia	r3, {r2-r3}
	mov	r3, r2
	b	.L1251
.L1250:
	mov	r3, #0
.L1251:
	mov	r0, r3
	pop	{fp, pc}
.L1253:
	.align	2
.L1252:
	.word	selfie_argv
	.size	peek_argument, .-peek_argument
	.align	2
	.global	get_argument
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_argument, %function
get_argument:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #8
	bl	peek_argument
	str	r0, [fp, #-16]
	bl	number_of_remaining_arguments
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1255
	ldr	r3, .L1257
	ldmia	r3, {r2-r3}
	subs	r4, r2, #1
	sbc	r5, r3, #0
	ldr	r3, .L1257
	stm	r3, {r4-r5}
	ldr	r3, .L1257+4
	ldr	r3, [r3]
	add	r3, r3, #8
	ldr	r2, .L1257+4
	str	r3, [r2]
.L1255:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L1258:
	.align	2
.L1257:
	.word	selfie_argc
	.word	selfie_argv
	.size	get_argument, .-get_argument
	.align	2
	.global	set_argument
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_argument, %function
set_argument:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, .L1260
	ldr	r1, [r2]
	mov	r2, r3
	asr	r3, r2, #31
	stm	r1, {r2-r3}
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L1261:
	.align	2
.L1260:
	.word	selfie_argv
	.size	set_argument, .-set_argument
	.section	.rodata
	.align	2
.LC176:
	.ascii	"( -m | -d | -r | -n | -y | -min | -mob ) 0-64 ...\000"
	.align	2
.LC177:
	.ascii	"-c { source } | -o binary | [ -s | -S ] assembly | "
	.ascii	"-l binary | -sat dimacs\000"
	.align	2
.LC178:
	.ascii	"%s: usage: selfie { %s } [ %s ]\012\000"
	.text
	.align	2
	.global	print_usage
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_usage, %function
print_usage:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L1263
	ldr	r1, [r3]
	ldr	r3, .L1263+4
	ldr	r2, .L1263+8
	ldr	r0, .L1263+12
	bl	printf3
	nop
	pop	{fp, pc}
.L1264:
	.align	2
.L1263:
	.word	selfie_name
	.word	.LC176
	.word	.LC177
	.word	.LC178
	.size	print_usage, .-print_usage
	.section	.rodata
	.align	2
.LC179:
	.ascii	"-c\000"
	.align	2
.LC180:
	.ascii	"-o\000"
	.align	2
.LC181:
	.ascii	"-s\000"
	.align	2
.LC182:
	.ascii	"-S\000"
	.text
	.align	2
	.global	selfie
	.syntax unified
	.arm
	.fpu softvfp
	.type	selfie, %function
selfie:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	number_of_remaining_arguments
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L1266
	bl	print_usage
	b	.L1267
.L1266:
	bl	init_scanner
	bl	init_register
	b	.L1268
.L1275:
	bl	get_argument
	str	r0, [fp, #-8]
	ldr	r1, .L1276
	ldr	r0, [fp, #-8]
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1269
	bl	selfie_compile
	b	.L1268
.L1269:
	bl	number_of_remaining_arguments
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L1270
	bl	print_usage
	ldr	r3, .L1276+4
	ldmia	r3, {r2-r3}
	b	.L1271
.L1270:
	ldr	r1, .L1276+8
	ldr	r0, [fp, #-8]
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1272
	bl	selfie_output
	b	.L1268
.L1272:
	ldr	r1, .L1276+12
	ldr	r0, [fp, #-8]
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1273
	mov	r0, #0
	mov	r1, #0
	bl	selfie_disassemble
	b	.L1268
.L1273:
	ldr	r1, .L1276+16
	ldr	r0, [fp, #-8]
	bl	string_compare
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	beq	.L1274
	mov	r0, #1
	mov	r1, #0
	bl	selfie_disassemble
	b	.L1268
.L1274:
	bl	print_usage
	ldr	r3, .L1276+4
	ldmia	r3, {r2-r3}
	b	.L1271
.L1268:
	bl	number_of_remaining_arguments
	mov	r2, r0
	mov	r3, r1
	orrs	r3, r2, r3
	bne	.L1275
.L1267:
	ldr	r3, .L1276+20
	ldmia	r3, {r2-r3}
.L1271:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L1277:
	.align	2
.L1276:
	.word	.LC179
	.word	EXITCODE_BADARGUMENTS
	.word	.LC180
	.word	.LC181
	.word	.LC182
	.word	EXITCODE_NOERROR
	.size	selfie, .-selfie
	.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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-16]
	ldr	r2, [fp, #-16]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	init_selfie
	bl	init_library
	bl	selfie
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
