	.file	"1065819.c"
	.intel_syntax noprefix
	.text
	.globl	E
	.bss
	.align 32
	.type	E, @object
	.size	E, 216
E:
	.zero	216
	.globl	C_HL_extensions
	.section	.rodata
.LC0:
	.string	".c"
.LC1:
	.string	".h"
.LC2:
	.string	".cpp"
	.section	.data.rel.local,"aw"
	.align 32
	.type	C_HL_extensions, @object
	.size	C_HL_extensions, 32
C_HL_extensions:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	0
	.globl	C_HL_keywords
	.section	.rodata
.LC3:
	.string	"switch"
.LC4:
	.string	"if"
.LC5:
	.string	"while"
.LC6:
	.string	"for"
.LC7:
	.string	"break"
.LC8:
	.string	"continue"
.LC9:
	.string	"return"
.LC10:
	.string	"else"
.LC11:
	.string	"struct"
.LC12:
	.string	"union"
.LC13:
	.string	"typedef"
.LC14:
	.string	"static"
.LC15:
	.string	"enum"
.LC16:
	.string	"class"
.LC17:
	.string	"case"
.LC18:
	.string	"int|"
.LC19:
	.string	"long|"
.LC20:
	.string	"double|"
.LC21:
	.string	"float|"
.LC22:
	.string	"char|"
.LC23:
	.string	"unsigned|"
.LC24:
	.string	"signed|"
.LC25:
	.string	"void|"
	.section	.data.rel.local
	.align 32
	.type	C_HL_keywords, @object
	.size	C_HL_keywords, 192
C_HL_keywords:
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	0
	.globl	HLDB
	.section	.rodata
.LC26:
	.string	"c"
.LC27:
	.string	"//"
.LC28:
	.string	"/*"
.LC29:
	.string	"*/"
	.section	.data.rel.local
	.align 32
	.type	HLDB, @object
	.size	HLDB, 56
HLDB:
	.quad	.LC26
	.quad	C_HL_extensions
	.quad	C_HL_keywords
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.long	3
	.zero	4
	.section	.rodata
.LC30:
	.string	"\033[2J"
.LC31:
	.string	"\033[H"
	.text
	.globl	die
	.type	die, @function
die:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	edx, 4
	lea	rsi, .LC30[rip]
	mov	edi, 1
	call	write@PLT
	mov	edx, 3
	lea	rsi, .LC31[rip]
	mov	edi, 1
	call	write@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.size	die, .-die
	.section	.rodata
.LC32:
	.string	"tcsetattr"
	.text
	.globl	disable_raw_mode
	.type	disable_raw_mode, @function
disable_raw_mode:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	rdx, E[rip+152]
	mov	esi, 2
	mov	edi, 0
	call	tcsetattr@PLT
	cmp	eax, -1
	jne	.L4
	lea	rdi, .LC32[rip]
	call	die
.L4:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	disable_raw_mode, .-disable_raw_mode
	.section	.rodata
.LC33:
	.string	"tcgetattr"
	.text
	.globl	enable_raw_mode
	.type	enable_raw_mode, @function
enable_raw_mode:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rsi, E[rip+152]
	mov	edi, 0
	call	tcgetattr@PLT
	cmp	eax, -1
	jne	.L6
	lea	rdi, .LC33[rip]
	call	die
.L6:
	lea	rdi, disable_raw_mode[rip]
	call	atexit@PLT
	mov	rax, QWORD PTR E[rip+152]
	mov	rdx, QWORD PTR E[rip+160]
	mov	QWORD PTR -80[rbp], rax
	mov	QWORD PTR -72[rbp], rdx
	mov	rax, QWORD PTR E[rip+168]
	mov	rdx, QWORD PTR E[rip+176]
	mov	QWORD PTR -64[rbp], rax
	mov	QWORD PTR -56[rbp], rdx
	mov	rax, QWORD PTR E[rip+184]
	mov	rdx, QWORD PTR E[rip+192]
	mov	QWORD PTR -48[rbp], rax
	mov	QWORD PTR -40[rbp], rdx
	mov	rax, QWORD PTR E[rip+200]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, DWORD PTR E[rip+208]
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -80[rbp]
	and	eax, -1331
	mov	DWORD PTR -80[rbp], eax
	mov	eax, DWORD PTR -76[rbp]
	and	eax, -2
	mov	DWORD PTR -76[rbp], eax
	mov	eax, DWORD PTR -72[rbp]
	or	eax, 48
	mov	DWORD PTR -72[rbp], eax
	mov	eax, DWORD PTR -68[rbp]
	and	eax, -32780
	mov	DWORD PTR -68[rbp], eax
	mov	BYTE PTR -57[rbp], 0
	mov	BYTE PTR -58[rbp], 1
	lea	rax, -80[rbp]
	mov	rdx, rax
	mov	esi, 2
	mov	edi, 0
	call	tcsetattr@PLT
	cmp	eax, -1
	jne	.L9
	lea	rdi, .LC32[rip]
	call	die
.L9:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L8
	call	__stack_chk_fail@PLT
.L8:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	enable_raw_mode, .-enable_raw_mode
	.section	.rodata
.LC34:
	.string	"read"
	.text
	.globl	editor_read_key
	.type	editor_read_key, @function
editor_read_key:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	jmp	.L11
.L12:
	cmp	DWORD PTR -16[rbp], -1
	jne	.L11
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	cmp	eax, 11
	je	.L11
	lea	rdi, .LC34[rip]
	call	die
.L11:
	lea	rax, -17[rbp]
	mov	edx, 1
	mov	rsi, rax
	mov	edi, 0
	call	read@PLT
	mov	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -16[rbp], 1
	jne	.L12
	movzx	eax, BYTE PTR -17[rbp]
	cmp	al, 27
	jne	.L13
	lea	rax, -11[rbp]
	mov	edx, 1
	mov	rsi, rax
	mov	edi, 0
	call	read@PLT
	cmp	rax, 1
	je	.L14
	mov	eax, 27
	jmp	.L37
.L14:
	lea	rax, -11[rbp]
	add	rax, 1
	mov	edx, 1
	mov	rsi, rax
	mov	edi, 0
	call	read@PLT
	cmp	rax, 1
	je	.L16
	mov	eax, 27
	jmp	.L37
.L16:
	movzx	eax, BYTE PTR -11[rbp]
	cmp	al, 91
	jne	.L17
	movzx	eax, BYTE PTR -10[rbp]
	cmp	al, 47
	jle	.L18
	movzx	eax, BYTE PTR -10[rbp]
	cmp	al, 57
	jg	.L18
	lea	rax, -11[rbp]
	add	rax, 2
	mov	edx, 1
	mov	rsi, rax
	mov	edi, 0
	call	read@PLT
	cmp	rax, 1
	je	.L19
	mov	eax, 27
	jmp	.L37
.L19:
	movzx	eax, BYTE PTR -9[rbp]
	cmp	al, 126
	jne	.L39
	movzx	eax, BYTE PTR -10[rbp]
	movsx	eax, al
	sub	eax, 49
	cmp	eax, 7
	ja	.L39
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L22[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L22[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L22:
	.long	.L28-.L22
	.long	.L39-.L22
	.long	.L27-.L22
	.long	.L26-.L22
	.long	.L25-.L22
	.long	.L24-.L22
	.long	.L23-.L22
	.long	.L21-.L22
	.text
.L28:
	mov	eax, 1005
	jmp	.L37
.L27:
	mov	eax, 1004
	jmp	.L37
.L26:
	mov	eax, 1006
	jmp	.L37
.L25:
	mov	eax, 1007
	jmp	.L37
.L24:
	mov	eax, 1008
	jmp	.L37
.L23:
	mov	eax, 1005
	jmp	.L37
.L21:
	mov	eax, 1006
	jmp	.L37
.L18:
	movzx	eax, BYTE PTR -10[rbp]
	movsx	eax, al
	cmp	eax, 68
	je	.L30
	cmp	eax, 68
	jg	.L34
	cmp	eax, 67
	je	.L31
	cmp	eax, 67
	jg	.L34
	cmp	eax, 65
	je	.L32
	cmp	eax, 66
	je	.L33
	jmp	.L34
.L32:
	mov	eax, 1002
	jmp	.L37
.L33:
	mov	eax, 1003
	jmp	.L37
.L31:
	mov	eax, 1001
	jmp	.L37
.L30:
	mov	eax, 1000
	jmp	.L37
.L17:
	movzx	eax, BYTE PTR -11[rbp]
	cmp	al, 79
	jne	.L34
	movzx	eax, BYTE PTR -10[rbp]
	movsx	eax, al
	cmp	eax, 70
	je	.L35
	cmp	eax, 72
	jne	.L34
	mov	eax, 1005
	jmp	.L37
.L35:
	mov	eax, 1006
	jmp	.L37
.L39:
	nop
.L34:
	mov	eax, 27
	jmp	.L37
.L13:
	movzx	eax, BYTE PTR -17[rbp]
	movsx	eax, al
.L37:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L38
	call	__stack_chk_fail@PLT
.L38:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	editor_read_key, .-editor_read_key
	.section	.rodata
.LC35:
	.string	"\033[6n"
.LC36:
	.string	"%d;%d"
	.text
	.globl	get_cursor_position
	.type	get_cursor_position, @function
get_cursor_position:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -52[rbp], 0
	mov	edx, 4
	lea	rsi, .LC35[rip]
	mov	edi, 1
	call	write@PLT
	cmp	rax, 4
	je	.L43
	mov	eax, -1
	jmp	.L51
.L47:
	lea	rdx, -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	rax, rdx
	mov	edx, 1
	mov	rsi, rax
	mov	edi, 0
	call	read@PLT
	cmp	rax, 1
	jne	.L53
	mov	eax, DWORD PTR -52[rbp]
	movzx	eax, BYTE PTR -48[rbp+rax]
	cmp	al, 82
	je	.L54
	add	DWORD PTR -52[rbp], 1
.L43:
	cmp	DWORD PTR -52[rbp], 30
	jbe	.L47
	jmp	.L45
.L53:
	nop
	jmp	.L45
.L54:
	nop
.L45:
	mov	eax, DWORD PTR -52[rbp]
	mov	BYTE PTR -48[rbp+rax], 0
	movzx	eax, BYTE PTR -48[rbp]
	cmp	al, 27
	jne	.L48
	movzx	eax, BYTE PTR -47[rbp]
	cmp	al, 91
	je	.L49
.L48:
	mov	eax, -1
	jmp	.L51
.L49:
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	lea	rcx, -48[rbp]
	lea	rdi, 2[rcx]
	mov	rcx, rdx
	mov	rdx, rax
	lea	rsi, .LC36[rip]
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	cmp	eax, 2
	je	.L50
	mov	eax, -1
	jmp	.L51
.L50:
	mov	eax, 0
.L51:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L52
	call	__stack_chk_fail@PLT
.L52:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	get_cursor_position, .-get_cursor_position
	.section	.rodata
.LC37:
	.string	"\033[999C\033[999B"
	.text
	.globl	get_window_size
	.type	get_window_size, @function
get_window_size:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -16[rbp]
	mov	rdx, rax
	mov	esi, 21523
	mov	edi, 1
	mov	eax, 0
	call	ioctl@PLT
	cmp	eax, -1
	je	.L56
	movzx	eax, WORD PTR -14[rbp]
	test	ax, ax
	jne	.L57
.L56:
	mov	edx, 12
	lea	rsi, .LC37[rip]
	mov	edi, 1
	call	write@PLT
	cmp	rax, 12
	je	.L58
	mov	eax, -1
	jmp	.L60
.L58:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_cursor_position
	jmp	.L60
.L57:
	movzx	eax, WORD PTR -14[rbp]
	movzx	edx, ax
	mov	rax, QWORD PTR -32[rbp]
	mov	DWORD PTR [rax], edx
	movzx	eax, WORD PTR -16[rbp]
	movzx	edx, ax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR [rax], edx
	mov	eax, 0
.L60:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L61
	call	__stack_chk_fail@PLT
.L61:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	get_window_size, .-get_window_size
	.section	.rodata
.LC38:
	.string	",.()+-/*=~%<>[];"
	.text
	.globl	is_separator
	.type	is_separator, @function
is_separator:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], edi
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 8192
	test	eax, eax
	jne	.L63
	cmp	DWORD PTR -4[rbp], 0
	je	.L63
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC38[rip]
	call	strchr@PLT
	test	rax, rax
	je	.L64
.L63:
	mov	eax, 1
	jmp	.L66
.L64:
	mov	eax, 0
.L66:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	is_separator, .-is_separator
	.globl	editor_update_syntax
	.type	editor_update_syntax, @function
editor_update_syntax:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8[rax]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 32[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 32[rdx], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8[rax]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 32[rax]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR E[rip+144]
	test	rax, rax
	je	.L103
	mov	rax, QWORD PTR E[rip+144]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR E[rip+144]
	mov	rax, QWORD PTR 24[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR E[rip+144]
	mov	rax, QWORD PTR 32[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR E[rip+144]
	mov	rax, QWORD PTR 40[rax]
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L70
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	jmp	.L71
.L70:
	mov	eax, 0
.L71:
	mov	DWORD PTR -52[rbp], eax
	cmp	QWORD PTR -16[rbp], 0
	je	.L72
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	strlen@PLT
	jmp	.L73
.L72:
	mov	eax, 0
.L73:
	mov	DWORD PTR -48[rbp], eax
	cmp	QWORD PTR -8[rbp], 0
	je	.L74
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	strlen@PLT
	jmp	.L75
.L74:
	mov	eax, 0
.L75:
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -76[rbp], 1
	mov	DWORD PTR -72[rbp], 0
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	jle	.L76
	mov	rcx, QWORD PTR E[rip+32]
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR [rax]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	sub	rax, 48
	add	rax, rcx
	mov	eax, DWORD PTR 40[rax]
	test	eax, eax
	je	.L76
	mov	eax, 1
	jmp	.L77
.L76:
	mov	eax, 0
.L77:
	mov	DWORD PTR -68[rbp], eax
	mov	DWORD PTR -64[rbp], 0
	jmp	.L78
.L102:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -78[rbp], al
	cmp	DWORD PTR -64[rbp], 0
	jle	.L79
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	jmp	.L80
.L79:
	mov	eax, 0
.L80:
	mov	BYTE PTR -77[rbp], al
	cmp	DWORD PTR -52[rbp], 0
	je	.L81
	cmp	DWORD PTR -72[rbp], 0
	jne	.L81
	cmp	DWORD PTR -68[rbp], 0
	jne	.L81
	mov	eax, DWORD PTR -52[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rcx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	strncmp@PLT
	test	eax, eax
	jne	.L81
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8[rax]
	sub	eax, DWORD PTR -64[rbp]
	cdqe
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 32[rdx]
	mov	edx, DWORD PTR -64[rbp]
	movsx	rdx, edx
	add	rcx, rdx
	mov	rdx, rax
	mov	esi, 1
	mov	rdi, rcx
	call	memset@PLT
	jmp	.L82
.L81:
	cmp	DWORD PTR -48[rbp], 0
	je	.L83
	cmp	DWORD PTR -44[rbp], 0
	je	.L83
	cmp	DWORD PTR -72[rbp], 0
	jne	.L83
	cmp	DWORD PTR -68[rbp], 0
	je	.L84
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 2
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	strncmp@PLT
	test	eax, eax
	jne	.L85
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 32[rdx]
	mov	edx, DWORD PTR -64[rbp]
	movsx	rdx, edx
	add	rcx, rdx
	mov	rdx, rax
	mov	esi, 2
	mov	rdi, rcx
	call	memset@PLT
	mov	eax, DWORD PTR -44[rbp]
	add	DWORD PTR -64[rbp], eax
	mov	DWORD PTR -68[rbp], 0
	mov	DWORD PTR -76[rbp], 1
	jmp	.L78
.L85:
	add	DWORD PTR -64[rbp], 1
	jmp	.L78
.L84:
	mov	eax, DWORD PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rcx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	strncmp@PLT
	test	eax, eax
	jne	.L83
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 32[rdx]
	mov	edx, DWORD PTR -64[rbp]
	movsx	rdx, edx
	add	rcx, rdx
	mov	rdx, rax
	mov	esi, 2
	mov	rdi, rcx
	call	memset@PLT
	mov	eax, DWORD PTR -48[rbp]
	add	DWORD PTR -64[rbp], eax
	mov	DWORD PTR -68[rbp], 1
	jmp	.L78
.L83:
	mov	rax, QWORD PTR E[rip+144]
	mov	eax, DWORD PTR 48[rax]
	and	eax, 2
	test	eax, eax
	je	.L86
	cmp	DWORD PTR -72[rbp], 0
	je	.L87
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 5
	cmp	BYTE PTR -78[rbp], 92
	jne	.L88
	mov	eax, DWORD PTR -64[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	edx, eax
	jge	.L88
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 5
	add	DWORD PTR -64[rbp], 2
	jmp	.L78
.L88:
	movsx	eax, BYTE PTR -78[rbp]
	cmp	DWORD PTR -72[rbp], eax
	jne	.L89
	mov	DWORD PTR -72[rbp], 0
.L89:
	add	DWORD PTR -64[rbp], 1
	mov	DWORD PTR -76[rbp], 1
	jmp	.L78
.L87:
	cmp	BYTE PTR -78[rbp], 34
	je	.L90
	cmp	BYTE PTR -78[rbp], 39
	jne	.L86
.L90:
	movsx	eax, BYTE PTR -78[rbp]
	mov	DWORD PTR -72[rbp], eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 5
	add	DWORD PTR -64[rbp], 1
	jmp	.L78
.L86:
	mov	rax, QWORD PTR E[rip+144]
	mov	eax, DWORD PTR 48[rax]
	and	eax, 1
	test	eax, eax
	je	.L91
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	movsx	rax, BYTE PTR -78[rbp]
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	je	.L92
	cmp	DWORD PTR -76[rbp], 0
	jne	.L93
	cmp	BYTE PTR -77[rbp], 6
	je	.L93
.L92:
	cmp	BYTE PTR -78[rbp], 46
	jne	.L91
	cmp	BYTE PTR -77[rbp], 6
	jne	.L91
.L93:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 6
	add	DWORD PTR -64[rbp], 1
	mov	DWORD PTR -76[rbp], 0
	jmp	.L78
.L91:
	cmp	DWORD PTR -76[rbp], 0
	je	.L94
	mov	DWORD PTR -60[rbp], 0
	jmp	.L95
.L101:
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	cdqe
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 124
	sete	al
	movzx	eax, al
	mov	DWORD PTR -40[rbp], eax
	cmp	DWORD PTR -40[rbp], 0
	je	.L96
	sub	DWORD PTR -56[rbp], 1
.L96:
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rsi, QWORD PTR 24[rcx]
	mov	ecx, DWORD PTR -64[rbp]
	movsx	rcx, ecx
	add	rcx, rsi
	mov	rsi, rax
	mov	rdi, rcx
	call	strncmp@PLT
	test	eax, eax
	jne	.L97
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	ecx, DWORD PTR -64[rbp]
	mov	eax, DWORD PTR -56[rbp]
	add	eax, ecx
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	is_separator
	test	eax, eax
	je	.L97
	mov	eax, DWORD PTR -56[rbp]
	cdqe
	cmp	DWORD PTR -40[rbp], 0
	je	.L98
	mov	esi, 4
	jmp	.L99
.L98:
	mov	esi, 3
.L99:
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 32[rdx]
	mov	edx, DWORD PTR -64[rbp]
	movsx	rdx, edx
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	memset@PLT
	mov	eax, DWORD PTR -56[rbp]
	add	DWORD PTR -64[rbp], eax
	jmp	.L100
.L97:
	add	DWORD PTR -60[rbp], 1
.L95:
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L101
.L100:
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L94
	mov	DWORD PTR -76[rbp], 0
	jmp	.L78
.L94:
	movsx	eax, BYTE PTR -78[rbp]
	mov	edi, eax
	call	is_separator
	mov	DWORD PTR -76[rbp], eax
	add	DWORD PTR -64[rbp], 1
.L78:
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -64[rbp], eax
	jl	.L102
.L82:
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 40[rax]
	cmp	DWORD PTR -68[rbp], eax
	setne	al
	movzx	eax, al
	mov	DWORD PTR -36[rbp], eax
	mov	rax, QWORD PTR -88[rbp]
	mov	edx, DWORD PTR -68[rbp]
	mov	DWORD PTR 40[rax], edx
	cmp	DWORD PTR -36[rbp], 0
	je	.L67
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR [rax]
	lea	edx, 1[rax]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jge	.L67
	mov	rcx, QWORD PTR E[rip+32]
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR [rax]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdi, rax
	call	editor_update_syntax
	jmp	.L67
.L103:
	nop
.L67:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	editor_update_syntax, .-editor_update_syntax
	.globl	editor_syntax_to_color
	.type	editor_syntax_to_color, @function
editor_syntax_to_color:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	cmp	DWORD PTR -4[rbp], 7
	ja	.L105
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L107[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L107[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L107:
	.long	.L105-.L107
	.long	.L112-.L107
	.long	.L112-.L107
	.long	.L111-.L107
	.long	.L110-.L107
	.long	.L109-.L107
	.long	.L108-.L107
	.long	.L106-.L107
	.text
.L112:
	mov	eax, 36
	jmp	.L113
.L111:
	mov	eax, 33
	jmp	.L113
.L110:
	mov	eax, 32
	jmp	.L113
.L109:
	mov	eax, 35
	jmp	.L113
.L108:
	mov	eax, 31
	jmp	.L113
.L106:
	mov	eax, 34
	jmp	.L113
.L105:
	mov	eax, 37
.L113:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	editor_syntax_to_color, .-editor_syntax_to_color
	.globl	editor_select_syntax_highlight
	.type	editor_select_syntax_highlight, @function
editor_select_syntax_highlight:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR E[rip+144], 0
	mov	rax, QWORD PTR E[rip+48]
	test	rax, rax
	je	.L126
	mov	rax, QWORD PTR E[rip+48]
	mov	esi, 46
	mov	rdi, rax
	call	strrchr@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -32[rbp], 0
	jmp	.L117
.L125:
	mov	edx, DWORD PTR -32[rbp]
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 3
	lea	rdx, HLDB[rip]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	jmp	.L118
.L124:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	sete	al
	movzx	eax, al
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	je	.L119
	cmp	QWORD PTR -16[rbp], 0
	je	.L119
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	je	.L120
.L119:
	cmp	DWORD PTR -20[rbp], 0
	jne	.L121
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR E[rip+48]
	mov	rsi, rdx
	mov	rdi, rax
	call	strstr@PLT
	test	rax, rax
	je	.L121
.L120:
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR E[rip+144], rax
	mov	DWORD PTR -24[rbp], 0
	jmp	.L122
.L123:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdi, rax
	call	editor_update_syntax
	add	DWORD PTR -24[rbp], 1
.L122:
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -24[rbp], eax
	jl	.L123
	jmp	.L114
.L121:
	add	DWORD PTR -28[rbp], 1
.L118:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L124
	add	DWORD PTR -32[rbp], 1
.L117:
	cmp	DWORD PTR -32[rbp], 0
	je	.L125
	jmp	.L114
.L126:
	nop
.L114:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	editor_select_syntax_highlight, .-editor_select_syntax_highlight
	.globl	editor_row_cx_to_rx
	.type	editor_row_cx_to_rx, @function
editor_row_cx_to_rx:
.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 -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L128
.L130:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L129
	mov	eax, DWORD PTR -8[rbp]
	cdq
	shr	edx, 29
	add	eax, edx
	and	eax, 7
	sub	eax, edx
	mov	edx, eax
	mov	eax, 7
	sub	eax, edx
	add	DWORD PTR -8[rbp], eax
.L129:
	add	DWORD PTR -8[rbp], 1
	add	DWORD PTR -4[rbp], 1
.L128:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jl	.L130
	mov	eax, DWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	editor_row_cx_to_rx, .-editor_row_cx_to_rx
	.globl	editor_row_rx_to_cx
	.type	editor_row_rx_to_cx, @function
editor_row_rx_to_cx:
.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 -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L133
.L137:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L134
	mov	eax, DWORD PTR -8[rbp]
	cdq
	shr	edx, 29
	add	eax, edx
	and	eax, 7
	sub	eax, edx
	mov	edx, eax
	mov	eax, 7
	sub	eax, edx
	add	DWORD PTR -8[rbp], eax
.L134:
	add	DWORD PTR -8[rbp], 1
	mov	eax, DWORD PTR -8[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jle	.L135
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L136
.L135:
	add	DWORD PTR -4[rbp], 1
.L133:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L137
	mov	eax, DWORD PTR -4[rbp]
.L136:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	editor_row_rx_to_cx, .-editor_row_rx_to_cx
	.globl	editor_update_row
	.type	editor_update_row, @function
editor_update_row:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	jmp	.L139
.L141:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L140
	add	DWORD PTR -12[rbp], 1
.L140:
	add	DWORD PTR -8[rbp], 1
.L139:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -8[rbp], eax
	jl	.L141
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR 4[rax]
	mov	edx, DWORD PTR -12[rbp]
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	add	eax, ecx
	add	eax, 1
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	jmp	.L142
.L147:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L143
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -4[rbp], edx
	cdqe
	add	rax, rcx
	mov	BYTE PTR [rax], 32
	jmp	.L144
.L145:
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -4[rbp], edx
	cdqe
	add	rax, rcx
	mov	BYTE PTR [rax], 32
.L144:
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 7
	test	eax, eax
	jne	.L145
	jmp	.L146
.L143:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -4[rbp], edx
	cdqe
	lea	rdx, [rsi+rax]
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
.L146:
	add	DWORD PTR -8[rbp], 1
.L142:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -8[rbp], eax
	jl	.L147
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	editor_update_syntax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	editor_update_row, .-editor_update_row
	.globl	editor_insert_row
	.type	editor_insert_row, @function
editor_insert_row:
.LFB19:
	.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	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	cmp	DWORD PTR -36[rbp], 0
	js	.L154
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -36[rbp], eax
	jg	.L154
	mov	eax, DWORD PTR E[rip+28]
	add	eax, 1
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR E[rip+32]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR E[rip+32], rax
	mov	eax, DWORD PTR E[rip+28]
	sub	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	mov	rsi, rax
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rcx, rax
	mov	rdi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rdi
	mov	rdx, rsi
	mov	rsi, rcx
	mov	rdi, rax
	call	memmove@PLT
	mov	eax, DWORD PTR -36[rbp]
	add	eax, 1
	mov	DWORD PTR -20[rbp], eax
	jmp	.L152
.L153:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	edx, DWORD PTR [rax]
	add	edx, 1
	mov	DWORD PTR [rax], edx
	add	DWORD PTR -20[rbp], 1
.L152:
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -20[rbp], eax
	jle	.L153
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rcx+rax]
	mov	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR [rdx], eax
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	rsi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	lea	rbx, [rsi+rax]
	mov	rdi, rdx
	call	malloc@PLT
	mov	QWORD PTR 16[rbx], rax
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rax, QWORD PTR 16[rax]
	mov	rdx, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	DWORD PTR 8[rax], 0
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR 24[rax], 0
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR 32[rax], 0
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	DWORD PTR 40[rax], 0
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdi, rax
	call	editor_update_row
	mov	eax, DWORD PTR E[rip+28]
	add	eax, 1
	mov	DWORD PTR E[rip+28], eax
	mov	eax, DWORD PTR E[rip+40]
	add	eax, 1
	mov	DWORD PTR E[rip+40], eax
	jmp	.L148
.L154:
	nop
.L148:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	editor_insert_row, .-editor_insert_row
	.globl	editor_free_row
	.type	editor_free_row, @function
editor_free_row:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 32[rax]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	editor_free_row, .-editor_free_row
	.globl	editor_del_row
	.type	editor_del_row, @function
editor_del_row:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	cmp	DWORD PTR -20[rbp], 0
	js	.L162
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -20[rbp], eax
	jge	.L162
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdi, rax
	call	editor_free_row
	mov	eax, DWORD PTR E[rip+28]
	sub	eax, DWORD PTR -20[rbp]
	sub	eax, 1
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	mov	rsi, rax
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 1[rax]
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rcx, rax
	mov	rdi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rdi
	mov	rdx, rsi
	mov	rsi, rcx
	mov	rdi, rax
	call	memmove@PLT
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR -4[rbp], eax
	jmp	.L160
.L161:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	edx, DWORD PTR [rax]
	sub	edx, 1
	mov	DWORD PTR [rax], edx
	add	DWORD PTR -4[rbp], 1
.L160:
	mov	eax, DWORD PTR E[rip+28]
	sub	eax, 1
	cmp	DWORD PTR -4[rbp], eax
	jl	.L161
	mov	eax, DWORD PTR E[rip+28]
	sub	eax, 1
	mov	DWORD PTR E[rip+28], eax
	mov	eax, DWORD PTR E[rip+40]
	add	eax, 1
	mov	DWORD PTR E[rip+40], eax
	jmp	.L156
.L162:
	nop
.L156:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	editor_del_row, .-editor_del_row
	.globl	editor_row_insert_char
	.type	editor_row_insert_char, @function
editor_row_insert_char:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	DWORD PTR -16[rbp], edx
	cmp	DWORD PTR -12[rbp], 0
	js	.L164
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -12[rbp], eax
	jle	.L165
.L164:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	DWORD PTR -12[rbp], eax
.L165:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	add	eax, 2
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rdx], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	sub	eax, DWORD PTR -12[rbp]
	add	eax, 1
	cdqe
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rdx]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	lea	rsi, [rcx+rdx]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rdx]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 1
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	memmove@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	add	rax, rdx
	mov	edx, DWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	editor_update_row
	mov	eax, DWORD PTR E[rip+40]
	add	eax, 1
	mov	DWORD PTR E[rip+40], eax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	editor_row_insert_char, .-editor_row_insert_char
	.globl	editor_row_append_string
	.type	editor_row_append_string, @function
editor_row_append_string:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rdx], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cdqe
	lea	rcx, [rdx+rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	eax, edx
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	editor_update_row
	mov	eax, DWORD PTR E[rip+40]
	add	eax, 1
	mov	DWORD PTR E[rip+40], eax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	editor_row_append_string, .-editor_row_append_string
	.globl	editor_row_del_char
	.type	editor_row_del_char, @function
editor_row_del_char:
.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	DWORD PTR -12[rbp], esi
	cmp	DWORD PTR -12[rbp], 0
	js	.L171
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	DWORD PTR -12[rbp], eax
	jge	.L171
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	sub	eax, DWORD PTR -12[rbp]
	cdqe
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rdx]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 1
	lea	rsi, [rcx+rdx]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rdx]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	memmove@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	editor_update_row
	mov	eax, DWORD PTR E[rip+40]
	add	eax, 1
	mov	DWORD PTR E[rip+40], eax
	jmp	.L167
.L171:
	nop
.L167:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	editor_row_del_char, .-editor_row_del_char
	.section	.rodata
.LC39:
	.string	""
	.text
	.globl	editor_insert_char
	.type	editor_insert_char, @function
editor_insert_char:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], edi
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jne	.L173
	mov	eax, DWORD PTR E[rip+28]
	mov	edx, 0
	lea	rsi, .LC39[rip]
	mov	edi, eax
	call	editor_insert_row
.L173:
	mov	ecx, DWORD PTR E[rip]
	mov	rsi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdi, [rsi+rax]
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, eax
	mov	esi, ecx
	call	editor_row_insert_char
	mov	eax, DWORD PTR E[rip]
	add	eax, 1
	mov	DWORD PTR E[rip], eax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	editor_insert_char, .-editor_insert_char
	.globl	editor_insert_newline
	.type	editor_insert_newline, @function
editor_insert_newline:
.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	eax, DWORD PTR E[rip]
	test	eax, eax
	jne	.L175
	mov	eax, DWORD PTR E[rip+4]
	mov	edx, 0
	lea	rsi, .LC39[rip]
	mov	edi, eax
	call	editor_insert_row
	jmp	.L176
.L175:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edx, DWORD PTR E[rip]
	sub	eax, edx
	cdqe
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rdx]
	mov	edx, DWORD PTR E[rip]
	movsx	rdx, edx
	lea	rsi, [rcx+rdx]
	mov	edx, DWORD PTR E[rip+4]
	lea	ecx, 1[rdx]
	mov	rdx, rax
	mov	edi, ecx
	call	editor_insert_row
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR -8[rbp], rax
	mov	edx, DWORD PTR E[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	editor_update_row
.L176:
	mov	eax, DWORD PTR E[rip+4]
	add	eax, 1
	mov	DWORD PTR E[rip+4], eax
	mov	DWORD PTR E[rip], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	editor_insert_newline, .-editor_insert_newline
	.globl	editor_del_char
	.type	editor_del_char, @function
editor_del_char:
.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	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	je	.L182
	mov	eax, DWORD PTR E[rip]
	test	eax, eax
	jne	.L180
	mov	eax, DWORD PTR E[rip+4]
	test	eax, eax
	je	.L183
.L180:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR E[rip]
	test	eax, eax
	jle	.L181
	mov	eax, DWORD PTR E[rip]
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	editor_row_del_char
	mov	eax, DWORD PTR E[rip]
	sub	eax, 1
	mov	DWORD PTR E[rip], eax
	jmp	.L177
.L181:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	sub	rax, 48
	add	rax, rcx
	mov	eax, DWORD PTR 4[rax]
	mov	DWORD PTR E[rip], eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 16[rax]
	mov	rdi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rsi, eax
	mov	rax, rsi
	add	rax, rax
	add	rax, rsi
	sal	rax, 4
	sub	rax, 48
	add	rax, rdi
	mov	rsi, rcx
	mov	rdi, rax
	call	editor_row_append_string
	mov	eax, DWORD PTR E[rip+4]
	mov	edi, eax
	call	editor_del_row
	mov	eax, DWORD PTR E[rip+4]
	sub	eax, 1
	mov	DWORD PTR E[rip+4], eax
	jmp	.L177
.L182:
	nop
	jmp	.L177
.L183:
	nop
.L177:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	editor_del_char, .-editor_del_char
	.globl	editor_rows_to_string
	.type	editor_rows_to_string, @function
editor_rows_to_string:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -24[rbp], 0
	mov	DWORD PTR -20[rbp], 0
	jmp	.L185
.L186:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 4[rax]
	add	eax, 1
	add	DWORD PTR -24[rbp], eax
	add	DWORD PTR -20[rbp], 1
.L185:
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L186
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -24[rbp]
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -20[rbp], 0
	jmp	.L187
.L188:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 4[rax]
	movsx	rdx, eax
	mov	rsi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	add	rax, rsi
	mov	rcx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 4[rax]
	cdqe
	add	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], 10
	add	QWORD PTR -16[rbp], 1
	add	DWORD PTR -20[rbp], 1
.L187:
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L188
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	editor_rows_to_string, .-editor_rows_to_string
	.section	.rodata
.LC40:
	.string	"r"
.LC41:
	.string	"fopen"
	.text
	.globl	editor_open
	.type	editor_open, @function
editor_open:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR E[rip+48]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR E[rip+48], rax
	mov	eax, 0
	call	editor_select_syntax_highlight
	mov	rax, QWORD PTR -56[rbp]
	lea	rsi, .LC40[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L191
	lea	rdi, .LC41[rip]
	call	die
.L191:
	mov	QWORD PTR -40[rbp], 0
	mov	QWORD PTR -32[rbp], 0
	jmp	.L192
.L195:
	sub	QWORD PTR -24[rbp], 1
.L193:
	cmp	QWORD PTR -24[rbp], 0
	jle	.L194
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 10
	je	.L195
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 13
	je	.L195
.L194:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR E[rip+28]
	mov	rsi, rcx
	mov	edi, eax
	call	editor_insert_row
.L192:
	mov	rdx, QWORD PTR -16[rbp]
	lea	rcx, -32[rbp]
	lea	rax, -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	getline@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], -1
	jne	.L193
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	DWORD PTR E[rip+40], 0
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L197
	call	__stack_chk_fail@PLT
.L197:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	editor_open, .-editor_open
	.section	.rodata
.LC42:
	.string	"Save as: %s (ESC to cancel)"
.LC43:
	.string	"Save aborted"
.LC44:
	.string	"%d bytes written to disk"
.LC45:
	.string	"Can't save! I/O error: %s"
	.text
	.globl	editor_save
	.type	editor_save, @function
editor_save:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR E[rip+48]
	test	rax, rax
	jne	.L199
	mov	esi, 0
	lea	rdi, .LC42[rip]
	call	editor_prompt
	mov	QWORD PTR E[rip+48], rax
	mov	rax, QWORD PTR E[rip+48]
	test	rax, rax
	jne	.L200
	lea	rdi, .LC43[rip]
	mov	eax, 0
	call	editor_set_status_message
	jmp	.L198
.L200:
	mov	eax, 0
	call	editor_select_syntax_highlight
.L199:
	lea	rax, -24[rbp]
	mov	rdi, rax
	call	editor_rows_to_string
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR E[rip+48]
	mov	edx, 420
	mov	esi, 66
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], -1
	je	.L202
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -20[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	ftruncate@PLT
	cmp	eax, -1
	je	.L203
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rcx, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	edx, DWORD PTR -24[rbp]
	movsx	rdx, edx
	cmp	rax, rdx
	jne	.L203
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	close@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	DWORD PTR E[rip+40], 0
	mov	eax, DWORD PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC44[rip]
	mov	eax, 0
	call	editor_set_status_message
	jmp	.L198
.L203:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	close@PLT
.L202:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	free@PLT
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	lea	rdi, .LC45[rip]
	mov	eax, 0
	call	editor_set_status_message
.L198:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L205
	call	__stack_chk_fail@PLT
.L205:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	editor_save, .-editor_save
	.globl	editor_find_callback
	.type	editor_find_callback, @function
editor_find_callback:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	rax, QWORD PTR saved_hl.4[rip]
	test	rax, rax
	je	.L207
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR saved_hl_line.3[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 8[rax]
	movsx	rdx, eax
	mov	rcx, QWORD PTR saved_hl.4[rip]
	mov	rdi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR saved_hl_line.3[rip]
	movsx	rsi, eax
	mov	rax, rsi
	add	rax, rax
	add	rax, rsi
	sal	rax, 4
	add	rax, rdi
	mov	rax, QWORD PTR 32[rax]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rax, QWORD PTR saved_hl.4[rip]
	mov	rdi, rax
	call	free@PLT
	mov	QWORD PTR saved_hl.4[rip], 0
.L207:
	cmp	DWORD PTR -44[rbp], 13
	je	.L208
	cmp	DWORD PTR -44[rbp], 27
	jne	.L209
.L208:
	mov	DWORD PTR last_match.2[rip], -1
	mov	DWORD PTR direction.1[rip], 1
	jmp	.L206
.L209:
	cmp	DWORD PTR -44[rbp], 1001
	je	.L211
	cmp	DWORD PTR -44[rbp], 1003
	jne	.L212
.L211:
	mov	DWORD PTR direction.1[rip], 1
	jmp	.L213
.L212:
	cmp	DWORD PTR -44[rbp], 1000
	je	.L214
	cmp	DWORD PTR -44[rbp], 1002
	jne	.L215
.L214:
	mov	DWORD PTR direction.1[rip], -1
	jmp	.L213
.L215:
	mov	DWORD PTR last_match.2[rip], -1
	mov	DWORD PTR direction.1[rip], 1
.L213:
	mov	eax, DWORD PTR last_match.2[rip]
	cmp	eax, -1
	jne	.L216
	mov	DWORD PTR direction.1[rip], 1
.L216:
	mov	eax, DWORD PTR last_match.2[rip]
	mov	DWORD PTR -24[rbp], eax
	mov	DWORD PTR -20[rbp], 0
	jmp	.L217
.L221:
	mov	eax, DWORD PTR direction.1[rip]
	add	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], -1
	jne	.L218
	mov	eax, DWORD PTR E[rip+28]
	sub	eax, 1
	mov	DWORD PTR -24[rbp], eax
	jmp	.L219
.L218:
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -24[rbp], eax
	jne	.L219
	mov	DWORD PTR -24[rbp], 0
.L219:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strstr@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L220
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR last_match.2[rip], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR E[rip+4], eax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, rdx
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	editor_row_rx_to_cx
	mov	DWORD PTR E[rip], eax
	mov	eax, DWORD PTR E[rip+28]
	mov	DWORD PTR E[rip+12], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR saved_hl_line.3[rip], eax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR saved_hl.4[rip], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	movsx	rdx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR 32[rax]
	mov	rax, QWORD PTR saved_hl.4[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, rsi
	add	rax, rcx
	mov	esi, 7
	mov	rdi, rax
	call	memset@PLT
	jmp	.L206
.L220:
	add	DWORD PTR -20[rbp], 1
.L217:
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L221
.L206:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	editor_find_callback, .-editor_find_callback
	.section	.rodata
	.align 8
.LC46:
	.string	"Search %s (Use ESC/Arrows/Enter)"
	.text
	.globl	editor_find
	.type	editor_find, @function
editor_find:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	eax, DWORD PTR E[rip]
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR E[rip+4]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR E[rip+16]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR E[rip+12]
	mov	DWORD PTR -12[rbp], eax
	lea	rsi, editor_find_callback[rip]
	lea	rdi, .LC46[rip]
	call	editor_prompt
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L223
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	jmp	.L225
.L223:
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR E[rip], eax
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR E[rip+4], eax
	mov	eax, DWORD PTR -16[rbp]
	mov	DWORD PTR E[rip+16], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR E[rip+12], eax
.L225:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	editor_find, .-editor_find
	.globl	ab_append
	.type	ab_append, @function
ab_append:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L229
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	movsx	rcx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rcx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	eax, DWORD PTR -36[rbp]
	add	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 8[rax], edx
	jmp	.L226
.L229:
	nop
.L226:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	ab_append, .-ab_append
	.globl	ab_free
	.type	ab_free, @function
ab_free:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	ab_free, .-ab_free
	.globl	editor_scroll
	.type	editor_scroll, @function
editor_scroll:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR E[rip+8], 0
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jge	.L232
	mov	edx, DWORD PTR E[rip]
	mov	rsi, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	add	rax, rsi
	mov	esi, edx
	mov	rdi, rax
	call	editor_row_cx_to_rx
	mov	DWORD PTR E[rip+8], eax
.L232:
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+12]
	cmp	edx, eax
	jge	.L233
	mov	eax, DWORD PTR E[rip+4]
	mov	DWORD PTR E[rip+12], eax
.L233:
	mov	eax, DWORD PTR E[rip+4]
	mov	ecx, DWORD PTR E[rip+12]
	mov	edx, DWORD PTR E[rip+20]
	add	edx, ecx
	cmp	eax, edx
	jl	.L234
	mov	eax, DWORD PTR E[rip+4]
	mov	edx, DWORD PTR E[rip+20]
	sub	eax, edx
	add	eax, 1
	mov	DWORD PTR E[rip+12], eax
.L234:
	mov	edx, DWORD PTR E[rip+8]
	mov	eax, DWORD PTR E[rip+16]
	cmp	edx, eax
	jge	.L235
	mov	eax, DWORD PTR E[rip+8]
	mov	DWORD PTR E[rip+16], eax
.L235:
	mov	eax, DWORD PTR E[rip+8]
	mov	ecx, DWORD PTR E[rip+16]
	mov	edx, DWORD PTR E[rip+24]
	add	edx, ecx
	cmp	eax, edx
	jl	.L237
	mov	eax, DWORD PTR E[rip+8]
	mov	edx, DWORD PTR E[rip+24]
	sub	eax, edx
	add	eax, 1
	mov	DWORD PTR E[rip+16], eax
.L237:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	editor_scroll, .-editor_scroll
	.section	.rodata
.LC47:
	.string	"0.0.1"
.LC48:
	.string	"Kilo editor -- version %s"
.LC49:
	.string	"~"
.LC50:
	.string	" "
.LC51:
	.string	"\033[7m"
.LC52:
	.string	"\033[m"
.LC53:
	.string	"\033[%dm"
.LC54:
	.string	"\033[39m"
.LC55:
	.string	"\033[K"
.LC56:
	.string	"\r\n"
	.text
	.globl	editor_draw_rows
	.type	editor_draw_rows, @function
editor_draw_rows:
.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, 176
	mov	QWORD PTR -168[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -152[rbp], 0
	jmp	.L239
.L260:
	mov	edx, DWORD PTR E[rip+12]
	mov	eax, DWORD PTR -152[rbp]
	add	eax, edx
	mov	DWORD PTR -128[rbp], eax
	mov	eax, DWORD PTR E[rip+28]
	cmp	DWORD PTR -128[rbp], eax
	jl	.L240
	mov	eax, DWORD PTR E[rip+28]
	test	eax, eax
	jne	.L241
	mov	eax, DWORD PTR E[rip+20]
	movsx	rdx, eax
	imul	rdx, rdx, 1431655766
	shr	rdx, 32
	sar	eax, 31
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	cmp	DWORD PTR -152[rbp], eax
	jne	.L241
	lea	rax, -96[rbp]
	lea	rcx, .LC47[rip]
	lea	rdx, .LC48[rip]
	mov	esi, 80
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	DWORD PTR -148[rbp], eax
	mov	eax, DWORD PTR E[rip+24]
	cmp	DWORD PTR -148[rbp], eax
	jle	.L242
	mov	eax, DWORD PTR E[rip+24]
	mov	DWORD PTR -148[rbp], eax
.L242:
	mov	eax, DWORD PTR E[rip+24]
	sub	eax, DWORD PTR -148[rbp]
	mov	edx, eax
	shr	edx, 31
	add	eax, edx
	sar	eax
	mov	DWORD PTR -144[rbp], eax
	cmp	DWORD PTR -144[rbp], 0
	je	.L244
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 1
	lea	rsi, .LC49[rip]
	mov	rdi, rax
	call	ab_append
	sub	DWORD PTR -144[rbp], 1
	jmp	.L244
.L245:
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 1
	lea	rsi, .LC50[rip]
	mov	rdi, rax
	call	ab_append
.L244:
	mov	eax, DWORD PTR -144[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -144[rbp], edx
	test	eax, eax
	jne	.L245
	mov	edx, DWORD PTR -148[rbp]
	lea	rcx, -96[rbp]
	mov	rax, QWORD PTR -168[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	jmp	.L247
.L241:
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 1
	lea	rsi, .LC49[rip]
	mov	rdi, rax
	call	ab_append
	jmp	.L247
.L240:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -128[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 8[rax]
	mov	edx, DWORD PTR E[rip+16]
	sub	eax, edx
	mov	DWORD PTR -140[rbp], eax
	cmp	DWORD PTR -140[rbp], 0
	jns	.L248
	mov	DWORD PTR -140[rbp], 0
.L248:
	mov	eax, DWORD PTR E[rip+24]
	cmp	DWORD PTR -140[rbp], eax
	jle	.L249
	mov	eax, DWORD PTR E[rip+24]
	mov	DWORD PTR -140[rbp], eax
.L249:
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -128[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR E[rip+16]
	cdqe
	add	rax, rdx
	mov	QWORD PTR -112[rbp], rax
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR -128[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdx, QWORD PTR 32[rax]
	mov	eax, DWORD PTR E[rip+16]
	cdqe
	add	rax, rdx
	mov	QWORD PTR -104[rbp], rax
	mov	DWORD PTR -136[rbp], -1
	mov	DWORD PTR -132[rbp], 0
	jmp	.L250
.L259:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -132[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2
	test	eax, eax
	je	.L251
	mov	eax, DWORD PTR -132[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 25
	jg	.L252
	mov	eax, DWORD PTR -132[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	add	eax, 64
	jmp	.L253
.L252:
	mov	eax, 63
.L253:
	mov	BYTE PTR -153[rbp], al
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 4
	lea	rsi, .LC51[rip]
	mov	rdi, rax
	call	ab_append
	lea	rcx, -153[rbp]
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 3
	lea	rsi, .LC52[rip]
	mov	rdi, rax
	call	ab_append
	cmp	DWORD PTR -136[rbp], -1
	je	.L255
	mov	edx, DWORD PTR -136[rbp]
	lea	rax, -96[rbp]
	mov	ecx, edx
	lea	rdx, .LC53[rip]
	mov	esi, 16
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	DWORD PTR -116[rbp], eax
	mov	edx, DWORD PTR -116[rbp]
	lea	rcx, -96[rbp]
	mov	rax, QWORD PTR -168[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	jmp	.L255
.L251:
	mov	eax, DWORD PTR -132[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L256
	cmp	DWORD PTR -136[rbp], -1
	je	.L257
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 5
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	ab_append
	mov	DWORD PTR -136[rbp], -1
.L257:
	mov	eax, DWORD PTR -132[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -112[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	jmp	.L255
.L256:
	mov	eax, DWORD PTR -132[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	editor_syntax_to_color
	mov	DWORD PTR -124[rbp], eax
	mov	eax, DWORD PTR -124[rbp]
	cmp	eax, DWORD PTR -136[rbp]
	je	.L258
	mov	eax, DWORD PTR -124[rbp]
	mov	DWORD PTR -136[rbp], eax
	mov	edx, DWORD PTR -124[rbp]
	lea	rax, -96[rbp]
	mov	ecx, edx
	lea	rdx, .LC53[rip]
	mov	esi, 16
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	DWORD PTR -120[rbp], eax
	mov	edx, DWORD PTR -120[rbp]
	lea	rcx, -96[rbp]
	mov	rax, QWORD PTR -168[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
.L258:
	mov	eax, DWORD PTR -132[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -112[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
.L255:
	add	DWORD PTR -132[rbp], 1
.L250:
	mov	eax, DWORD PTR -132[rbp]
	cmp	eax, DWORD PTR -140[rbp]
	jl	.L259
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 5
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	ab_append
.L247:
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 3
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	ab_append
	mov	rax, QWORD PTR -168[rbp]
	mov	edx, 2
	lea	rsi, .LC56[rip]
	mov	rdi, rax
	call	ab_append
	add	DWORD PTR -152[rbp], 1
.L239:
	mov	eax, DWORD PTR E[rip+20]
	cmp	DWORD PTR -152[rbp], eax
	jl	.L260
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L261
	call	__stack_chk_fail@PLT
.L261:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	editor_draw_rows, .-editor_draw_rows
	.section	.rodata
.LC57:
	.string	"(modified)"
.LC58:
	.string	"[No Name]"
.LC59:
	.string	"%.20s - %d lines %s"
.LC60:
	.string	"no ft"
.LC61:
	.string	"%s %d/%d"
	.text
	.globl	editor_draw_status_bar
	.type	editor_draw_status_bar, @function
editor_draw_status_bar:
.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, 208
	mov	QWORD PTR -200[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -200[rbp]
	mov	edx, 4
	lea	rsi, .LC51[rip]
	mov	rdi, rax
	call	ab_append
	mov	eax, DWORD PTR E[rip+40]
	test	eax, eax
	je	.L263
	lea	rdx, .LC57[rip]
	jmp	.L264
.L263:
	lea	rdx, .LC39[rip]
.L264:
	mov	ecx, DWORD PTR E[rip+28]
	mov	rax, QWORD PTR E[rip+48]
	test	rax, rax
	je	.L265
	mov	rax, QWORD PTR E[rip+48]
	jmp	.L266
.L265:
	lea	rax, .LC58[rip]
.L266:
	lea	rdi, -176[rbp]
	mov	r9, rdx
	mov	r8d, ecx
	mov	rcx, rax
	lea	rdx, .LC59[rip]
	mov	esi, 80
	mov	eax, 0
	call	snprintf@PLT
	mov	DWORD PTR -184[rbp], eax
	mov	edx, DWORD PTR E[rip+28]
	mov	eax, DWORD PTR E[rip+4]
	lea	ecx, 1[rax]
	mov	rax, QWORD PTR E[rip+144]
	test	rax, rax
	je	.L267
	mov	rax, QWORD PTR E[rip+144]
	mov	rax, QWORD PTR [rax]
	jmp	.L268
.L267:
	lea	rax, .LC60[rip]
.L268:
	lea	rdi, -96[rbp]
	mov	r9d, edx
	mov	r8d, ecx
	mov	rcx, rax
	lea	rdx, .LC61[rip]
	mov	esi, 80
	mov	eax, 0
	call	snprintf@PLT
	mov	DWORD PTR -180[rbp], eax
	mov	eax, DWORD PTR E[rip+24]
	cmp	DWORD PTR -184[rbp], eax
	jle	.L269
	mov	eax, DWORD PTR E[rip+24]
	mov	DWORD PTR -184[rbp], eax
.L269:
	mov	edx, DWORD PTR -184[rbp]
	lea	rcx, -176[rbp]
	mov	rax, QWORD PTR -200[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	jmp	.L270
.L273:
	mov	eax, DWORD PTR E[rip+24]
	sub	eax, DWORD PTR -184[rbp]
	cmp	DWORD PTR -180[rbp], eax
	jne	.L271
	mov	edx, DWORD PTR -180[rbp]
	lea	rcx, -96[rbp]
	mov	rax, QWORD PTR -200[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	jmp	.L272
.L271:
	mov	rax, QWORD PTR -200[rbp]
	mov	edx, 1
	lea	rsi, .LC50[rip]
	mov	rdi, rax
	call	ab_append
	add	DWORD PTR -184[rbp], 1
.L270:
	mov	eax, DWORD PTR E[rip+24]
	cmp	DWORD PTR -184[rbp], eax
	jl	.L273
.L272:
	mov	rax, QWORD PTR -200[rbp]
	mov	edx, 3
	lea	rsi, .LC52[rip]
	mov	rdi, rax
	call	ab_append
	mov	rax, QWORD PTR -200[rbp]
	mov	edx, 2
	lea	rsi, .LC56[rip]
	mov	rdi, rax
	call	ab_append
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L274
	call	__stack_chk_fail@PLT
.L274:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	editor_draw_status_bar, .-editor_draw_status_bar
	.globl	editor_draw_message_bar
	.type	editor_draw_message_bar, @function
editor_draw_message_bar:
.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	rax, QWORD PTR -24[rbp]
	mov	edx, 3
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	ab_append
	lea	rdi, E[rip+56]
	call	strlen@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR E[rip+24]
	cmp	DWORD PTR -4[rbp], eax
	jle	.L276
	mov	eax, DWORD PTR E[rip+24]
	mov	DWORD PTR -4[rbp], eax
.L276:
	cmp	DWORD PTR -4[rbp], 0
	je	.L278
	mov	edi, 0
	call	time@PLT
	mov	rdx, QWORD PTR E[rip+136]
	sub	rax, rdx
	cmp	rax, 4
	jg	.L278
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, E[rip+56]
	mov	rdi, rax
	call	ab_append
.L278:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	editor_draw_message_bar, .-editor_draw_message_bar
	.section	.rodata
.LC62:
	.string	"\033[?25l"
.LC63:
	.string	"\033[%d;%dH"
.LC64:
	.string	"\033[?25h"
	.text
	.globl	editor_refresh_screen
	.type	editor_refresh_screen, @function
editor_refresh_screen:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	editor_scroll
	mov	QWORD PTR -64[rbp], 0
	mov	DWORD PTR -56[rbp], 0
	lea	rax, -64[rbp]
	mov	edx, 6
	lea	rsi, .LC62[rip]
	mov	rdi, rax
	call	ab_append
	lea	rax, -64[rbp]
	mov	edx, 3
	lea	rsi, .LC31[rip]
	mov	rdi, rax
	call	ab_append
	lea	rax, -64[rbp]
	mov	rdi, rax
	call	editor_draw_rows
	lea	rax, -64[rbp]
	mov	rdi, rax
	call	editor_draw_status_bar
	lea	rax, -64[rbp]
	mov	rdi, rax
	call	editor_draw_message_bar
	mov	eax, DWORD PTR E[rip+8]
	mov	edx, DWORD PTR E[rip+16]
	sub	eax, edx
	lea	ecx, 1[rax]
	mov	eax, DWORD PTR E[rip+4]
	mov	edx, DWORD PTR E[rip+12]
	sub	eax, edx
	lea	edx, 1[rax]
	lea	rax, -48[rbp]
	mov	r8d, ecx
	mov	ecx, edx
	lea	rdx, .LC63[rip]
	mov	esi, 32
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	edx, eax
	lea	rcx, -48[rbp]
	lea	rax, -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ab_append
	lea	rax, -64[rbp]
	mov	edx, 6
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	ab_append
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rax
	mov	edi, 1
	call	write@PLT
	lea	rax, -64[rbp]
	mov	rdi, rax
	call	ab_free
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L280
	call	__stack_chk_fail@PLT
.L280:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	editor_refresh_screen, .-editor_refresh_screen
	.globl	editor_set_status_message
	.type	editor_set_status_message, @function
editor_set_status_message:
.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, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L282
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L282:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	lea	rdx, -208[rbp]
	mov	rax, QWORD PTR -216[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	mov	esi, 80
	lea	rdi, E[rip+56]
	call	vsnprintf@PLT
	mov	edi, 0
	call	time@PLT
	mov	QWORD PTR E[rip+136], rax
	nop
	mov	rax, QWORD PTR -184[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L283
	call	__stack_chk_fail@PLT
.L283:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	editor_set_status_message, .-editor_set_status_message
	.globl	editor_prompt
	.type	editor_prompt, @function
editor_prompt:
.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	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -24[rbp], 128
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	QWORD PTR -8[rbp], 0
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], 0
.L296:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	mov	eax, 0
	call	editor_set_status_message
	mov	eax, 0
	call	editor_refresh_screen
	mov	eax, 0
	call	editor_read_key
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 1004
	je	.L285
	cmp	DWORD PTR -28[rbp], 8
	je	.L285
	cmp	DWORD PTR -28[rbp], 127
	jne	.L286
.L285:
	cmp	QWORD PTR -8[rbp], 0
	je	.L288
	sub	QWORD PTR -8[rbp], 1
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	jmp	.L288
.L286:
	cmp	DWORD PTR -28[rbp], 27
	jne	.L289
	lea	rdi, .LC39[rip]
	mov	eax, 0
	call	editor_set_status_message
	cmp	QWORD PTR -48[rbp], 0
	je	.L290
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	rcx
.L290:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	jmp	.L291
.L289:
	cmp	DWORD PTR -28[rbp], 13
	jne	.L292
	cmp	QWORD PTR -8[rbp], 0
	je	.L288
	lea	rdi, .LC39[rip]
	mov	eax, 0
	call	editor_set_status_message
	cmp	QWORD PTR -48[rbp], 0
	je	.L293
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	rcx
.L293:
	mov	rax, QWORD PTR -16[rbp]
	jmp	.L291
.L292:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2
	test	eax, eax
	jne	.L288
	cmp	DWORD PTR -28[rbp], 127
	jg	.L288
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, 1
	cmp	QWORD PTR -8[rbp], rax
	jne	.L294
	sal	QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR -16[rbp], rax
.L294:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -28[rbp]
	mov	BYTE PTR [rax], dl
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
.L288:
	cmp	QWORD PTR -48[rbp], 0
	je	.L296
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	rcx
	jmp	.L296
.L291:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	editor_prompt, .-editor_prompt
	.globl	editor_move_cursor
	.type	editor_move_cursor, @function
editor_move_cursor:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jge	.L298
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	jmp	.L299
.L298:
	mov	eax, 0
.L299:
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -20[rbp], 1003
	je	.L300
	cmp	DWORD PTR -20[rbp], 1003
	jg	.L301
	cmp	DWORD PTR -20[rbp], 1002
	je	.L302
	cmp	DWORD PTR -20[rbp], 1002
	jg	.L301
	cmp	DWORD PTR -20[rbp], 1001
	je	.L303
	cmp	DWORD PTR -20[rbp], 1001
	jg	.L301
	cmp	DWORD PTR -20[rbp], 1000
	je	.L304
	cmp	DWORD PTR -20[rbp], 1000
	jg	.L301
	cmp	DWORD PTR -20[rbp], 16
	je	.L302
	cmp	DWORD PTR -20[rbp], 16
	jg	.L301
	cmp	DWORD PTR -20[rbp], 2
	je	.L304
	cmp	DWORD PTR -20[rbp], 14
	je	.L300
	jmp	.L301
.L304:
	mov	eax, DWORD PTR E[rip]
	test	eax, eax
	je	.L305
	mov	eax, DWORD PTR E[rip]
	sub	eax, 1
	mov	DWORD PTR E[rip], eax
	jmp	.L316
.L305:
	mov	eax, DWORD PTR E[rip+4]
	test	eax, eax
	jle	.L316
	mov	eax, DWORD PTR E[rip+4]
	sub	eax, 1
	mov	DWORD PTR E[rip+4], eax
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 4[rax]
	mov	DWORD PTR E[rip], eax
	jmp	.L316
.L303:
	cmp	QWORD PTR -8[rbp], 0
	je	.L307
	mov	edx, DWORD PTR E[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	edx, eax
	jge	.L307
	mov	eax, DWORD PTR E[rip]
	add	eax, 1
	mov	DWORD PTR E[rip], eax
	jmp	.L317
.L307:
	cmp	QWORD PTR -8[rbp], 0
	je	.L317
	mov	edx, DWORD PTR E[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	edx, eax
	jne	.L317
	mov	eax, DWORD PTR E[rip+4]
	add	eax, 1
	mov	DWORD PTR E[rip+4], eax
	mov	DWORD PTR E[rip], 0
	jmp	.L317
.L302:
	mov	eax, DWORD PTR E[rip+4]
	test	eax, eax
	je	.L318
	mov	eax, DWORD PTR E[rip+4]
	sub	eax, 1
	mov	DWORD PTR E[rip+4], eax
	jmp	.L318
.L300:
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jge	.L319
	mov	eax, DWORD PTR E[rip+4]
	add	eax, 1
	mov	DWORD PTR E[rip+4], eax
	jmp	.L319
.L316:
	nop
	jmp	.L301
.L317:
	nop
	jmp	.L301
.L318:
	nop
	jmp	.L301
.L319:
	nop
.L301:
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jge	.L311
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	jmp	.L312
.L311:
	mov	eax, 0
.L312:
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L313
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	jmp	.L314
.L313:
	mov	eax, 0
.L314:
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR E[rip]
	cmp	DWORD PTR -12[rbp], eax
	jge	.L320
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR E[rip], eax
.L320:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	editor_move_cursor, .-editor_move_cursor
	.section	.rodata
	.align 8
.LC65:
	.string	"WARNING!!! File has unsaved changes. Press Ctrl-Q %d more times to quit."
	.text
	.globl	editor_process_keypress
	.type	editor_process_keypress, @function
editor_process_keypress:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, 0
	call	editor_read_key
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 1008
	jg	.L322
	cmp	DWORD PTR -4[rbp], 1000
	jge	.L323
	cmp	DWORD PTR -4[rbp], 27
	jg	.L324
	cmp	DWORD PTR -4[rbp], 0
	jg	.L325
	jmp	.L322
.L323:
	mov	eax, DWORD PTR -4[rbp]
	sub	eax, 1000
	cmp	eax, 8
	ja	.L322
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L327[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L327[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L327:
	.long	.L331-.L327
	.long	.L331-.L327
	.long	.L331-.L327
	.long	.L331-.L327
	.long	.L330-.L327
	.long	.L329-.L327
	.long	.L328-.L327
	.long	.L326-.L327
	.long	.L326-.L327
	.text
.L325:
	cmp	DWORD PTR -4[rbp], 27
	ja	.L322
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L333[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L333[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L333:
	.long	.L322-.L333
	.long	.L329-.L333
	.long	.L331-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L328-.L333
	.long	.L337-.L333
	.long	.L322-.L333
	.long	.L330-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L349-.L333
	.long	.L336-.L333
	.long	.L331-.L333
	.long	.L322-.L333
	.long	.L331-.L333
	.long	.L335-.L333
	.long	.L322-.L333
	.long	.L334-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L322-.L333
	.long	.L349-.L333
	.text
.L324:
	cmp	DWORD PTR -4[rbp], 127
	je	.L330
	jmp	.L322
.L336:
	mov	eax, 0
	call	editor_insert_newline
	jmp	.L338
.L335:
	mov	eax, DWORD PTR E[rip+40]
	test	eax, eax
	je	.L339
	mov	eax, DWORD PTR quit_times.0[rip]
	test	eax, eax
	jle	.L339
	mov	eax, DWORD PTR quit_times.0[rip]
	mov	esi, eax
	lea	rdi, .LC65[rip]
	mov	eax, 0
	call	editor_set_status_message
	mov	eax, DWORD PTR quit_times.0[rip]
	sub	eax, 1
	mov	DWORD PTR quit_times.0[rip], eax
	jmp	.L321
.L339:
	mov	edx, 4
	lea	rsi, .LC30[rip]
	mov	edi, 1
	call	write@PLT
	mov	edx, 3
	lea	rsi, .LC31[rip]
	mov	edi, 1
	call	write@PLT
	mov	edi, 0
	call	exit@PLT
.L334:
	mov	eax, 0
	call	editor_save
	jmp	.L338
.L329:
	mov	DWORD PTR E[rip], 0
	jmp	.L338
.L328:
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jge	.L350
	mov	rcx, QWORD PTR E[rip+32]
	mov	eax, DWORD PTR E[rip+4]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 4[rax]
	mov	DWORD PTR E[rip], eax
	jmp	.L350
.L337:
	mov	eax, 0
	call	editor_find
	jmp	.L338
.L330:
	cmp	DWORD PTR -4[rbp], 1004
	jne	.L342
	mov	edi, 1001
	call	editor_move_cursor
.L342:
	mov	eax, 0
	call	editor_del_char
	jmp	.L338
.L326:
	cmp	DWORD PTR -4[rbp], 1007
	jne	.L343
	mov	eax, DWORD PTR E[rip+12]
	mov	DWORD PTR E[rip+4], eax
	jmp	.L344
.L343:
	cmp	DWORD PTR -4[rbp], 1008
	jne	.L344
	mov	edx, DWORD PTR E[rip+12]
	mov	eax, DWORD PTR E[rip+20]
	add	eax, edx
	sub	eax, 1
	mov	DWORD PTR E[rip+4], eax
	mov	edx, DWORD PTR E[rip+4]
	mov	eax, DWORD PTR E[rip+28]
	cmp	edx, eax
	jle	.L344
	mov	eax, DWORD PTR E[rip+28]
	mov	DWORD PTR E[rip+4], eax
.L344:
	mov	eax, DWORD PTR E[rip+20]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L345
.L348:
	cmp	DWORD PTR -4[rbp], 1007
	jne	.L346
	mov	eax, 1002
	jmp	.L347
.L346:
	mov	eax, 1003
.L347:
	mov	edi, eax
	call	editor_move_cursor
.L345:
	mov	eax, DWORD PTR -8[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -8[rbp], edx
	test	eax, eax
	jne	.L348
	jmp	.L338
.L331:
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	editor_move_cursor
	jmp	.L338
.L322:
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	editor_insert_char
	jmp	.L338
.L349:
	nop
	jmp	.L338
.L350:
	nop
.L338:
	mov	DWORD PTR quit_times.0[rip], 3
.L321:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	editor_process_keypress, .-editor_process_keypress
	.section	.rodata
.LC66:
	.string	"get_window_size"
	.text
	.globl	init_editor
	.type	init_editor, @function
init_editor:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR E[rip], 0
	mov	DWORD PTR E[rip+4], 0
	mov	DWORD PTR E[rip+8], 0
	mov	DWORD PTR E[rip+12], 0
	mov	DWORD PTR E[rip+16], 0
	mov	DWORD PTR E[rip+28], 0
	mov	QWORD PTR E[rip+32], 0
	mov	DWORD PTR E[rip+40], 0
	mov	QWORD PTR E[rip+48], 0
	mov	BYTE PTR E[rip+56], 0
	mov	QWORD PTR E[rip+136], 0
	mov	QWORD PTR E[rip+144], 0
	lea	rsi, E[rip+24]
	lea	rdi, E[rip+20]
	call	get_window_size
	cmp	eax, -1
	jne	.L352
	lea	rdi, .LC66[rip]
	call	die
.L352:
	mov	eax, DWORD PTR E[rip+20]
	sub	eax, 2
	mov	DWORD PTR E[rip+20], eax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	init_editor, .-init_editor
	.section	.rodata
	.align 8
.LC67:
	.string	"HELP: Ctrl-S = save | Ctrl-Q = quit | Ctrl-F = find"
	.text
	.globl	main
	.type	main, @function
main:
.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, 16
	mov	DWORD PTR -4[rbp], edi
	mov	QWORD PTR -16[rbp], rsi
	mov	eax, 0
	call	enable_raw_mode
	mov	eax, 0
	call	init_editor
	cmp	DWORD PTR -4[rbp], 1
	jle	.L354
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	editor_open
.L354:
	lea	rdi, .LC67[rip]
	mov	eax, 0
	call	editor_set_status_message
.L355:
	mov	eax, 0
	call	editor_refresh_screen
	mov	eax, 0
	call	editor_process_keypress
	jmp	.L355
	.cfi_endproc
.LFE45:
	.size	main, .-main
	.local	saved_hl.4
	.comm	saved_hl.4,8,8
	.local	saved_hl_line.3
	.comm	saved_hl_line.3,4,4
	.data
	.align 4
	.type	last_match.2, @object
	.size	last_match.2, 4
last_match.2:
	.long	-1
	.align 4
	.type	direction.1, @object
	.size	direction.1, 4
direction.1:
	.long	1
	.align 4
	.type	quit_times.0, @object
	.size	quit_times.0, 4
quit_times.0:
	.long	3
	.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	"1065819.c"
	.text
	.comm	E,192,4
	.global	C_HL_extensions
	.section	.rodata
	.align	2
.LC0:
	.ascii	".c\000"
	.align	2
.LC1:
	.ascii	".h\000"
	.align	2
.LC2:
	.ascii	".cpp\000"
	.data
	.align	2
	.type	C_HL_extensions, %object
	.size	C_HL_extensions, 16
C_HL_extensions:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	0
	.global	C_HL_keywords
	.section	.rodata
	.align	2
.LC3:
	.ascii	"switch\000"
	.align	2
.LC4:
	.ascii	"if\000"
	.align	2
.LC5:
	.ascii	"while\000"
	.align	2
.LC6:
	.ascii	"for\000"
	.align	2
.LC7:
	.ascii	"break\000"
	.align	2
.LC8:
	.ascii	"continue\000"
	.align	2
.LC9:
	.ascii	"return\000"
	.align	2
.LC10:
	.ascii	"else\000"
	.align	2
.LC11:
	.ascii	"struct\000"
	.align	2
.LC12:
	.ascii	"union\000"
	.align	2
.LC13:
	.ascii	"typedef\000"
	.align	2
.LC14:
	.ascii	"static\000"
	.align	2
.LC15:
	.ascii	"enum\000"
	.align	2
.LC16:
	.ascii	"class\000"
	.align	2
.LC17:
	.ascii	"case\000"
	.align	2
.LC18:
	.ascii	"int|\000"
	.align	2
.LC19:
	.ascii	"long|\000"
	.align	2
.LC20:
	.ascii	"double|\000"
	.align	2
.LC21:
	.ascii	"float|\000"
	.align	2
.LC22:
	.ascii	"char|\000"
	.align	2
.LC23:
	.ascii	"unsigned|\000"
	.align	2
.LC24:
	.ascii	"signed|\000"
	.align	2
.LC25:
	.ascii	"void|\000"
	.data
	.align	2
	.type	C_HL_keywords, %object
	.size	C_HL_keywords, 96
C_HL_keywords:
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	0
	.global	HLDB
	.section	.rodata
	.align	2
.LC26:
	.ascii	"c\000"
	.align	2
.LC27:
	.ascii	"//\000"
	.align	2
.LC28:
	.ascii	"/*\000"
	.align	2
.LC29:
	.ascii	"*/\000"
	.data
	.align	2
	.type	HLDB, %object
	.size	HLDB, 28
HLDB:
	.word	.LC26
	.word	C_HL_extensions
	.word	C_HL_keywords
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	3
	.section	.rodata
	.align	2
.LC30:
	.ascii	"\033[2J\000"
	.align	2
.LC31:
	.ascii	"\033[H\000"
	.text
	.align	2
	.global	die
	.syntax unified
	.arm
	.fpu softvfp
	.type	die, %function
die:
	@ 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]
	mov	r2, #4
	ldr	r1, .L2
	mov	r0, #1
	bl	write
	mov	r2, #3
	ldr	r1, .L2+4
	mov	r0, #1
	bl	write
	ldr	r0, [fp, #-8]
	bl	perror
	mov	r0, #1
	bl	exit
.L3:
	.align	2
.L2:
	.word	.LC30
	.word	.LC31
	.size	die, .-die
	.section	.rodata
	.align	2
.LC32:
	.ascii	"tcsetattr\000"
	.text
	.align	2
	.global	disable_raw_mode
	.syntax unified
	.arm
	.fpu softvfp
	.type	disable_raw_mode, %function
disable_raw_mode:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r2, .L7
	mov	r1, #2
	mov	r0, #0
	bl	tcsetattr
	mov	r3, r0
	cmn	r3, #1
	bne	.L6
	ldr	r0, .L7+4
	bl	die
.L6:
	nop
	pop	{fp, pc}
.L8:
	.align	2
.L7:
	.word	E+132
	.word	.LC32
	.size	disable_raw_mode, .-disable_raw_mode
	.section	.rodata
	.align	2
.LC33:
	.ascii	"tcgetattr\000"
	.align	2
.LC34:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	enable_raw_mode
	.syntax unified
	.arm
	.fpu softvfp
	.type	enable_raw_mode, %function
enable_raw_mode:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	ldr	r3, .L14
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r1, .L14+4
	mov	r0, #0
	bl	tcgetattr
	mov	r3, r0
	cmn	r3, #1
	bne	.L10
	ldr	r0, .L14+8
	bl	die
.L10:
	ldr	r0, .L14+12
	bl	atexit
	ldr	r3, .L14+16
	sub	ip, fp, #68
	add	lr, r3, #132
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	ldr	r3, [fp, #-68]
	bic	r3, r3, #1328
	bic	r3, r3, #2
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-64]
	bic	r3, r3, #1
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-60]
	orr	r3, r3, #48
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	bic	r3, r3, #32768
	bic	r3, r3, #11
	str	r3, [fp, #-56]
	mov	r3, #0
	strb	r3, [fp, #-45]
	mov	r3, #1
	strb	r3, [fp, #-46]
	sub	r3, fp, #68
	mov	r2, r3
	mov	r1, #2
	mov	r0, #0
	bl	tcsetattr
	mov	r3, r0
	cmn	r3, #1
	bne	.L13
	ldr	r0, .L14+20
	bl	die
.L13:
	nop
	ldr	r3, .L14
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L12
	bl	__stack_chk_fail
.L12:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L15:
	.align	2
.L14:
	.word	.LC34
	.word	E+132
	.word	.LC33
	.word	disable_raw_mode
	.word	E
	.word	.LC32
	.size	enable_raw_mode, .-enable_raw_mode
	.section	.rodata
	.align	2
.LC35:
	.ascii	"read\000"
	.align	2
.LC36:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_read_key
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_read_key, %function
editor_read_key:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, .L47
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	b	.L17
.L18:
	ldr	r3, [fp, #-16]
	cmn	r3, #1
	bne	.L17
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	cmp	r3, #11
	beq	.L17
	ldr	r0, .L47+4
	bl	die
.L17:
	sub	r3, fp, #17
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	read
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	bne	.L18
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	cmp	r3, #27
	bne	.L19
	sub	r3, fp, #12
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	read
	mov	r3, r0
	cmp	r3, #1
	beq	.L20
	mov	r3, #27
	b	.L44
.L20:
	sub	r3, fp, #12
	add	r3, r3, #1
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	read
	mov	r3, r0
	cmp	r3, #1
	beq	.L22
	mov	r3, #27
	b	.L44
.L22:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	cmp	r3, #91
	bne	.L23
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	cmp	r3, #47
	bls	.L24
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	cmp	r3, #57
	bhi	.L24
	sub	r3, fp, #12
	add	r3, r3, #2
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	read
	mov	r3, r0
	cmp	r3, #1
	beq	.L25
	mov	r3, #27
	b	.L44
.L25:
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	cmp	r3, #126
	bne	.L46
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	sub	r3, r3, #49
	cmp	r3, #7
	ldrls	pc, [pc, r3, asl #2]
	b	.L46
.L28:
	.word	.L34
	.word	.L46
	.word	.L33
	.word	.L32
	.word	.L31
	.word	.L30
	.word	.L29
	.word	.L27
.L34:
	ldr	r3, .L47+8
	b	.L44
.L33:
	mov	r3, #1004
	b	.L44
.L32:
	ldr	r3, .L47+12
	b	.L44
.L31:
	ldr	r3, .L47+16
	b	.L44
.L30:
	mov	r3, #1008
	b	.L44
.L29:
	ldr	r3, .L47+8
	b	.L44
.L27:
	ldr	r3, .L47+12
	b	.L44
.L24:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	sub	r3, r3, #65
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L41
.L37:
	.word	.L40
	.word	.L39
	.word	.L38
	.word	.L36
.L40:
	ldr	r3, .L47+20
	b	.L44
.L39:
	ldr	r3, .L47+24
	b	.L44
.L38:
	ldr	r3, .L47+28
	b	.L44
.L36:
	mov	r3, #1000
	b	.L44
.L23:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	cmp	r3, #79
	bne	.L41
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	cmp	r3, #70
	beq	.L42
	cmp	r3, #72
	bne	.L41
	ldr	r3, .L47+8
	b	.L44
.L42:
	ldr	r3, .L47+12
	b	.L44
.L46:
	nop
.L41:
	mov	r3, #27
	b	.L44
.L19:
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
.L44:
	ldr	r2, .L47
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L45
	bl	__stack_chk_fail
.L45:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L48:
	.align	2
.L47:
	.word	.LC36
	.word	.LC35
	.word	1005
	.word	1006
	.word	1007
	.word	1002
	.word	1003
	.word	1001
	.size	editor_read_key, .-editor_read_key
	.section	.rodata
	.align	2
.LC37:
	.ascii	"\033[6n\000"
	.align	2
.LC38:
	.ascii	"%d;%d\000"
	.align	2
.LC39:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	get_cursor_position
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_cursor_position, %function
get_cursor_position:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	ldr	r3, .L64
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r2, #4
	ldr	r1, .L64+4
	mov	r0, #1
	bl	write
	mov	r3, r0
	cmp	r3, #4
	beq	.L52
	mvn	r3, #0
	b	.L60
.L56:
	sub	r2, fp, #40
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	read
	mov	r3, r0
	cmp	r3, #1
	bne	.L62
	sub	r2, fp, #40
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #82
	beq	.L63
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L52:
	ldr	r3, [fp, #-44]
	cmp	r3, #30
	bls	.L56
	b	.L54
.L62:
	nop
	b	.L54
.L63:
	nop
.L54:
	sub	r2, fp, #40
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-40]	@ zero_extendqisi2
	cmp	r3, #27
	bne	.L57
	ldrb	r3, [fp, #-39]	@ zero_extendqisi2
	cmp	r3, #91
	beq	.L58
.L57:
	mvn	r3, #0
	b	.L60
.L58:
	sub	r3, fp, #40
	add	r0, r3, #2
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-48]
	ldr	r1, .L64+8
	bl	__isoc99_sscanf
	mov	r3, r0
	cmp	r3, #2
	beq	.L59
	mvn	r3, #0
	b	.L60
.L59:
	mov	r3, #0
.L60:
	ldr	r2, .L64
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L61
	bl	__stack_chk_fail
.L61:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L65:
	.align	2
.L64:
	.word	.LC39
	.word	.LC37
	.word	.LC38
	.size	get_cursor_position, .-get_cursor_position
	.section	.rodata
	.align	2
.LC40:
	.ascii	"\033[999C\033[999B\000"
	.align	2
.LC41:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	get_window_size
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_window_size, %function
get_window_size:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, .L73
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #16
	mov	r2, r3
	ldr	r1, .L73+4
	mov	r0, #1
	bl	ioctl
	mov	r3, r0
	cmn	r3, #1
	beq	.L67
	ldrh	r3, [fp, #-14]
	cmp	r3, #0
	bne	.L68
.L67:
	mov	r2, #12
	ldr	r1, .L73+8
	mov	r0, #1
	bl	write
	mov	r3, r0
	cmp	r3, #12
	beq	.L69
	mvn	r3, #0
	b	.L71
.L69:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	get_cursor_position
	mov	r3, r0
	b	.L71
.L68:
	ldrh	r3, [fp, #-14]
	mov	r2, r3
	ldr	r3, [fp, #-28]
	str	r2, [r3]
	ldrh	r3, [fp, #-16]
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	mov	r3, #0
.L71:
	ldr	r2, .L73
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L72
	bl	__stack_chk_fail
.L72:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L74:
	.align	2
.L73:
	.word	.LC41
	.word	21523
	.word	.LC40
	.size	get_window_size, .-get_window_size
	.section	.rodata
	.align	2
.LC42:
	.ascii	",.()+-/*=~%<>[];\000"
	.text
	.align	2
	.global	is_separator
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_separator, %function
is_separator:
	@ 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]
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #8192
	cmp	r3, #0
	bne	.L76
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L76
	ldr	r1, [fp, #-8]
	ldr	r0, .L80
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	beq	.L77
.L76:
	mov	r3, #1
	b	.L79
.L77:
	mov	r3, #0
.L79:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L81:
	.align	2
.L80:
	.word	.LC42
	.size	is_separator, .-is_separator
	.align	2
	.global	editor_update_syntax
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_update_syntax, %function
editor_update_syntax:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #72
	str	r0, [fp, #-72]
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #8]
	mov	r1, r3
	mov	r0, r2
	bl	realloc
	mov	r2, r0
	ldr	r3, [fp, #-72]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-72]
	ldr	r0, [r3, #20]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #8]
	mov	r2, r3
	mov	r1, #0
	bl	memset
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	cmp	r3, #0
	beq	.L118
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-40]
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	ldr	r3, [r3, #12]
	str	r3, [fp, #-36]
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	ldr	r3, [r3, #16]
	str	r3, [fp, #-32]
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	ldr	r3, [r3, #20]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L85
	ldr	r0, [fp, #-36]
	bl	strlen
	mov	r3, r0
	b	.L86
.L85:
	mov	r3, #0
.L86:
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L87
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r3, r0
	b	.L88
.L87:
	mov	r3, #0
.L88:
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L89
	ldr	r0, [fp, #-28]
	bl	strlen
	mov	r3, r0
	b	.L90
.L89:
	mov	r3, #0
.L90:
	str	r3, [fp, #-16]
	mov	r3, #1
	str	r3, [fp, #-64]
	mov	r3, #0
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L91
	ldr	r3, .L119
	ldr	r2, [r3, #32]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	sub	r3, r3, #28
	add	r3, r2, r3
	ldr	r3, [r3, #24]
	cmp	r3, #0
	beq	.L91
	mov	r3, #1
	b	.L92
.L91:
	mov	r3, #0
.L92:
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L93
.L117:
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-66]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	ble	.L94
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	b	.L95
.L94:
	mov	r3, #0
.L95:
	strb	r3, [fp, #-65]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L96
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L96
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L96
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L96
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r0, r2, r3
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-52]
	sub	r3, r2, r3
	mov	r2, r3
	mov	r1, #1
	bl	memset
	b	.L97
.L96:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L98
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L98
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L98
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L99
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	mov	r2, #2
	strb	r2, [r3]
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L100
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	mov	r1, #2
	mov	r0, r3
	bl	memset
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r3, #1
	str	r3, [fp, #-64]
	b	.L93
.L100:
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	b	.L93
.L99:
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-32]
	mov	r0, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L98
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	mov	r1, #2
	mov	r0, r3
	bl	memset
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	mov	r3, #1
	str	r3, [fp, #-56]
	b	.L93
.L98:
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	ldr	r3, [r3, #24]
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L101
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L102
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	mov	r2, #5
	strb	r2, [r3]
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	cmp	r3, #92
	bne	.L103
	ldr	r3, [fp, #-52]
	add	r2, r3, #1
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #8]
	cmp	r2, r3
	bge	.L103
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #5
	strb	r2, [r3]
	ldr	r3, [fp, #-52]
	add	r3, r3, #2
	str	r3, [fp, #-52]
	b	.L93
.L103:
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	ldr	r2, [fp, #-60]
	cmp	r2, r3
	bne	.L104
	mov	r3, #0
	str	r3, [fp, #-60]
.L104:
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	mov	r3, #1
	str	r3, [fp, #-64]
	b	.L93
.L102:
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	cmp	r3, #34
	beq	.L105
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	cmp	r3, #39
	bne	.L101
.L105:
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	mov	r2, #5
	strb	r2, [r3]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	b	.L93
.L101:
	ldr	r3, .L119
	ldr	r3, [r3, #128]
	ldr	r3, [r3, #24]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L106
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	beq	.L107
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	bne	.L108
	ldrb	r3, [fp, #-65]	@ zero_extendqisi2
	cmp	r3, #6
	beq	.L108
.L107:
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L106
	ldrb	r3, [fp, #-65]	@ zero_extendqisi2
	cmp	r3, #6
	bne	.L106
.L108:
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	mov	r2, #6
	strb	r2, [r3]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-64]
	b	.L93
.L106:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L109
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L110
.L116:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #124
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L111
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-44]
.L111:
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-52]
	add	r0, r2, r3
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-44]
	mov	r1, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L112
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #16]
	ldr	r1, [fp, #-52]
	ldr	r2, [fp, #-44]
	add	r2, r1, r2
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	is_separator
	mov	r3, r0
	cmp	r3, #0
	beq	.L112
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-52]
	add	r0, r2, r3
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L113
	mov	r3, #4
	b	.L114
.L113:
	mov	r3, #3
.L114:
	ldr	r2, [fp, #-44]
	mov	r1, r3
	bl	memset
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	b	.L115
.L112:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L110:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L116
.L115:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L109
	mov	r3, #0
	str	r3, [fp, #-64]
	b	.L93
.L109:
	ldrb	r3, [fp, #-66]	@ zero_extendqisi2
	mov	r0, r3
	bl	is_separator
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L93:
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-52]
	cmp	r2, r3
	blt	.L117
.L97:
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-56]
	cmp	r2, r3
	movne	r3, #1
	moveq	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-72]
	ldr	r2, [fp, #-56]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L82
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r3, .L119
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bge	.L82
	ldr	r3, .L119
	ldr	r1, [r3, #32]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	add	r2, r3, #1
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r0, r3
	bl	editor_update_syntax
	b	.L82
.L118:
	nop
.L82:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L120:
	.align	2
.L119:
	.word	E
	.size	editor_update_syntax, .-editor_update_syntax
	.align	2
	.global	editor_syntax_to_color
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_syntax_to_color, %function
editor_syntax_to_color:
	@ 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]
	sub	r3, r3, #1
	cmp	r3, #6
	ldrls	pc, [pc, r3, asl #2]
	b	.L122
.L124:
	.word	.L129
	.word	.L129
	.word	.L128
	.word	.L127
	.word	.L126
	.word	.L125
	.word	.L123
.L129:
	mov	r3, #36
	b	.L130
.L128:
	mov	r3, #33
	b	.L130
.L127:
	mov	r3, #32
	b	.L130
.L126:
	mov	r3, #35
	b	.L130
.L125:
	mov	r3, #31
	b	.L130
.L123:
	mov	r3, #34
	b	.L130
.L122:
	mov	r3, #37
.L130:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	editor_syntax_to_color, .-editor_syntax_to_color
	.align	2
	.global	editor_select_syntax_highlight
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_select_syntax_highlight, %function
editor_select_syntax_highlight:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r3, .L144
	mov	r2, #0
	str	r2, [r3, #128]
	ldr	r3, .L144
	ldr	r3, [r3, #40]
	cmp	r3, #0
	beq	.L143
	ldr	r3, .L144
	ldr	r3, [r3, #40]
	mov	r1, #46
	mov	r0, r3
	bl	strrchr
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L134
.L142:
	ldr	r2, [fp, #-28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	ldr	r2, .L144+4
	add	r3, r3, r2
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L135
.L141:
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L136
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L136
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L137
.L136:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L138
	ldr	r3, .L144
	ldr	r0, [r3, #40]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	bl	strstr
	mov	r3, r0
	cmp	r3, #0
	beq	.L138
.L137:
	ldr	r2, .L144
	ldr	r3, [fp, #-12]
	str	r3, [r2, #128]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L139
.L140:
	ldr	r3, .L144
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r0, r3
	bl	editor_update_syntax
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L139:
	ldr	r3, .L144
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L140
	b	.L131
.L138:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L135:
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L141
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L134:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L142
	b	.L131
.L143:
	nop
.L131:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L145:
	.align	2
.L144:
	.word	E
	.word	HLDB
	.size	editor_select_syntax_highlight, .-editor_select_syntax_highlight
	.align	2
	.global	editor_row_cx_to_rx
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_row_cx_to_rx, %function
editor_row_cx_to_rx:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L147
.L149:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L148
	ldr	r3, [fp, #-12]
	rsbs	r2, r3, #0
	and	r3, r3, #7
	and	r2, r2, #7
	rsbpl	r3, r2, #0
	rsb	r3, r3, #7
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-12]
.L148:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L147:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L149
	ldr	r3, [fp, #-12]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	editor_row_cx_to_rx, .-editor_row_cx_to_rx
	.align	2
	.global	editor_row_rx_to_cx
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_row_rx_to_cx, %function
editor_row_rx_to_cx:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L152
.L156:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L153
	ldr	r3, [fp, #-12]
	rsbs	r2, r3, #0
	and	r3, r3, #7
	and	r2, r2, #7
	rsbpl	r3, r2, #0
	rsb	r3, r3, #7
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-12]
.L153:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	ble	.L154
	ldr	r3, [fp, #-8]
	b	.L155
.L154:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L152:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L156
	ldr	r3, [fp, #-8]
.L155:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	editor_row_rx_to_cx, .-editor_row_rx_to_cx
	.align	2
	.global	editor_update_row
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_update_row, %function
editor_update_row:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L158
.L160:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L159
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L159:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L158:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L160
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #16]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-24]
	ldr	r1, [r3, #4]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #16]
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L161
.L166:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L162
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #1
	str	r1, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #32
	strb	r2, [r3]
	b	.L163
.L164:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #1
	str	r1, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #32
	strb	r2, [r3]
.L163:
	ldr	r3, [fp, #-8]
	and	r3, r3, #7
	cmp	r3, #0
	bne	.L164
	b	.L165
.L162:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r2, r2, r3
	ldr	r3, [fp, #-24]
	ldr	r1, [r3, #16]
	ldr	r3, [fp, #-8]
	add	r0, r3, #1
	str	r0, [fp, #-8]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
.L165:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L161:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L166
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #8]
	ldr	r0, [fp, #-24]
	bl	editor_update_syntax
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	editor_update_row, .-editor_update_row
	.align	2
	.global	editor_insert_row
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_insert_row, %function
editor_insert_row:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	blt	.L173
	ldr	r3, .L174
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	bgt	.L173
	ldr	r3, .L174
	ldr	r2, [r3, #32]
	ldr	r3, .L174
	ldr	r3, [r3, #28]
	add	r3, r3, #1
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	mov	r1, r3
	mov	r0, r2
	bl	realloc
	mov	r3, r0
	ldr	r2, .L174
	str	r3, [r2, #32]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r3, [fp, #-24]
	add	r2, r3, #1
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r0, r1, r3
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r1, r1, r3
	ldr	r3, .L174
	ldr	r2, [r3, #28]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	mov	r2, r3
	bl	memmove
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	b	.L171
.L172:
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r3]
	add	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L171:
	ldr	r3, .L174
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	ble	.L172
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [fp, #-32]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-32]
	add	r0, r3, #1
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r4, r1, r3
	bl	malloc
	mov	r3, r0
	str	r3, [r4, #12]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	memcpy
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r2, #0
	str	r2, [r3, #16]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r2, #0
	str	r2, [r3, #20]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r2, #0
	str	r2, [r3, #24]
	ldr	r3, .L174
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r0, r3
	bl	editor_update_row
	ldr	r3, .L174
	ldr	r3, [r3, #28]
	add	r3, r3, #1
	ldr	r2, .L174
	str	r3, [r2, #28]
	ldr	r3, .L174
	ldr	r3, [r3, #36]
	add	r3, r3, #1
	ldr	r2, .L174
	str	r3, [r2, #36]
	b	.L167
.L173:
	nop
.L167:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L175:
	.align	2
.L174:
	.word	E
	.size	editor_insert_row, .-editor_insert_row
	.align	2
	.global	editor_free_row
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_free_row, %function
editor_free_row:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	editor_free_row, .-editor_free_row
	.align	2
	.global	editor_del_row
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_del_row, %function
editor_del_row:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	blt	.L183
	ldr	r3, .L184
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bge	.L183
	ldr	r3, .L184
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r0, r3
	bl	editor_free_row
	ldr	r3, .L184
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r0, r1, r3
	ldr	r3, .L184
	ldr	r1, [r3, #32]
	ldr	r3, [fp, #-16]
	add	r2, r3, #1
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r1, r1, r3
	ldr	r3, .L184
	ldr	r2, [r3, #28]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	sub	r3, r3, #1
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	mov	r2, r3
	bl	memmove
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-8]
	b	.L181
.L182:
	ldr	r3, .L184
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r3]
	sub	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L181:
	ldr	r3, .L184
	ldr	r3, [r3, #28]
	sub	r3, r3, #1
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L182
	ldr	r3, .L184
	ldr	r3, [r3, #28]
	sub	r3, r3, #1
	ldr	r2, .L184
	str	r3, [r2, #28]
	ldr	r3, .L184
	ldr	r3, [r3, #36]
	add	r3, r3, #1
	ldr	r2, .L184
	str	r3, [r2, #36]
	b	.L177
.L183:
	nop
.L177:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L185:
	.align	2
.L184:
	.word	E
	.size	editor_del_row, .-editor_del_row
	.align	2
	.global	editor_row_insert_char
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_row_insert_char, %function
editor_row_insert_char:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	blt	.L187
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	ble	.L188
.L187:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
.L188:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	add	r3, r3, #2
	mov	r1, r3
	mov	r0, r2
	bl	realloc
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	add	r0, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r1, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	add	r3, r3, #1
	mov	r2, r3
	bl	memmove
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	add	r2, r3, #1
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r0, [fp, #-8]
	bl	editor_update_row
	ldr	r3, .L189
	ldr	r3, [r3, #36]
	add	r3, r3, #1
	ldr	r2, .L189
	str	r3, [r2, #36]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L190:
	.align	2
.L189:
	.word	E
	.size	editor_row_insert_char, .-editor_row_insert_char
	.align	2
	.global	editor_row_append_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_row_append_string, %function
editor_row_append_string:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r1, r3
	add	r3, r3, #1
	mov	r1, r3
	mov	r0, r2
	bl	realloc
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-8]
	ldr	r2, [r2, #4]
	add	r3, r3, r2
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	memcpy
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-8]
	ldr	r2, [r2, #4]
	add	r3, r3, r2
	mov	r2, #0
	strb	r2, [r3]
	ldr	r0, [fp, #-8]
	bl	editor_update_row
	ldr	r3, .L192
	ldr	r3, [r3, #36]
	add	r3, r3, #1
	ldr	r2, .L192
	str	r3, [r2, #36]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L193:
	.align	2
.L192:
	.word	E
	.size	editor_row_append_string, .-editor_row_append_string
	.align	2
	.global	editor_row_del_char
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_row_del_char, %function
editor_row_del_char:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	blt	.L198
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bge	.L198
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r0, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	add	r1, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	mov	r2, r3
	bl	memmove
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	sub	r2, r3, #1
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r0, [fp, #-8]
	bl	editor_update_row
	ldr	r3, .L199
	ldr	r3, [r3, #36]
	add	r3, r3, #1
	ldr	r2, .L199
	str	r3, [r2, #36]
	b	.L194
.L198:
	nop
.L194:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L200:
	.align	2
.L199:
	.word	E
	.size	editor_row_del_char, .-editor_row_del_char
	.section	.rodata
	.align	2
.LC43:
	.ascii	"\000"
	.text
	.align	2
	.global	editor_insert_char
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_insert_char, %function
editor_insert_char:
	@ 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, .L203
	ldr	r2, [r3, #4]
	ldr	r3, .L203
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bne	.L202
	ldr	r3, .L203
	ldr	r3, [r3, #28]
	mov	r2, #0
	ldr	r1, .L203+4
	mov	r0, r3
	bl	editor_insert_row
.L202:
	ldr	r3, .L203
	ldr	r2, [r3, #32]
	ldr	r3, .L203
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, .L203
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	mov	r0, r3
	bl	editor_row_insert_char
	ldr	r3, .L203
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L203
	str	r3, [r2]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L204:
	.align	2
.L203:
	.word	E
	.word	.LC43
	.size	editor_insert_char, .-editor_insert_char
	.align	2
	.global	editor_insert_newline
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_insert_newline, %function
editor_insert_newline:
	@ 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, .L208
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L206
	ldr	r3, .L208
	ldr	r3, [r3, #4]
	mov	r2, #0
	ldr	r1, .L208+4
	mov	r0, r3
	bl	editor_insert_row
	b	.L207
.L206:
	ldr	r3, .L208
	ldr	r2, [r3, #32]
	ldr	r3, .L208
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, .L208
	ldr	r3, [r3, #4]
	add	r0, r3, #1
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	ldr	r2, .L208
	ldr	r2, [r2]
	add	r1, r3, r2
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldr	r3, .L208
	ldr	r3, [r3]
	sub	r3, r2, r3
	mov	r2, r3
	bl	editor_insert_row
	ldr	r3, .L208
	ldr	r2, [r3, #32]
	ldr	r3, .L208
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, .L208
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-8]
	ldr	r2, [r2, #4]
	add	r3, r3, r2
	mov	r2, #0
	strb	r2, [r3]
	ldr	r0, [fp, #-8]
	bl	editor_update_row
.L207:
	ldr	r3, .L208
	ldr	r3, [r3, #4]
	add	r3, r3, #1
	ldr	r2, .L208
	str	r3, [r2, #4]
	ldr	r3, .L208
	mov	r2, #0
	str	r2, [r3]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L209:
	.align	2
.L208:
	.word	E
	.word	.LC43
	.size	editor_insert_newline, .-editor_insert_newline
	.align	2
	.global	editor_del_char
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_del_char, %function
editor_del_char:
	@ 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, .L217
	ldr	r2, [r3, #4]
	ldr	r3, .L217
	ldr	r3, [r3, #28]
	cmp	r2, r3
	beq	.L215
	ldr	r3, .L217
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L213
	ldr	r3, .L217
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L216
.L213:
	ldr	r3, .L217
	ldr	r2, [r3, #32]
	ldr	r3, .L217
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, .L217
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L214
	ldr	r3, .L217
	ldr	r3, [r3]
	sub	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-8]
	bl	editor_row_del_char
	ldr	r3, .L217
	ldr	r3, [r3]
	sub	r3, r3, #1
	ldr	r2, .L217
	str	r3, [r2]
	b	.L210
.L214:
	ldr	r3, .L217
	ldr	r2, [r3, #32]
	ldr	r3, .L217
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	sub	r3, r3, #28
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	ldr	r2, .L217
	str	r3, [r2]
	ldr	r3, .L217
	ldr	r2, [r3, #32]
	ldr	r3, .L217
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	sub	r3, r3, #28
	add	r0, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r1, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r2, r3
	bl	editor_row_append_string
	ldr	r3, .L217
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	editor_del_row
	ldr	r3, .L217
	ldr	r3, [r3, #4]
	sub	r3, r3, #1
	ldr	r2, .L217
	str	r3, [r2, #4]
	b	.L210
.L215:
	nop
	b	.L210
.L216:
	nop
.L210:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L218:
	.align	2
.L217:
	.word	E
	.size	editor_del_char, .-editor_del_char
	.align	2
	.global	editor_rows_to_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_rows_to_string, %function
editor_rows_to_string:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L220
.L221:
	ldr	r3, .L225
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	add	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L220:
	ldr	r3, .L225
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L221
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L222
.L223:
	ldr	r3, .L225
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r0, [r3, #12]
	ldr	r3, .L225
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	mov	r2, r3
	mov	r1, r0
	ldr	r0, [fp, #-12]
	bl	memcpy
	ldr	r3, .L225
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	mov	r2, #10
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L222:
	ldr	r3, .L225
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L223
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L226:
	.align	2
.L225:
	.word	E
	.size	editor_rows_to_string, .-editor_rows_to_string
	.section	.rodata
	.align	2
.LC44:
	.ascii	"r\000"
	.align	2
.LC45:
	.ascii	"fopen\000"
	.align	2
.LC46:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_open
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_open, %function
editor_open:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L235
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L235+4
	ldr	r3, [r3, #40]
	mov	r0, r3
	bl	free
	ldr	r0, [fp, #-32]
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L235+4
	str	r2, [r3, #40]
	bl	editor_select_syntax_highlight
	ldr	r1, .L235+8
	ldr	r0, [fp, #-32]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L228
	ldr	r0, .L235+12
	bl	die
.L228:
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L229
.L232:
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	str	r3, [fp, #-16]
.L230:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	ble	.L231
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #10
	beq	.L232
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #13
	beq	.L232
.L231:
	ldr	r3, .L235+4
	ldr	r3, [r3, #28]
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-16]
	mov	r0, r3
	bl	editor_insert_row
.L229:
	sub	r1, fp, #20
	sub	r3, fp, #24
	ldr	r2, [fp, #-12]
	mov	r0, r3
	bl	getline
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmn	r3, #1
	bne	.L230
	ldr	r3, [fp, #-24]
	mov	r0, r3
	bl	free
	ldr	r0, [fp, #-12]
	bl	fclose
	ldr	r3, .L235+4
	mov	r2, #0
	str	r2, [r3, #36]
	nop
	ldr	r3, .L235
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L234
	bl	__stack_chk_fail
.L234:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L236:
	.align	2
.L235:
	.word	.LC46
	.word	E
	.word	.LC44
	.word	.LC45
	.size	editor_open, .-editor_open
	.section	.rodata
	.align	2
.LC47:
	.ascii	"Save as: %s (ESC to cancel)\000"
	.align	2
.LC48:
	.ascii	"Save aborted\000"
	.align	2
.LC49:
	.ascii	"%d bytes written to disk\000"
	.align	2
.LC50:
	.ascii	"Can't save! I/O error: %s\000"
	.align	2
.LC51:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_save
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_save, %function
editor_save:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, .L245
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L245+4
	ldr	r3, [r3, #40]
	cmp	r3, #0
	bne	.L238
	mov	r1, #0
	ldr	r0, .L245+8
	bl	editor_prompt
	mov	r3, r0
	ldr	r2, .L245+4
	str	r3, [r2, #40]
	ldr	r3, .L245+4
	ldr	r3, [r3, #40]
	cmp	r3, #0
	bne	.L239
	ldr	r0, .L245+12
	bl	editor_set_status_message
	b	.L237
.L239:
	bl	editor_select_syntax_highlight
.L238:
	sub	r3, fp, #20
	mov	r0, r3
	bl	editor_rows_to_string
	str	r0, [fp, #-16]
	ldr	r3, .L245+4
	ldr	r3, [r3, #40]
	mov	r2, #420
	mov	r1, #66
	mov	r0, r3
	bl	open
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	beq	.L241
	ldr	r3, [fp, #-20]
	mov	r1, r3
	ldr	r0, [fp, #-12]
	bl	ftruncate
	mov	r3, r0
	cmn	r3, #1
	beq	.L242
	ldr	r3, [fp, #-20]
	mov	r2, r3
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	write
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bne	.L242
	ldr	r0, [fp, #-12]
	bl	close
	ldr	r0, [fp, #-16]
	bl	free
	ldr	r3, .L245+4
	mov	r2, #0
	str	r2, [r3, #36]
	ldr	r3, [fp, #-20]
	mov	r1, r3
	ldr	r0, .L245+16
	bl	editor_set_status_message
	b	.L237
.L242:
	ldr	r0, [fp, #-12]
	bl	close
.L241:
	ldr	r0, [fp, #-16]
	bl	free
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L245+20
	bl	editor_set_status_message
.L237:
	ldr	r3, .L245
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L244
	bl	__stack_chk_fail
.L244:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L246:
	.align	2
.L245:
	.word	.LC51
	.word	E
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.size	editor_save, .-editor_save
	.align	2
	.global	editor_find_callback
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_find_callback, %function
editor_find_callback:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	ldr	r3, .L263
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L248
	ldr	r3, .L263+4
	ldr	r2, [r3, #32]
	ldr	r3, .L263+8
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3, #20]
	ldr	r3, .L263
	ldr	r1, [r3]
	ldr	r3, .L263+4
	ldr	r2, [r3, #32]
	ldr	r3, .L263+8
	ldr	r3, [r3]
	mov	ip, r3
	mov	r3, ip
	lsl	r3, r3, #3
	sub	r3, r3, ip
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3, #8]
	mov	r2, r3
	bl	memcpy
	ldr	r3, .L263
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, .L263
	mov	r2, #0
	str	r2, [r3]
.L248:
	ldr	r3, [fp, #-36]
	cmp	r3, #13
	beq	.L249
	ldr	r3, [fp, #-36]
	cmp	r3, #27
	bne	.L250
.L249:
	ldr	r3, .L263+12
	mvn	r2, #0
	str	r2, [r3]
	ldr	r3, .L263+16
	mov	r2, #1
	str	r2, [r3]
	b	.L247
.L250:
	ldr	r3, [fp, #-36]
	ldr	r2, .L263+20
	cmp	r3, r2
	beq	.L252
	ldr	r3, [fp, #-36]
	ldr	r2, .L263+24
	cmp	r3, r2
	bne	.L253
.L252:
	ldr	r3, .L263+16
	mov	r2, #1
	str	r2, [r3]
	b	.L254
.L253:
	ldr	r3, [fp, #-36]
	cmp	r3, #1000
	beq	.L255
	ldr	r3, [fp, #-36]
	ldr	r2, .L263+28
	cmp	r3, r2
	bne	.L256
.L255:
	ldr	r3, .L263+16
	mvn	r2, #0
	str	r2, [r3]
	b	.L254
.L256:
	ldr	r3, .L263+12
	mvn	r2, #0
	str	r2, [r3]
	ldr	r3, .L263+16
	mov	r2, #1
	str	r2, [r3]
.L254:
	ldr	r3, .L263+12
	ldr	r3, [r3]
	cmn	r3, #1
	bne	.L257
	ldr	r3, .L263+16
	mov	r2, #1
	str	r2, [r3]
.L257:
	ldr	r3, .L263+12
	ldr	r3, [r3]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L258
.L262:
	ldr	r3, .L263+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmn	r3, #1
	bne	.L259
	ldr	r3, .L263+4
	ldr	r3, [r3, #28]
	sub	r3, r3, #1
	str	r3, [fp, #-28]
	b	.L260
.L259:
	ldr	r3, .L263+4
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bne	.L260
	mov	r3, #0
	str	r3, [fp, #-28]
.L260:
	ldr	r3, .L263+4
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #16]
	ldr	r1, [fp, #-32]
	mov	r0, r3
	bl	strstr
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L261
	ldr	r2, .L263+12
	ldr	r3, [fp, #-28]
	str	r3, [r2]
	ldr	r2, .L263+4
	ldr	r3, [fp, #-28]
	str	r3, [r2, #4]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-16]
	sub	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-20]
	bl	editor_row_rx_to_cx
	mov	r3, r0
	ldr	r2, .L263+4
	str	r3, [r2]
	ldr	r3, .L263+4
	ldr	r3, [r3, #28]
	ldr	r2, .L263+4
	str	r3, [r2, #12]
	ldr	r2, .L263+8
	ldr	r3, [fp, #-28]
	str	r3, [r2]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L263
	str	r2, [r3]
	ldr	r3, .L263
	ldr	r0, [r3]
	ldr	r3, [fp, #-20]
	ldr	r1, [r3, #20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #8]
	mov	r2, r3
	bl	memcpy
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-20]
	ldr	r2, [r2, #16]
	ldr	r1, [fp, #-16]
	sub	r2, r1, r2
	add	r4, r3, r2
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	mov	r1, #7
	mov	r0, r4
	bl	memset
	b	.L247
.L261:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L258:
	ldr	r3, .L263+4
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L262
.L247:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L264:
	.align	2
.L263:
	.word	saved_hl.6996
	.word	E
	.word	saved_hl_line.6995
	.word	last_match.6993
	.word	direction.6994
	.word	1001
	.word	1003
	.word	1002
	.size	editor_find_callback, .-editor_find_callback
	.section	.rodata
	.align	2
.LC52:
	.ascii	"Search %s (Use ESC/Arrows/Enter)\000"
	.text
	.align	2
	.global	editor_find
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_find, %function
editor_find:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r3, .L269
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	ldr	r3, .L269
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
	ldr	r3, .L269
	ldr	r3, [r3, #16]
	str	r3, [fp, #-16]
	ldr	r3, .L269
	ldr	r3, [r3, #12]
	str	r3, [fp, #-12]
	ldr	r1, .L269+4
	ldr	r0, .L269+8
	bl	editor_prompt
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L266
	ldr	r0, [fp, #-8]
	bl	free
	b	.L268
.L266:
	ldr	r2, .L269
	ldr	r3, [fp, #-24]
	str	r3, [r2]
	ldr	r2, .L269
	ldr	r3, [fp, #-20]
	str	r3, [r2, #4]
	ldr	r2, .L269
	ldr	r3, [fp, #-16]
	str	r3, [r2, #16]
	ldr	r2, .L269
	ldr	r3, [fp, #-12]
	str	r3, [r2, #12]
.L268:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L270:
	.align	2
.L269:
	.word	E
	.word	editor_find_callback
	.word	.LC52
	.size	editor_find, .-editor_find
	.align	2
	.global	ab_append
	.syntax unified
	.arm
	.fpu softvfp
	.type	ab_append, %function
ab_append:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	mov	r1, r3
	bl	realloc
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L274
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r3, r2
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	memcpy
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	add	r2, r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	b	.L271
.L274:
	nop
.L271:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	ab_append, .-ab_append
	.align	2
	.global	ab_free
	.syntax unified
	.arm
	.fpu softvfp
	.type	ab_free, %function
ab_free:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	ab_free, .-ab_free
	.align	2
	.global	editor_scroll
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_scroll, %function
editor_scroll:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L283
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, .L283
	ldr	r2, [r3, #4]
	ldr	r3, .L283
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bge	.L277
	ldr	r3, .L283
	ldr	r2, [r3, #32]
	ldr	r3, .L283
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, .L283
	ldr	r2, [r2]
	mov	r1, r2
	mov	r0, r3
	bl	editor_row_cx_to_rx
	mov	r3, r0
	ldr	r2, .L283
	str	r3, [r2, #8]
.L277:
	ldr	r3, .L283
	ldr	r2, [r3, #4]
	ldr	r3, .L283
	ldr	r3, [r3, #12]
	cmp	r2, r3
	bge	.L278
	ldr	r3, .L283
	ldr	r3, [r3, #4]
	ldr	r2, .L283
	str	r3, [r2, #12]
.L278:
	ldr	r3, .L283
	ldr	r2, [r3, #4]
	ldr	r3, .L283
	ldr	r1, [r3, #12]
	ldr	r3, .L283
	ldr	r3, [r3, #20]
	add	r3, r1, r3
	cmp	r2, r3
	blt	.L279
	ldr	r3, .L283
	ldr	r2, [r3, #4]
	ldr	r3, .L283
	ldr	r3, [r3, #20]
	sub	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, .L283
	str	r3, [r2, #12]
.L279:
	ldr	r3, .L283
	ldr	r2, [r3, #8]
	ldr	r3, .L283
	ldr	r3, [r3, #16]
	cmp	r2, r3
	bge	.L280
	ldr	r3, .L283
	ldr	r3, [r3, #8]
	ldr	r2, .L283
	str	r3, [r2, #16]
.L280:
	ldr	r3, .L283
	ldr	r2, [r3, #8]
	ldr	r3, .L283
	ldr	r1, [r3, #16]
	ldr	r3, .L283
	ldr	r3, [r3, #24]
	add	r3, r1, r3
	cmp	r2, r3
	blt	.L282
	ldr	r3, .L283
	ldr	r2, [r3, #8]
	ldr	r3, .L283
	ldr	r3, [r3, #24]
	sub	r3, r2, r3
	add	r3, r3, #1
	ldr	r2, .L283
	str	r3, [r2, #16]
.L282:
	nop
	pop	{fp, pc}
.L284:
	.align	2
.L283:
	.word	E
	.size	editor_scroll, .-editor_scroll
	.section	.rodata
	.align	2
.LC53:
	.ascii	"0.0.1\000"
	.align	2
.LC54:
	.ascii	"Kilo editor -- version %s\000"
	.align	2
.LC55:
	.ascii	"~\000"
	.align	2
.LC56:
	.ascii	" \000"
	.align	2
.LC57:
	.ascii	"\033[7m\000"
	.align	2
.LC58:
	.ascii	"\033[m\000"
	.align	2
.LC59:
	.ascii	"\033[%dm\000"
	.align	2
.LC60:
	.ascii	"\033[39m\000"
	.align	2
.LC61:
	.ascii	"\033[K\000"
	.align	2
.LC62:
	.ascii	"\015\012\000"
	.align	2
.LC63:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_draw_rows
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_draw_rows, %function
editor_draw_rows:
	@ args = 0, pretend = 0, frame = 144
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #144
	str	r0, [fp, #-144]
	ldr	r3, .L309
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-136]
	b	.L286
.L307:
	ldr	r3, .L309+4
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-136]
	add	r3, r2, r3
	str	r3, [fp, #-112]
	ldr	r3, .L309+4
	ldr	r3, [r3, #28]
	ldr	r2, [fp, #-112]
	cmp	r2, r3
	blt	.L287
	ldr	r3, .L309+4
	ldr	r3, [r3, #28]
	cmp	r3, #0
	bne	.L288
	ldr	r3, .L309+4
	ldr	r3, [r3, #20]
	ldr	r2, .L309+8
	smull	r1, r2, r3, r2
	asr	r3, r3, #31
	sub	r3, r2, r3
	ldr	r2, [fp, #-136]
	cmp	r2, r3
	bne	.L288
	sub	r0, fp, #88
	ldr	r3, .L309+12
	ldr	r2, .L309+16
	mov	r1, #80
	bl	snprintf
	str	r0, [fp, #-132]
	ldr	r3, .L309+4
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-132]
	cmp	r2, r3
	ble	.L289
	ldr	r3, .L309+4
	ldr	r3, [r3, #24]
	str	r3, [fp, #-132]
.L289:
	ldr	r3, .L309+4
	ldr	r2, [r3, #24]
	ldr	r3, [fp, #-132]
	sub	r3, r2, r3
	lsr	r2, r3, #31
	add	r3, r2, r3
	asr	r3, r3, #1
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-128]
	cmp	r3, #0
	beq	.L291
	mov	r2, #1
	ldr	r1, .L309+20
	ldr	r0, [fp, #-144]
	bl	ab_append
	ldr	r3, [fp, #-128]
	sub	r3, r3, #1
	str	r3, [fp, #-128]
	b	.L291
.L292:
	mov	r2, #1
	ldr	r1, .L309+24
	ldr	r0, [fp, #-144]
	bl	ab_append
.L291:
	ldr	r3, [fp, #-128]
	sub	r2, r3, #1
	str	r2, [fp, #-128]
	cmp	r3, #0
	bne	.L292
	sub	r3, fp, #88
	ldr	r2, [fp, #-132]
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	ab_append
	b	.L294
.L288:
	mov	r2, #1
	ldr	r1, .L309+20
	ldr	r0, [fp, #-144]
	bl	ab_append
	b	.L294
.L287:
	ldr	r3, .L309+4
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-112]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r3, #8]
	ldr	r3, .L309+4
	ldr	r3, [r3, #16]
	sub	r3, r2, r3
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-124]
	cmp	r3, #0
	bge	.L295
	mov	r3, #0
	str	r3, [fp, #-124]
.L295:
	ldr	r3, .L309+4
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-124]
	cmp	r2, r3
	ble	.L296
	ldr	r3, .L309+4
	ldr	r3, [r3, #24]
	str	r3, [fp, #-124]
.L296:
	ldr	r3, .L309+4
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-112]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #16]
	ldr	r2, .L309+4
	ldr	r2, [r2, #16]
	add	r3, r3, r2
	str	r3, [fp, #-108]
	ldr	r3, .L309+4
	ldr	r1, [r3, #32]
	ldr	r2, [fp, #-112]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #20]
	ldr	r2, .L309+4
	ldr	r2, [r2, #16]
	add	r3, r3, r2
	str	r3, [fp, #-104]
	mvn	r3, #0
	str	r3, [fp, #-120]
	mov	r3, #0
	str	r3, [fp, #-116]
	b	.L297
.L306:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	ldr	r1, [fp, #-108]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L298
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-108]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #25
	bhi	.L299
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-108]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r3, #64
	and	r3, r3, #255
	b	.L300
.L299:
	mov	r3, #63
.L300:
	strb	r3, [fp, #-137]
	mov	r2, #4
	ldr	r1, .L309+28
	ldr	r0, [fp, #-144]
	bl	ab_append
	sub	r3, fp, #137
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	ab_append
	mov	r2, #3
	ldr	r1, .L309+32
	ldr	r0, [fp, #-144]
	bl	ab_append
	ldr	r3, [fp, #-120]
	cmn	r3, #1
	beq	.L302
	sub	r0, fp, #88
	ldr	r3, [fp, #-120]
	ldr	r2, .L309+36
	mov	r1, #16
	bl	snprintf
	str	r0, [fp, #-92]
	sub	r3, fp, #88
	ldr	r2, [fp, #-92]
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	ab_append
	b	.L302
.L298:
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-104]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L303
	ldr	r3, [fp, #-120]
	cmn	r3, #1
	beq	.L304
	mov	r2, #5
	ldr	r1, .L309+40
	ldr	r0, [fp, #-144]
	bl	ab_append
	mvn	r3, #0
	str	r3, [fp, #-120]
.L304:
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-108]
	add	r3, r2, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	ab_append
	b	.L302
.L303:
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-104]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	editor_syntax_to_color
	str	r0, [fp, #-100]
	ldr	r2, [fp, #-100]
	ldr	r3, [fp, #-120]
	cmp	r2, r3
	beq	.L305
	ldr	r3, [fp, #-100]
	str	r3, [fp, #-120]
	sub	r0, fp, #88
	ldr	r3, [fp, #-100]
	ldr	r2, .L309+36
	mov	r1, #16
	bl	snprintf
	str	r0, [fp, #-96]
	sub	r3, fp, #88
	ldr	r2, [fp, #-96]
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	ab_append
.L305:
	ldr	r3, [fp, #-116]
	ldr	r2, [fp, #-108]
	add	r3, r2, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	ab_append
.L302:
	ldr	r3, [fp, #-116]
	add	r3, r3, #1
	str	r3, [fp, #-116]
.L297:
	ldr	r2, [fp, #-116]
	ldr	r3, [fp, #-124]
	cmp	r2, r3
	blt	.L306
	mov	r2, #5
	ldr	r1, .L309+40
	ldr	r0, [fp, #-144]
	bl	ab_append
.L294:
	mov	r2, #3
	ldr	r1, .L309+44
	ldr	r0, [fp, #-144]
	bl	ab_append
	mov	r2, #2
	ldr	r1, .L309+48
	ldr	r0, [fp, #-144]
	bl	ab_append
	ldr	r3, [fp, #-136]
	add	r3, r3, #1
	str	r3, [fp, #-136]
.L286:
	ldr	r3, .L309+4
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-136]
	cmp	r2, r3
	blt	.L307
	nop
	ldr	r3, .L309
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L308
	bl	__stack_chk_fail
.L308:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L310:
	.align	2
.L309:
	.word	.LC63
	.word	E
	.word	1431655766
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.size	editor_draw_rows, .-editor_draw_rows
	.section	.rodata
	.align	2
.LC64:
	.ascii	"[No Name]\000"
	.align	2
.LC65:
	.ascii	"(modified)\000"
	.align	2
.LC66:
	.ascii	"%.20s - %d lines %s\000"
	.align	2
.LC67:
	.ascii	"no ft\000"
	.align	2
.LC68:
	.ascii	"%s %d/%d\000"
	.align	2
.LC69:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_draw_status_bar
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_draw_status_bar, %function
editor_draw_status_bar:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #192
	str	r0, [fp, #-184]
	ldr	r3, .L324
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r2, #4
	ldr	r1, .L324+4
	ldr	r0, [fp, #-184]
	bl	ab_append
	ldr	r3, .L324+8
	ldr	r3, [r3, #40]
	cmp	r3, #0
	beq	.L312
	ldr	r3, .L324+8
	ldr	r3, [r3, #40]
	b	.L313
.L312:
	ldr	r3, .L324+12
.L313:
	ldr	r2, .L324+8
	ldr	r2, [r2, #28]
	ldr	r1, .L324+8
	ldr	r1, [r1, #36]
	cmp	r1, #0
	beq	.L314
	ldr	r1, .L324+16
	b	.L315
.L314:
	ldr	r1, .L324+20
.L315:
	sub	r0, fp, #168
	str	r1, [sp, #4]
	str	r2, [sp]
	ldr	r2, .L324+24
	mov	r1, #80
	bl	snprintf
	str	r0, [fp, #-176]
	ldr	r3, .L324+8
	ldr	r3, [r3, #128]
	cmp	r3, #0
	beq	.L316
	ldr	r3, .L324+8
	ldr	r3, [r3, #128]
	ldr	r3, [r3]
	b	.L317
.L316:
	ldr	r3, .L324+28
.L317:
	ldr	r2, .L324+8
	ldr	r2, [r2, #4]
	add	r2, r2, #1
	ldr	r1, .L324+8
	ldr	r1, [r1, #28]
	sub	r0, fp, #88
	str	r1, [sp, #4]
	str	r2, [sp]
	ldr	r2, .L324+32
	mov	r1, #80
	bl	snprintf
	str	r0, [fp, #-172]
	ldr	r3, .L324+8
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-176]
	cmp	r2, r3
	ble	.L318
	ldr	r3, .L324+8
	ldr	r3, [r3, #24]
	str	r3, [fp, #-176]
.L318:
	sub	r3, fp, #168
	ldr	r2, [fp, #-176]
	mov	r1, r3
	ldr	r0, [fp, #-184]
	bl	ab_append
	b	.L319
.L322:
	ldr	r3, .L324+8
	ldr	r2, [r3, #24]
	ldr	r3, [fp, #-176]
	sub	r3, r2, r3
	ldr	r2, [fp, #-172]
	cmp	r2, r3
	bne	.L320
	sub	r3, fp, #88
	ldr	r2, [fp, #-172]
	mov	r1, r3
	ldr	r0, [fp, #-184]
	bl	ab_append
	b	.L321
.L320:
	mov	r2, #1
	ldr	r1, .L324+36
	ldr	r0, [fp, #-184]
	bl	ab_append
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L319:
	ldr	r3, .L324+8
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-176]
	cmp	r2, r3
	blt	.L322
.L321:
	mov	r2, #3
	ldr	r1, .L324+40
	ldr	r0, [fp, #-184]
	bl	ab_append
	mov	r2, #2
	ldr	r1, .L324+44
	ldr	r0, [fp, #-184]
	bl	ab_append
	nop
	ldr	r3, .L324
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L323
	bl	__stack_chk_fail
.L323:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L325:
	.align	2
.L324:
	.word	.LC69
	.word	.LC57
	.word	E
	.word	.LC64
	.word	.LC65
	.word	.LC43
	.word	.LC66
	.word	.LC67
	.word	.LC68
	.word	.LC56
	.word	.LC58
	.word	.LC62
	.size	editor_draw_status_bar, .-editor_draw_status_bar
	.align	2
	.global	editor_draw_message_bar
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_draw_message_bar, %function
editor_draw_message_bar:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r2, #3
	ldr	r1, .L330
	ldr	r0, [fp, #-16]
	bl	ab_append
	ldr	r0, .L330+4
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, .L330+8
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	ble	.L327
	ldr	r3, .L330+8
	ldr	r3, [r3, #24]
	str	r3, [fp, #-8]
.L327:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L329
	mov	r0, #0
	bl	time
	mov	r2, r0
	ldr	r3, .L330+8
	ldr	r3, [r3, #124]
	sub	r3, r2, r3
	cmp	r3, #4
	bgt	.L329
	ldr	r2, [fp, #-8]
	ldr	r1, .L330+4
	ldr	r0, [fp, #-16]
	bl	ab_append
.L329:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L331:
	.align	2
.L330:
	.word	.LC61
	.word	E+44
	.word	E
	.size	editor_draw_message_bar, .-editor_draw_message_bar
	.section	.rodata
	.align	2
.LC70:
	.ascii	"\033[?25l\000"
	.align	2
.LC71:
	.ascii	"\033[%d;%dH\000"
	.align	2
.LC72:
	.ascii	"\033[?25h\000"
	.align	2
.LC73:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_refresh_screen
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_refresh_screen, %function
editor_refresh_screen:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	ldr	r3, .L334
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	editor_scroll
	mov	r3, #0
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-44]
	sub	r3, fp, #48
	mov	r2, #6
	ldr	r1, .L334+4
	mov	r0, r3
	bl	ab_append
	sub	r3, fp, #48
	mov	r2, #3
	ldr	r1, .L334+8
	mov	r0, r3
	bl	ab_append
	sub	r3, fp, #48
	mov	r0, r3
	bl	editor_draw_rows
	sub	r3, fp, #48
	mov	r0, r3
	bl	editor_draw_status_bar
	sub	r3, fp, #48
	mov	r0, r3
	bl	editor_draw_message_bar
	ldr	r3, .L334+12
	ldr	r2, [r3, #4]
	ldr	r3, .L334+12
	ldr	r3, [r3, #12]
	sub	r3, r2, r3
	add	r1, r3, #1
	ldr	r3, .L334+12
	ldr	r2, [r3, #8]
	ldr	r3, .L334+12
	ldr	r3, [r3, #16]
	sub	r3, r2, r3
	add	r3, r3, #1
	sub	r0, fp, #40
	str	r3, [sp]
	mov	r3, r1
	ldr	r2, .L334+16
	mov	r1, #32
	bl	snprintf
	sub	r3, fp, #40
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	sub	r1, fp, #40
	sub	r3, fp, #48
	mov	r0, r3
	bl	ab_append
	sub	r3, fp, #48
	mov	r2, #6
	ldr	r1, .L334+20
	mov	r0, r3
	bl	ab_append
	ldr	r3, [fp, #-48]
	ldr	r2, [fp, #-44]
	mov	r1, r3
	mov	r0, #1
	bl	write
	sub	r3, fp, #48
	mov	r0, r3
	bl	ab_free
	nop
	ldr	r3, .L334
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L333
	bl	__stack_chk_fail
.L333:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L335:
	.align	2
.L334:
	.word	.LC73
	.word	.LC70
	.word	.LC31
	.word	E
	.word	.LC71
	.word	.LC72
	.size	editor_refresh_screen, .-editor_refresh_screen
	.section	.rodata
	.align	2
.LC74:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	editor_set_status_message
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_set_status_message, %function
editor_set_status_message:
	@ args = 4, pretend = 16, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, [fp, #4]
	str	r3, [fp, #-16]
	ldr	r3, .L338
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-16]
	mov	r1, #80
	ldr	r0, .L338+4
	bl	vsnprintf
	mov	r0, #0
	bl	time
	mov	r3, r0
	ldr	r2, .L338+8
	str	r3, [r2, #124]
	nop
	ldr	r3, .L338
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L337
	bl	__stack_chk_fail
.L337:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L339:
	.align	2
.L338:
	.word	.LC74
	.word	E+44
	.word	E
	.size	editor_set_status_message, .-editor_set_status_message
	.align	2
	.global	editor_prompt
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_prompt, %function
editor_prompt:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	mov	r3, #128
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3]
.L352:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-24]
	bl	editor_set_status_message
	bl	editor_refresh_screen
	bl	editor_read_key
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1004
	beq	.L341
	ldr	r3, [fp, #-8]
	cmp	r3, #8
	beq	.L341
	ldr	r3, [fp, #-8]
	cmp	r3, #127
	bne	.L342
.L341:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L344
	ldr	r3, [fp, #-12]
	sub	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	b	.L344
.L342:
	ldr	r3, [fp, #-8]
	cmp	r3, #27
	bne	.L345
	ldr	r0, .L353
	bl	editor_set_status_message
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L346
	ldr	r3, [fp, #-28]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	blx	r3
.L346:
	ldr	r0, [fp, #-16]
	bl	free
	mov	r3, #0
	b	.L347
.L345:
	ldr	r3, [fp, #-8]
	cmp	r3, #13
	bne	.L348
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L344
	ldr	r0, .L353
	bl	editor_set_status_message
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L349
	ldr	r3, [fp, #-28]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	blx	r3
.L349:
	ldr	r3, [fp, #-16]
	b	.L347
.L348:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2
	cmp	r3, #0
	bne	.L344
	ldr	r3, [fp, #-8]
	cmp	r3, #127
	bgt	.L344
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bne	.L350
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	realloc
	str	r0, [fp, #-16]
.L350:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
.L344:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L352
	ldr	r3, [fp, #-28]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	blx	r3
	b	.L352
.L347:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L354:
	.align	2
.L353:
	.word	.LC43
	.size	editor_prompt, .-editor_prompt
	.align	2
	.global	editor_move_cursor
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_move_cursor, %function
editor_move_cursor:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	ldr	r3, .L381
	ldr	r2, [r3, #4]
	ldr	r3, .L381
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bge	.L356
	ldr	r3, .L381
	ldr	r2, [r3, #32]
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	b	.L357
.L356:
	mov	r3, #0
.L357:
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	cmp	r3, #1004
	bge	.L358
	ldr	r3, [fp, #-16]
	cmp	r3, #1000
	bge	.L359
	ldr	r3, [fp, #-16]
	cmp	r3, #16
	beq	.L360
	ldr	r3, [fp, #-16]
	cmp	r3, #16
	bgt	.L358
	ldr	r3, [fp, #-16]
	cmp	r3, #2
	beq	.L361
	ldr	r3, [fp, #-16]
	cmp	r3, #14
	beq	.L362
	b	.L358
.L359:
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1000
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L358
.L363:
	.word	.L361
	.word	.L364
	.word	.L360
	.word	.L362
.L361:
	ldr	r3, .L381
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L365
	ldr	r3, .L381
	ldr	r3, [r3]
	sub	r3, r3, #1
	ldr	r2, .L381
	str	r3, [r2]
	b	.L376
.L365:
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	cmp	r3, #0
	ble	.L376
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	sub	r3, r3, #1
	ldr	r2, .L381
	str	r3, [r2, #4]
	ldr	r3, .L381
	ldr	r2, [r3, #32]
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	ldr	r2, .L381
	str	r3, [r2]
	b	.L376
.L364:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L367
	ldr	r3, .L381
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bge	.L367
	ldr	r3, .L381
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L381
	str	r3, [r2]
	b	.L377
.L367:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L377
	ldr	r3, .L381
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	bne	.L377
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	add	r3, r3, #1
	ldr	r2, .L381
	str	r3, [r2, #4]
	ldr	r3, .L381
	mov	r2, #0
	str	r2, [r3]
	b	.L377
.L360:
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L378
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	sub	r3, r3, #1
	ldr	r2, .L381
	str	r3, [r2, #4]
	b	.L378
.L362:
	ldr	r3, .L381
	ldr	r2, [r3, #4]
	ldr	r3, .L381
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bge	.L379
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	add	r3, r3, #1
	ldr	r2, .L381
	str	r3, [r2, #4]
	b	.L379
.L376:
	nop
	b	.L358
.L377:
	nop
	b	.L358
.L378:
	nop
	b	.L358
.L379:
	nop
.L358:
	ldr	r3, .L381
	ldr	r2, [r3, #4]
	ldr	r3, .L381
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bge	.L371
	ldr	r3, .L381
	ldr	r2, [r3, #32]
	ldr	r3, .L381
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	b	.L372
.L371:
	mov	r3, #0
.L372:
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L373
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	b	.L374
.L373:
	mov	r3, #0
.L374:
	str	r3, [fp, #-8]
	ldr	r3, .L381
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	bge	.L380
	ldr	r2, .L381
	ldr	r3, [fp, #-8]
	str	r3, [r2]
.L380:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L382:
	.align	2
.L381:
	.word	E
	.size	editor_move_cursor, .-editor_move_cursor
	.section	.rodata
	.align	2
.LC75:
	.ascii	"WARNING!!! File has unsaved changes. Press Ctrl-Q %"
	.ascii	"d more times to quit.\000"
	.text
	.align	2
	.global	editor_process_keypress
	.syntax unified
	.arm
	.fpu softvfp
	.type	editor_process_keypress, %function
editor_process_keypress:
	@ 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	editor_read_key
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1008
	bgt	.L384
	ldr	r3, [fp, #-8]
	cmp	r3, #1000
	bge	.L385
	ldr	r3, [fp, #-8]
	cmp	r3, #27
	bgt	.L386
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bgt	.L387
	b	.L384
.L385:
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1000
	cmp	r3, #8
	ldrls	pc, [pc, r3, asl #2]
	b	.L384
.L389:
	.word	.L393
	.word	.L393
	.word	.L393
	.word	.L393
	.word	.L392
	.word	.L391
	.word	.L390
	.word	.L388
	.word	.L388
.L387:
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	cmp	r3, #26
	ldrls	pc, [pc, r3, asl #2]
	b	.L384
.L395:
	.word	.L391
	.word	.L393
	.word	.L384
	.word	.L384
	.word	.L390
	.word	.L399
	.word	.L384
	.word	.L392
	.word	.L384
	.word	.L384
	.word	.L384
	.word	.L411
	.word	.L398
	.word	.L393
	.word	.L384
	.word	.L393
	.word	.L397
	.word	.L384
	.word	.L396
	.word	.L384
	.word	.L384
	.word	.L384
	.word	.L384
	.word	.L384
	.word	.L384
	.word	.L384
	.word	.L411
.L386:
	ldr	r3, [fp, #-8]
	cmp	r3, #127
	beq	.L392
	b	.L384
.L398:
	bl	editor_insert_newline
	b	.L400
.L397:
	ldr	r3, .L413
	ldr	r3, [r3, #36]
	cmp	r3, #0
	beq	.L401
	ldr	r3, .L413+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L401
	ldr	r3, .L413+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L413+8
	bl	editor_set_status_message
	ldr	r3, .L413+4
	ldr	r3, [r3]
	sub	r3, r3, #1
	ldr	r2, .L413+4
	str	r3, [r2]
	b	.L383
.L401:
	mov	r2, #4
	ldr	r1, .L413+12
	mov	r0, #1
	bl	write
	mov	r2, #3
	ldr	r1, .L413+16
	mov	r0, #1
	bl	write
	mov	r0, #0
	bl	exit
.L396:
	bl	editor_save
	b	.L400
.L391:
	ldr	r3, .L413
	mov	r2, #0
	str	r2, [r3]
	b	.L400
.L390:
	ldr	r3, .L413
	ldr	r2, [r3, #4]
	ldr	r3, .L413
	ldr	r3, [r3, #28]
	cmp	r2, r3
	bge	.L412
	ldr	r3, .L413
	ldr	r2, [r3, #32]
	ldr	r3, .L413
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	ldr	r2, .L413
	str	r3, [r2]
	b	.L412
.L399:
	bl	editor_find
	b	.L400
.L392:
	ldr	r3, [fp, #-8]
	cmp	r3, #1004
	bne	.L404
	ldr	r0, .L413+20
	bl	editor_move_cursor
.L404:
	bl	editor_del_char
	b	.L400
.L388:
	ldr	r3, [fp, #-8]
	ldr	r2, .L413+24
	cmp	r3, r2
	bne	.L405
	ldr	r3, .L413
	ldr	r3, [r3, #12]
	ldr	r2, .L413
	str	r3, [r2, #4]
	b	.L406
.L405:
	ldr	r3, [fp, #-8]
	cmp	r3, #1008
	bne	.L406
	ldr	r3, .L413
	ldr	r2, [r3, #12]
	ldr	r3, .L413
	ldr	r3, [r3, #20]
	add	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, .L413
	str	r3, [r2, #4]
	ldr	r3, .L413
	ldr	r2, [r3, #4]
	ldr	r3, .L413
	ldr	r3, [r3, #28]
	cmp	r2, r3
	ble	.L406
	ldr	r3, .L413
	ldr	r3, [r3, #28]
	ldr	r2, .L413
	str	r3, [r2, #4]
.L406:
	ldr	r3, .L413
	ldr	r3, [r3, #20]
	str	r3, [fp, #-12]
	b	.L407
.L410:
	ldr	r3, [fp, #-8]
	ldr	r2, .L413+24
	cmp	r3, r2
	bne	.L408
	ldr	r3, .L413+28
	b	.L409
.L408:
	ldr	r3, .L413+32
.L409:
	mov	r0, r3
	bl	editor_move_cursor
.L407:
	ldr	r3, [fp, #-12]
	sub	r2, r3, #1
	str	r2, [fp, #-12]
	cmp	r3, #0
	bne	.L410
	b	.L400
.L393:
	ldr	r0, [fp, #-8]
	bl	editor_move_cursor
	b	.L400
.L384:
	ldr	r0, [fp, #-8]
	bl	editor_insert_char
	b	.L400
.L411:
	nop
	b	.L400
.L412:
	nop
.L400:
	ldr	r3, .L413+4
	mov	r2, #3
	str	r2, [r3]
.L383:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L414:
	.align	2
.L413:
	.word	E
	.word	quit_times.7101
	.word	.LC75
	.word	.LC30
	.word	.LC31
	.word	1001
	.word	1007
	.word	1002
	.word	1003
	.size	editor_process_keypress, .-editor_process_keypress
	.section	.rodata
	.align	2
.LC76:
	.ascii	"get_window_size\000"
	.text
	.align	2
	.global	init_editor
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_editor, %function
init_editor:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #12]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #16]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #28]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #32]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #36]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #40]
	ldr	r3, .L417
	mov	r2, #0
	strb	r2, [r3, #44]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #124]
	ldr	r3, .L417
	mov	r2, #0
	str	r2, [r3, #128]
	ldr	r1, .L417+4
	ldr	r0, .L417+8
	bl	get_window_size
	mov	r3, r0
	cmn	r3, #1
	bne	.L416
	ldr	r0, .L417+12
	bl	die
.L416:
	ldr	r3, .L417
	ldr	r3, [r3, #20]
	sub	r3, r3, #2
	ldr	r2, .L417
	str	r3, [r2, #20]
	nop
	pop	{fp, pc}
.L418:
	.align	2
.L417:
	.word	E
	.word	E+24
	.word	E+20
	.word	.LC76
	.size	init_editor, .-init_editor
	.section	.rodata
	.align	2
.LC77:
	.ascii	"HELP: Ctrl-S = save | Ctrl-Q = quit | Ctrl-F = find"
	.ascii	"\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	bl	enable_raw_mode
	bl	init_editor
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	ble	.L420
	ldr	r3, [fp, #-12]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r0, r3
	bl	editor_open
.L420:
	ldr	r0, .L422
	bl	editor_set_status_message
.L421:
	bl	editor_refresh_screen
	bl	editor_process_keypress
	b	.L421
.L423:
	.align	2
.L422:
	.word	.LC77
	.size	main, .-main
	.local	saved_hl.6996
	.comm	saved_hl.6996,4,4
	.local	saved_hl_line.6995
	.comm	saved_hl_line.6995,4,4
	.data
	.align	2
	.type	last_match.6993, %object
	.size	last_match.6993, 4
last_match.6993:
	.word	-1
	.align	2
	.type	direction.6994, %object
	.size	direction.6994, 4
direction.6994:
	.word	1
	.align	2
	.type	quit_times.7101, %object
	.size	quit_times.7101, 4
quit_times.7101:
	.word	3
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
