	.file	"637633.c"
	.intel_syntax noprefix
	.text
	.globl	swap
	.type	swap, @function
swap:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR [rax], edx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	swap, .-swap
	.section	.rodata
	.align 8
.LC0:
	.string	"getByIndex: index is out of bound!"
	.text
	.globl	getByIndex
	.type	getByIndex, @function
getByIndex:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	test	eax, eax
	jne	.L3
	mov	eax, 0
	jmp	.L4
.L3:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L5
	lea	rdi, .LC0[rip]
	call	puts@PLT
	mov	rax, -1
	jmp	.L4
.L5:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
.L4:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	getByIndex, .-getByIndex
	.section	.rodata
.LC1:
	.string	"index must larger than 0"
	.align 8
.LC2:
	.string	"setByIndex: index is out of bound"
	.text
	.globl	setByIndex
	.type	setByIndex, @function
setByIndex:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	DWORD PTR -20[rbp], edx
	cmp	QWORD PTR -8[rbp], 0
	je	.L11
	cmp	DWORD PTR -20[rbp], 0
	jns	.L9
	lea	rdi, .LC1[rip]
	call	puts@PLT
	jmp	.L6
.L9:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L10
	lea	rdi, .LC2[rip]
	call	puts@PLT
	jmp	.L6
.L10:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rdx], rax
	jmp	.L6
.L11:
	nop
.L6:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	setByIndex, .-setByIndex
	.globl	getLast
	.type	getLast, @function
getLast:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L13
	mov	eax, 0
	jmp	.L14
.L13:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	sub	eax, 1
	imul	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
.L14:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	getLast, .-getLast
	.section	.rodata
.LC3:
	.string	"%d,"
	.text
	.globl	partition
	.type	partition, @function
partition:
.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	DWORD PTR -76[rbp], esi
	mov	DWORD PTR -80[rbp], edx
	mov	edx, DWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -76[rbp]
	sub	eax, 1
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -76[rbp]
	mov	DWORD PTR -48[rbp], eax
	jmp	.L16
.L18:
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jg	.L17
	add	DWORD PTR -52[rbp], 1
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	swap
.L17:
	add	DWORD PTR -48[rbp], 1
.L16:
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -80[rbp]
	jl	.L18
	mov	eax, DWORD PTR -52[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	swap
	mov	DWORD PTR -44[rbp], 0
	jmp	.L19
.L20:
	mov	edx, DWORD PTR -44[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -44[rbp], 1
.L19:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -44[rbp], eax
	jl	.L20
	mov	edi, 10
	call	putchar@PLT
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	partition, .-partition
	.globl	quicksort
	.type	quicksort, @function
quicksort:
.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	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -32[rbp], edx
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -32[rbp]
	jge	.L24
	mov	edx, DWORD PTR -32[rbp]
	mov	ecx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	partition
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	lea	edx, -1[rax]
	mov	ecx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	quicksort
	mov	eax, DWORD PTR -4[rbp]
	lea	ecx, 1[rax]
	mov	edx, DWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	quicksort
.L24:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	quicksort, .-quicksort
	.globl	partitionEx
	.type	partitionEx, @function
partitionEx:
.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, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	DWORD PTR -76[rbp], esi
	mov	DWORD PTR -80[rbp], edx
	mov	edx, DWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -48[rbp], rax
	mov	eax, DWORD PTR -76[rbp]
	sub	eax, 1
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -76[rbp]
	mov	DWORD PTR -52[rbp], eax
	jmp	.L26
.L28:
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jg	.L27
	add	DWORD PTR -56[rbp], 1
	mov	edx, DWORD PTR -56[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	edx, DWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	setByIndex
	mov	edx, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	setByIndex
	mov	QWORD PTR -8[rbp], 0
.L27:
	add	DWORD PTR -52[rbp], 1
.L26:
	mov	eax, DWORD PTR -52[rbp]
	cmp	eax, DWORD PTR -80[rbp]
	jl	.L28
	mov	eax, DWORD PTR -56[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, DWORD PTR -56[rbp]
	lea	edx, 1[rax]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	setByIndex
	mov	edx, DWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	setByIndex
	mov	QWORD PTR -32[rbp], 0
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	partitionEx, .-partitionEx
	.globl	quicksortEx
	.type	quicksortEx, @function
quicksortEx:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -32[rbp], edx
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -32[rbp]
	jge	.L32
	mov	edx, DWORD PTR -32[rbp]
	mov	ecx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	partitionEx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	lea	edx, -1[rax]
	mov	ecx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	quicksortEx
	mov	eax, DWORD PTR -4[rbp]
	lea	ecx, 1[rax]
	mov	edx, DWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	quicksortEx
.L32:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	quicksortEx, .-quicksortEx
	.globl	pushStk
	.type	pushStk, @function
pushStk:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	je	.L39
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L36
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
.L36:
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L37
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	jmp	.L38
.L37:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
.L38:
	mov	QWORD PTR -8[rbp], 0
	jmp	.L33
.L39:
	nop
.L33:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	pushStk, .-pushStk
	.globl	push
	.type	push, @function
push:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	je	.L46
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L43
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
.L43:
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L44
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	jmp	.L45
.L44:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
.L45:
	mov	QWORD PTR -8[rbp], 0
	jmp	.L40
.L46:
	nop
.L40:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	push, .-push
	.globl	pop
	.type	pop, @function
pop:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	je	.L51
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L51
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rdx]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	QWORD PTR -8[rbp], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L47
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], 0
	jmp	.L47
.L51:
	nop
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	pop, .-pop
	.globl	top
	.type	top, @function
top:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L53
	mov	eax, 0
	jmp	.L54
.L53:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
.L54:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	top, .-top
	.globl	bottom
	.type	bottom, @function
bottom:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L56
	mov	eax, 0
	jmp	.L57
.L56:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
.L57:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	bottom, .-bottom
	.globl	iterateQueue
	.type	iterateQueue, @function
iterateQueue:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L59
.L62:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	jmp	.L60
.L61:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -28[rbp], 1
.L60:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -28[rbp], eax
	jl	.L61
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
.L59:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L62
	mov	edi, 10
	call	putchar@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	iterateQueue, .-iterateQueue
	.globl	insert
	.type	insert, @function
insert:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	je	.L69
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L66
	mov	esi, 24
	mov	edi, 1
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
.L66:
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L67
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], rdx
	jmp	.L68
.L67:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
.L68:
	mov	QWORD PTR -8[rbp], 0
	jmp	.L63
.L69:
	nop
.L63:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	insert, .-insert
	.globl	next
	.type	next, @function
next:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L71
	mov	eax, 0
	jmp	.L72
.L71:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L73
	mov	eax, 0
	jmp	.L72
.L73:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
.L72:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	next, .-next
	.globl	getHead
	.type	getHead, @function
getHead:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L75
	mov	eax, 0
	jmp	.L76
.L75:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
.L76:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	getHead, .-getHead
	.globl	getTail
	.type	getTail, @function
getTail:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L78
	mov	eax, 0
	jmp	.L79
.L78:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
.L79:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	getTail, .-getTail
	.globl	reset
	.type	reset, @function
reset:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	je	.L83
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], rdx
	jmp	.L80
.L83:
	nop
.L80:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	reset, .-reset
	.globl	add
	.type	add, @function
add:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	cmp	QWORD PTR -40[rbp], 0
	je	.L91
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L87
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	DWORD PTR 12[rax], 10
	mov	esi, 8
	mov	edi, 10
	call	calloc@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], rdx
.L87:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 12[rax]
	cmp	edx, eax
	jl	.L88
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 12[rax]
	mov	ecx, eax
	shr	ecx, 31
	add	eax, ecx
	sar	eax
	mov	ecx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	add	edx, ecx
	mov	DWORD PTR 12[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 12[rax]
	cdqe
	mov	esi, 8
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -24[rbp], 0
	jmp	.L89
.L90:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	edx, DWORD PTR -24[rbp]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	mov	rdx, QWORD PTR -8[rbp]
	add	rdx, rcx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR [rdx], rax
	add	DWORD PTR -24[rbp], 1
.L89:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -24[rbp], eax
	jl	.L90
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
.L88:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -20[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR -20[rbp]
	add	edx, 1
	mov	DWORD PTR 8[rax], edx
	jmp	.L84
.L91:
	nop
.L84:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	add, .-add
	.section	.rodata
	.align 8
.LC4:
	.string	"addByIndex: index is out of bound"
	.text
	.globl	addByIndex
	.type	addByIndex, @function
addByIndex:
.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, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	DWORD PTR -52[rbp], edx
	cmp	QWORD PTR -40[rbp], 0
	je	.L105
	cmp	DWORD PTR -52[rbp], 0
	jns	.L95
	lea	rdi, .LC1[rip]
	call	puts@PLT
	jmp	.L92
.L95:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L96
	cmp	DWORD PTR -52[rbp], 0
	jne	.L97
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	DWORD PTR 12[rax], 10
	mov	esi, 8
	mov	edi, 10
	call	calloc@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L96
.L97:
	lea	rdi, .LC4[rip]
	call	puts@PLT
	jmp	.L92
.L96:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -52[rbp], eax
	jle	.L98
	lea	rdi, .LC4[rip]
	call	puts@PLT
	jmp	.L92
.L98:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -52[rbp], eax
	jne	.L99
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	jmp	.L92
.L99:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 12[rax]
	cmp	edx, eax
	jl	.L100
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 12[rax]
	mov	ecx, eax
	shr	ecx, 31
	add	eax, ecx
	sar	eax
	mov	ecx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	add	edx, ecx
	mov	DWORD PTR 12[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 12[rax]
	cdqe
	mov	esi, 8
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	jmp	.L101
.L102:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	edx, DWORD PTR -28[rbp]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	mov	rdx, QWORD PTR -8[rbp]
	add	rdx, rcx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR [rdx], rax
	add	DWORD PTR -28[rbp], 1
.L101:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -28[rbp], eax
	jl	.L102
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
.L100:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 1
	mov	DWORD PTR -24[rbp], eax
	jmp	.L103
.L104:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	sal	rax, 3
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	add	rax, 1
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR [rcx]
	mov	QWORD PTR [rdx], rax
	sub	DWORD PTR -24[rbp], 1
.L103:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jge	.L104
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR -20[rbp]
	add	edx, 1
	mov	DWORD PTR 8[rax], edx
	jmp	.L92
.L105:
	nop
.L92:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	addByIndex, .-addByIndex
	.globl	addAll
	.type	addAll, @function
addAll:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	je	.L112
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	test	eax, eax
	je	.L113
	mov	DWORD PTR -4[rbp], 0
	jmp	.L110
.L111:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -4[rbp], 1
.L110:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -4[rbp], eax
	jl	.L111
	jmp	.L106
.L112:
	nop
	jmp	.L106
.L113:
	nop
.L106:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	addAll, .-addAll
	.globl	indexOf
	.type	indexOf, @function
indexOf:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	je	.L115
	cmp	QWORD PTR -32[rbp], 0
	jne	.L116
.L115:
	mov	eax, -1
	jmp	.L117
.L116:
	mov	DWORD PTR -16[rbp], -1
	mov	DWORD PTR -12[rbp], 0
	jmp	.L118
.L121:
	mov	edx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L119
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -16[rbp], eax
	jmp	.L120
.L119:
	add	DWORD PTR -12[rbp], 1
.L118:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -12[rbp], eax
	jl	.L121
.L120:
	mov	eax, DWORD PTR -16[rbp]
.L117:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	indexOf, .-indexOf
	.section	.rodata
	.align 8
.LC5:
	.string	"subArray error: index is out of bound"
	.text
	.globl	subArray
	.type	subArray, @function
subArray:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	DWORD PTR -48[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -40[rbp], 0
	jne	.L123
	mov	eax, 0
	jmp	.L129
.L123:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -44[rbp], eax
	jge	.L125
	cmp	DWORD PTR -48[rbp], 0
	js	.L125
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jge	.L126
.L125:
	lea	rdi, .LC5[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L129
.L126:
	mov	QWORD PTR -16[rbp], 0
	mov	eax, DWORD PTR -44[rbp]
	mov	DWORD PTR -20[rbp], eax
	jmp	.L127
.L128:
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	rdx, rax
	lea	rax, -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -20[rbp], 1
.L127:
	mov	eax, DWORD PTR -20[rbp]
	cmp	eax, DWORD PTR -48[rbp]
	jle	.L128
	mov	rax, QWORD PTR -16[rbp]
.L129:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L130
	call	__stack_chk_fail@PLT
.L130:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	subArray, .-subArray
	.section	.rodata
	.align 8
.LC6:
	.string	"removeByIndex: index is out of bound"
	.text
	.globl	removeByIndex
	.type	removeByIndex, @function
removeByIndex:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	cmp	QWORD PTR -24[rbp], 0
	je	.L139
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -28[rbp], eax
	jl	.L134
	lea	rdi, .LC6[rip]
	call	puts@PLT
	jmp	.L131
.L134:
	mov	eax, DWORD PTR -28[rbp]
	mov	DWORD PTR -4[rbp], eax
	jmp	.L135
.L138:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	sub	eax, 1
	cmp	DWORD PTR -28[rbp], eax
	jne	.L136
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	QWORD PTR [rax], 0
	jmp	.L137
.L136:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	rax, 1
	sal	rax, 3
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR [rcx]
	mov	QWORD PTR [rdx], rax
.L137:
	add	DWORD PTR -4[rbp], 1
.L135:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	getSize
	cmp	DWORD PTR -4[rbp], eax
	jl	.L138
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 8[rax], edx
	jmp	.L131
.L139:
	nop
.L131:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	removeByIndex, .-removeByIndex
	.globl	getSize
	.type	getSize, @function
getSize:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L141
	mov	eax, 0
	jmp	.L142
.L141:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
.L142:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	getSize, .-getSize
	.globl	sortNFANode
	.type	sortNFANode, @function
sortNFANode:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L151
	mov	QWORD PTR -24[rbp], 0
	mov	DWORD PTR -28[rbp], 0
	jmp	.L146
.L147:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	lea	rax, -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -28[rbp], 1
.L146:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -28[rbp], eax
	jl	.L147
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	quicksort
	mov	rax, QWORD PTR -24[rbp]
	jmp	.L143
.L151:
	nop
	nop
.L143:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L149
	call	__stack_chk_fail@PLT
.L149:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	sortNFANode, .-sortNFANode
	.globl	hashCode
	.type	hashCode, @function
hashCode:
.LFB33:
	.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
	mov	ecx, DWORD PTR -4[rbp]
	movsx	rax, ecx
	imul	rax, rax, 1321528399
	shr	rax, 32
	sar	eax, 2
	mov	esi, ecx
	sar	esi, 31
	sub	eax, esi
	mov	edx, eax
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sal	eax, 2
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	eax, edx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	hashCode, .-hashCode
	.section	.rodata
	.align 8
.LC7:
	.string	"hash map put failed: entity calloc failed"
	.text
	.globl	put
	.type	put, @function
put:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 88
	.cfi_offset 3, -24
	mov	QWORD PTR -72[rbp], rdi
	mov	DWORD PTR -76[rbp], esi
	mov	QWORD PTR -88[rbp], rdx
	cmp	QWORD PTR -72[rbp], 0
	je	.L165
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L157
	mov	edi, 8
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	mov	rbx, QWORD PTR [rax]
	mov	esi, 8
	mov	edi, 13
	call	calloc@PLT
	mov	QWORD PTR [rbx], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L157
	lea	rdi, .LC7[rip]
	call	puts@PLT
	jmp	.L154
.L157:
	mov	eax, DWORD PTR -76[rbp]
	mov	edi, eax
	call	hashCode
	mov	DWORD PTR -60[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L158
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L159
	lea	rdi, .LC7[rip]
	call	puts@PLT
	jmp	.L154
.L159:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -76[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	add
	jmp	.L154
.L158:
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -64[rbp], 0
	jmp	.L160
.L163:
	mov	edx, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -76[rbp], eax
	jne	.L161
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 8[rax], rdx
	jmp	.L162
.L161:
	add	DWORD PTR -64[rbp], 1
.L160:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -64[rbp], eax
	jl	.L163
.L162:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -64[rbp], eax
	jne	.L154
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -32[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	jne	.L164
	lea	rdi, .LC7[rip]
	call	puts@PLT
	jmp	.L154
.L164:
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -76[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	add
	jmp	.L154
.L165:
	nop
.L154:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	put, .-put
	.globl	get
	.type	get, @function
get:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	cmp	QWORD PTR -40[rbp], 0
	jne	.L167
	mov	eax, 0
	jmp	.L168
.L167:
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	hashCode
	mov	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L169
	mov	eax, 0
	jmp	.L168
.L169:
	mov	QWORD PTR -24[rbp], 0
	mov	DWORD PTR -32[rbp], 0
	jmp	.L170
.L173:
	mov	edx, DWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -44[rbp], eax
	jne	.L171
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L172
.L171:
	add	DWORD PTR -32[rbp], 1
.L170:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -32[rbp], eax
	jl	.L173
.L172:
	mov	rax, QWORD PTR -24[rbp]
.L168:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	get, .-get
	.section	.rodata
	.align 8
.LC8:
	.string	"init fa node failed: state must be 1 or 0"
.LC9:
	.string	"init fa node failed"
	.text
	.globl	initFANode
	.type	initFANode, @function
initFANode:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -32[rbp], edx
	cmp	DWORD PTR -28[rbp], 0
	je	.L175
	cmp	DWORD PTR -28[rbp], 1
	je	.L175
	lea	rdi, .LC8[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L176
.L175:
	mov	esi, 24
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L177
	lea	rdi, .LC9[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L176
.L177:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	DWORD PTR 16[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -32[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -8[rbp]
.L176:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	initFANode, .-initFANode
	.section	.rodata
.LC10:
	.string	"init FA edge node failed"
	.text
	.globl	initFAEdge
	.type	initFAEdge, @function
initFAEdge:
.LFB37:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L179
	lea	rdi, .LC10[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L180
.L179:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
.L180:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	initFAEdge, .-initFAEdge
	.section	.rodata
	.align 8
.LC11:
	.string	"initFA failed: malloc fa error"
	.text
	.globl	initFA
	.type	initFA, @function
initFA:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L182
	lea	rdi, .LC11[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L183
.L182:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
.L183:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	initFA, .-initFA
	.globl	initEpEdge
	.type	initEpEdge, @function
initEpEdge:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 0
	call	initFAEdge
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	initEpEdge, .-initEpEdge
	.section	.rodata
	.align 8
.LC12:
	.string	"update fa failed: start or end node cannot be null"
	.text
	.globl	updateFA
	.type	updateFA, @function
updateFA:
.LFB40:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	cmp	QWORD PTR -8[rbp], 0
	je	.L187
	cmp	QWORD PTR -16[rbp], 0
	je	.L187
	cmp	QWORD PTR -24[rbp], 0
	jne	.L188
.L187:
	lea	rdi, .LC12[rip]
	call	puts@PLT
	jmp	.L186
.L188:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
.L186:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	updateFA, .-updateFA
	.globl	symbolFA
	.type	symbolFA, @function
symbolFA:
.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, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	initFAEdge
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	esi, 1
	mov	edi, 0
	call	initFANode
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR [rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	QWORD PTR -40[rbp], 0
	mov	rdx, QWORD PTR -32[rbp]
	lea	rax, -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -64[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	initFANode
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	initFA
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L192
	call	__stack_chk_fail@PLT
.L192:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	symbolFA, .-symbolFA
	.globl	epsilonFA
	.type	epsilonFA, @function
epsilonFA:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	mov	edi, 0
	call	symbolFA
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	epsilonFA, .-epsilonFA
	.globl	unonFA
	.type	unonFA, @function
unonFA:
.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, 144
	mov	QWORD PTR -120[rbp], rdi
	mov	QWORD PTR -128[rbp], rsi
	mov	QWORD PTR -136[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -128[rbp], 0
	jne	.L196
	mov	rax, QWORD PTR -120[rbp]
	jmp	.L199
.L196:
	cmp	QWORD PTR -120[rbp], 0
	jne	.L198
	mov	rax, QWORD PTR -128[rbp]
	jmp	.L199
.L198:
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -88[rbp], rax
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -80[rbp], rax
	mov	QWORD PTR -112[rbp], 0
	mov	rdx, QWORD PTR -88[rbp]
	lea	rax, -112[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -80[rbp]
	lea	rax, -112[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -136[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	initFANode
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	eax, DWORD PTR [rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -136[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -64[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR -56[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -136[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	esi, 1
	mov	edi, 0
	call	initFANode
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -24[rbp], rax
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -48[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -48[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	QWORD PTR -104[rbp], 0
	mov	QWORD PTR -96[rbp], 0
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, -104[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -16[rbp]
	lea	rax, -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	updateFA
	mov	rax, QWORD PTR -120[rbp]
.L199:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L200
	call	__stack_chk_fail@PLT
.L200:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	unonFA, .-unonFA
	.globl	concatFA
	.type	concatFA, @function
concatFA:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -32[rbp], 0
	jne	.L202
	mov	rax, QWORD PTR -24[rbp]
	jmp	.L203
.L202:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L204
	mov	rax, QWORD PTR -32[rbp]
	jmp	.L203
.L204:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	updateFA
	mov	rax, QWORD PTR -24[rbp]
.L203:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	concatFA, .-concatFA
	.globl	kleenStarFA
	.type	kleenStarFA, @function
kleenStarFA:
.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, 112
	mov	QWORD PTR -104[rbp], rdi
	mov	QWORD PTR -112[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -104[rbp], 0
	jne	.L206
	mov	eax, 0
	jmp	.L208
.L206:
	mov	rax, QWORD PTR -112[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	esi, 1
	mov	edi, 0
	call	initFANode
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	mov	eax, DWORD PTR [rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -112[rbp]
	mov	DWORD PTR [rax], edx
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	QWORD PTR -88[rbp], 0
	mov	rdx, QWORD PTR -64[rbp]
	lea	rax, -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -112[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	initFANode
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -80[rbp], 0
	mov	rdx, QWORD PTR -48[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -40[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 16[rax], 0
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	initFA
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
.L208:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L209
	call	__stack_chk_fail@PLT
.L209:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	kleenStarFA, .-kleenStarFA
	.section	.rodata
.LC13:
	.string	"unonAllFA: char malloc failed"
	.text
	.globl	unonAllFA
	.type	unonAllFA, @function
unonAllFA:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	QWORD PTR -120[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -96[rbp], 0
	mov	rax, QWORD PTR -120[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	esi, 1
	mov	edi, 0
	call	initFANode
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	eax, DWORD PTR [rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -120[rbp]
	mov	DWORD PTR [rax], edx
	mov	QWORD PTR -72[rbp], 0
	mov	QWORD PTR -64[rbp], 0
	mov	QWORD PTR -56[rbp], 0
	mov	DWORD PTR -100[rbp], 97
	jmp	.L211
.L214:
	mov	eax, DWORD PTR -100[rbp]
	mov	BYTE PTR -101[rbp], al
	mov	edi, 1
	call	malloc@PLT
	mov	QWORD PTR -56[rbp], rax
	cmp	QWORD PTR -56[rbp], 0
	jne	.L212
	lea	rdi, .LC13[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L215
.L212:
	movzx	edx, BYTE PTR -101[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	BYTE PTR [rax], dl
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	symbolFA
	mov	QWORD PTR -32[rbp], rax
	mov	QWORD PTR -56[rbp], 0
	mov	rax, QWORD PTR -120[rbp]
	mov	eax, DWORD PTR [rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -120[rbp]
	mov	DWORD PTR [rax], edx
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR -64[rbp]
	lea	rax, -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	eax, 0
	call	initEpEdge
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	QWORD PTR -88[rbp], 0
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 16[rax], 0
	add	DWORD PTR -100[rbp], 1
.L211:
	cmp	DWORD PTR -100[rbp], 122
	jle	.L214
	mov	rax, QWORD PTR -120[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -96[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	initFANode
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	initFA
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
.L215:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L216
	call	__stack_chk_fail@PLT
.L216:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	unonAllFA, .-unonAllFA
	.globl	reg2NFA
	.type	reg2NFA, @function
reg2NFA:
.LFB47:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	QWORD PTR -40[rbp], 0
	mov	QWORD PTR -32[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	mov	QWORD PTR -16[rbp], 0
	mov	DWORD PTR -56[rbp], 0
	mov	DWORD PTR -52[rbp], 1
	lea	rax, -56[rbp]
	mov	rdi, rax
	call	epsilonFA
	mov	QWORD PTR -40[rbp], rax
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	mov	DWORD PTR -56[rbp], eax
	jmp	.L218
.L225:
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 42
	jne	.L219
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L220
	lea	rax, -56[rbp]
	mov	rdi, rax
	call	unonAllFA
	mov	QWORD PTR -32[rbp], rax
	jmp	.L221
.L220:
	lea	rdx, -56[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	symbolFA
	mov	QWORD PTR -32[rbp], rax
.L221:
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	mov	DWORD PTR -56[rbp], eax
	lea	rdx, -56[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	kleenStarFA
	mov	QWORD PTR -32[rbp], rax
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	mov	DWORD PTR -56[rbp], eax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	concatFA
	mov	QWORD PTR -40[rbp], rax
	add	QWORD PTR -48[rbp], 2
	jmp	.L222
.L219:
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L223
	lea	rax, -56[rbp]
	mov	rdi, rax
	call	unonAllFA
	mov	QWORD PTR -32[rbp], rax
	jmp	.L224
.L223:
	lea	rdx, -56[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	symbolFA
	mov	QWORD PTR -32[rbp], rax
.L224:
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	mov	DWORD PTR -56[rbp], eax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	concatFA
	mov	QWORD PTR -40[rbp], rax
	add	QWORD PTR -48[rbp], 1
.L222:
	mov	QWORD PTR -32[rbp], 0
.L218:
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L225
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L227
	call	__stack_chk_fail@PLT
.L227:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	reg2NFA, .-reg2NFA
	.section	.rodata
.LC14:
	.string	"%c,"
	.text
	.globl	iterateStack
	.type	iterateStack, @function
iterateStack:
.LFB48:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	je	.L233
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -16[rbp], rax
	jmp	.L231
.L232:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
.L231:
	cmp	QWORD PTR -16[rbp], 0
	jne	.L232
	mov	edi, 10
	call	putchar@PLT
	jmp	.L228
.L233:
	nop
.L228:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	iterateStack, .-iterateStack
	.section	.rodata
.LC15:
	.string	"---* state---"
.LC16:
	.string	"verifystk is null"
	.align 8
.LC17:
	.string	"there cannot be a token before '*'"
.LC18:
	.string	"---| state---"
	.align 8
.LC19:
	.string	"there cannot be a token before '|'"
.LC20:
	.string	"---( state---"
.LC21:
	.string	"---) state---"
	.align 8
.LC22:
	.string	"there cannot be a token in the end"
.LC23:
	.string	"enter here "
.LC24:
	.string	"aaa"
.LC25:
	.string	"bbb"
.LC26:
	.string	"---. state---"
.LC27:
	.string	"---character state---"
.LC28:
	.string	"---begin print remain ----"
	.text
	.globl	reg2NFAEx
	.type	reg2NFAEx, @function
reg2NFAEx:
.LFB49:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 368
	mov	QWORD PTR -360[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -360[rbp]
	mov	QWORD PTR -312[rbp], rax
	mov	BYTE PTR -342[rbp], 49
	mov	BYTE PTR -341[rbp], 48
	mov	QWORD PTR -304[rbp], 0
	mov	QWORD PTR -272[rbp], 0
	mov	QWORD PTR -264[rbp], 0
	mov	QWORD PTR -256[rbp], 0
	mov	QWORD PTR -336[rbp], 0
	mov	QWORD PTR -328[rbp], 0
	mov	QWORD PTR -320[rbp], 0
	mov	DWORD PTR -340[rbp], 0
	mov	rax, QWORD PTR -360[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L237
	lea	rax, -340[rbp]
	mov	rdi, rax
	call	epsilonFA
	jmp	.L272
.L263:
	mov	rax, QWORD PTR -312[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 42
	jne	.L238
	lea	rdi, .LC15[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	test	rax, rax
	jne	.L239
	lea	rdi, .LC16[rip]
	call	puts@PLT
.L239:
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	iterateStack
	cmp	QWORD PTR -32[rbp], 0
	je	.L240
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	jne	.L241
.L240:
	lea	rdi, .LC17[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L272
.L241:
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	lea	rdx, -340[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	kleenStarFA
	mov	QWORD PTR -304[rbp], rax
	lea	rax, -328[rbp]
	mov	rdi, rax
	call	pop
	mov	eax, DWORD PTR -340[rbp]
	add	eax, 1
	mov	DWORD PTR -340[rbp], eax
	mov	rdx, QWORD PTR -304[rbp]
	lea	rax, -328[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	jmp	.L242
.L238:
	mov	rax, QWORD PTR -312[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 124
	jne	.L243
	lea	rdi, .LC18[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -296[rbp], rax
	cmp	QWORD PTR -296[rbp], 0
	je	.L244
	mov	rax, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	jne	.L246
.L244:
	lea	rdi, .LC19[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L272
.L249:
	mov	rax, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	je	.L247
	mov	rax, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L247
	mov	rax, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	je	.L274
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	concatFA
	lea	rax, -328[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -296[rbp], rax
.L246:
	cmp	QWORD PTR -296[rbp], 0
	jne	.L249
	jmp	.L247
.L274:
	nop
.L247:
	mov	rdx, QWORD PTR -312[rbp]
	lea	rax, -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	lea	rdx, -342[rbp]
	lea	rax, -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	iterateStack
	jmp	.L242
.L243:
	mov	rax, QWORD PTR -312[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 40
	jne	.L250
	lea	rdi, .LC20[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -312[rbp]
	lea	rax, -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	lea	rdx, -342[rbp]
	lea	rax, -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	jmp	.L242
.L250:
	mov	rax, QWORD PTR -312[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 41
	jne	.L251
	lea	rdi, .LC21[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -288[rbp], rax
	cmp	QWORD PTR -288[rbp], 0
	je	.L252
	mov	rax, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	jne	.L254
.L252:
	lea	rdi, .LC22[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L272
.L261:
	mov	rax, QWORD PTR -336[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	je	.L255
	mov	rax, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 40
	jne	.L256
.L255:
	lea	rdi, .LC23[rip]
	call	puts@PLT
	jmp	.L257
.L256:
	mov	rax, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L275
	mov	rax, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	jne	.L259
	lea	rdi, .LC24[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	iterateNFA
	mov	rax, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -96[rbp], rax
	lea	rdx, -340[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	unonFA
	mov	QWORD PTR -304[rbp], rax
	mov	eax, DWORD PTR -340[rbp]
	add	eax, 1
	mov	DWORD PTR -340[rbp], eax
	lea	rax, -328[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -336[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	jmp	.L260
.L259:
	lea	rdi, .LC25[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	iterateNFA
	mov	rdx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	concatFA
	mov	QWORD PTR -304[rbp], rax
	lea	rax, -328[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
.L260:
	lea	rdx, -341[rbp]
	lea	rax, -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -288[rbp], rax
.L254:
	cmp	QWORD PTR -288[rbp], 0
	jne	.L261
	jmp	.L257
.L275:
	nop
.L257:
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	iterateNFA
	lea	rax, -336[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	lea	rdx, -341[rbp]
	lea	rax, -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	jmp	.L242
.L251:
	mov	rax, QWORD PTR -312[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L262
	lea	rdi, .LC26[rip]
	call	puts@PLT
	lea	rax, -340[rbp]
	mov	rdi, rax
	call	unonAllFA
	mov	QWORD PTR -304[rbp], rax
	mov	eax, DWORD PTR -340[rbp]
	add	eax, 1
	mov	DWORD PTR -340[rbp], eax
	mov	rdx, QWORD PTR -304[rbp]
	lea	rax, -328[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	lea	rdx, -341[rbp]
	lea	rax, -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	jmp	.L242
.L262:
	lea	rdi, .LC27[rip]
	call	puts@PLT
	lea	rdx, -340[rbp]
	mov	rax, QWORD PTR -312[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	symbolFA
	mov	QWORD PTR -304[rbp], rax
	mov	eax, DWORD PTR -340[rbp]
	add	eax, 1
	mov	DWORD PTR -340[rbp], eax
	lea	rdx, -341[rbp]
	lea	rax, -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	mov	rdx, QWORD PTR -304[rbp]
	lea	rax, -328[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
.L242:
	add	QWORD PTR -312[rbp], 1
.L237:
	mov	rax, QWORD PTR -312[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L263
	lea	rdi, .LC28[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -280[rbp], rax
	cmp	QWORD PTR -280[rbp], 0
	je	.L264
	mov	rax, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	jne	.L266
.L264:
	lea	rdi, .LC22[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L272
.L271:
	mov	rax, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L276
	mov	rax, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -248[rbp], rax
	mov	rax, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -240[rbp], rax
	mov	rax, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 49
	jne	.L269
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -200[rbp], rax
	mov	rax, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -184[rbp], rax
	mov	rax, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -176[rbp], rax
	lea	rdx, -340[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	unonFA
	mov	QWORD PTR -304[rbp], rax
	mov	eax, DWORD PTR -340[rbp]
	add	eax, 1
	mov	DWORD PTR -340[rbp], eax
	lea	rax, -328[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -336[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
	jmp	.L270
.L269:
	mov	rax, QWORD PTR -328[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -232[rbp], rax
	mov	rax, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -224[rbp], rax
	mov	rax, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -216[rbp], rax
	mov	rax, QWORD PTR -224[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	concatFA
	mov	QWORD PTR -304[rbp], rax
	lea	rax, -328[rbp]
	mov	rdi, rax
	call	pop
	lea	rax, -320[rbp]
	mov	rdi, rax
	call	pop
.L270:
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -280[rbp], rax
.L266:
	cmp	QWORD PTR -280[rbp], 0
	jne	.L271
	jmp	.L268
.L276:
	nop
.L268:
	mov	rax, QWORD PTR -304[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	iterateNFA
	mov	rax, QWORD PTR -304[rbp]
.L272:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L273
	call	__stack_chk_fail@PLT
.L273:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	reg2NFAEx, .-reg2NFAEx
	.section	.rodata
	.align 8
.LC29:
	.string	"delta function failed: nfa node is null"
	.text
	.globl	delta
	.type	delta, @function
delta:
.LFB50:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	eax, esi
	mov	BYTE PTR -60[rbp], al
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -56[rbp], 0
	jne	.L278
	lea	rdi, .LC29[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L283
.L278:
	mov	QWORD PTR -32[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	DWORD PTR -36[rbp], 0
	jmp	.L280
.L282:
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	je	.L281
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -60[rbp], al
	jne	.L281
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 8[rax]
	lea	rax, -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
.L281:
	add	DWORD PTR -36[rbp], 1
.L280:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -36[rbp], eax
	jl	.L282
	mov	rax, QWORD PTR -32[rbp]
.L283:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L284
	call	__stack_chk_fail@PLT
.L284:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	delta, .-delta
	.section	.rodata
	.align 8
.LC30:
	.string	"eclosure function failed: nfa node is null"
	.text
	.globl	eclosure
	.type	eclosure, @function
eclosure:
.LFB51:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	jne	.L286
	lea	rdi, .LC30[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L294
.L286:
	mov	QWORD PTR -72[rbp], 0
	mov	QWORD PTR -64[rbp], 0
	mov	QWORD PTR -56[rbp], 0
	mov	DWORD PTR -80[rbp], 1
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	lea	rax, -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	push
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, eax
	lea	rdx, -80[rbp]
	lea	rax, -56[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
	mov	rdx, QWORD PTR -40[rbp]
	lea	rax, -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -48[rbp], rax
	jmp	.L288
.L293:
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -40[rbp], 0
	je	.L289
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	DWORD PTR -76[rbp], 0
	jmp	.L290
.L292:
	mov	edx, DWORD PTR -76[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L291
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L291
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L291
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	get
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L291
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	ecx, eax
	lea	rdx, -80[rbp]
	lea	rax, -56[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	lea	rax, -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	push
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	lea	rax, -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
.L291:
	add	DWORD PTR -76[rbp], 1
.L290:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -76[rbp], eax
	jl	.L292
.L289:
	lea	rax, -64[rbp]
	mov	rdi, rax
	call	pop
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -48[rbp], rax
.L288:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L293
	mov	rax, QWORD PTR -72[rbp]
.L294:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L295
	call	__stack_chk_fail@PLT
.L295:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	eclosure, .-eclosure
	.globl	closure
	.type	closure, @function
closure:
.LFB52:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	jne	.L297
	mov	eax, 0
	jmp	.L304
.L297:
	mov	QWORD PTR -56[rbp], 0
	mov	QWORD PTR -48[rbp], 0
	mov	DWORD PTR -68[rbp], 1
	mov	DWORD PTR -64[rbp], 0
	jmp	.L299
.L303:
	mov	edx, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	eclosure
	mov	QWORD PTR -32[rbp], rax
	mov	DWORD PTR -60[rbp], 0
	jmp	.L300
.L302:
	mov	edx, DWORD PTR -60[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	get
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L301
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR [rax]
	lea	rdx, -68[rbp]
	lea	rax, -48[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
.L301:
	add	DWORD PTR -60[rbp], 1
.L300:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -60[rbp], eax
	jl	.L302
	add	DWORD PTR -64[rbp], 1
.L299:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -64[rbp], eax
	jl	.L303
	mov	rax, QWORD PTR -56[rbp]
.L304:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L305
	call	__stack_chk_fail@PLT
.L305:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	closure, .-closure
	.section	.rodata
	.align 8
.LC31:
	.string	"print dfa node failed: node is null"
.LC32:
	.string	"%d(%d)->"
.LC33:
	.string	"epsilon->"
.LC34:
	.string	"%c->"
.LC35:
	.string	"%d(%d)\n"
	.text
	.globl	printFANode
	.type	printFANode, @function
printFANode:
.LFB53:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	cmp	QWORD PTR -40[rbp], 0
	jne	.L307
	lea	rdi, .LC31[rip]
	call	puts@PLT
	jmp	.L306
.L307:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	jmp	.L309
.L312:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L310
	lea	rdi, .LC33[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L311
.L310:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC34[rip]
	mov	eax, 0
	call	printf@PLT
.L311:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -28[rbp], 1
.L309:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -28[rbp], eax
	jl	.L312
.L306:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	printFANode, .-printFANode
	.section	.rodata
	.align 8
.LC36:
	.string	"iterate nfa failed: nfa is null"
.LC37:
	.string	"start=%d, end=%d\n"
.LC38:
	.string	"%d->"
.LC39:
	.string	"%d\n"
	.text
	.globl	iterateNFA
	.type	iterateNFA, @function
iterateNFA:
.LFB54:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	jne	.L314
	lea	rdi, .LC36[rip]
	call	puts@PLT
	jmp	.L313
.L314:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC37[rip]
	mov	eax, 0
	call	printf@PLT
	mov	QWORD PTR -72[rbp], 0
	mov	QWORD PTR -64[rbp], 0
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	lea	rax, -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	push
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -56[rbp], rax
	mov	DWORD PTR -80[rbp], 1
	jmp	.L316
.L322:
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	DWORD PTR -76[rbp], 0
	jmp	.L317
.L321:
	mov	edx, DWORD PTR -76[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC38[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L318
	lea	rdi, .LC33[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L319
.L318:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC34[rip]
	mov	eax, 0
	call	printf@PLT
.L319:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC39[rip]
	mov	eax, 0
	call	printf@PLT
	cmp	QWORD PTR -24[rbp], 0
	je	.L320
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L320
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	get
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L320
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	ecx, eax
	lea	rdx, -80[rbp]
	lea	rax, -64[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	lea	rax, -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	push
.L320:
	add	DWORD PTR -76[rbp], 1
.L317:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -76[rbp], eax
	jl	.L321
	lea	rax, -72[rbp]
	mov	rdi, rax
	call	pop
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -56[rbp], rax
.L316:
	cmp	QWORD PTR -56[rbp], 0
	jne	.L322
.L313:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L323
	call	__stack_chk_fail@PLT
.L323:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	iterateNFA, .-iterateNFA
	.section	.rodata
.LC40:
	.string	"%d("
.LC41:
	.string	"->"
	.text
	.globl	printDFANode
	.type	printDFANode, @function
printDFANode:
.LFB55:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	cmp	QWORD PTR -56[rbp], 0
	je	.L331
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -36[rbp], 0
	jmp	.L327
.L328:
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -36[rbp], 1
.L327:
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -36[rbp], eax
	jl	.L328
	mov	edi, 41
	call	putchar@PLT
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -36[rbp], 0
	jmp	.L329
.L330:
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	putchar@PLT
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 41
	call	putchar@PLT
	mov	edi, 10
	call	putchar@PLT
	add	DWORD PTR -36[rbp], 1
.L329:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -36[rbp], eax
	jl	.L330
	mov	edi, 10
	call	putchar@PLT
	jmp	.L324
.L331:
	nop
.L324:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	printDFANode, .-printDFANode
	.globl	updateFANode
	.type	updateFANode, @function
updateFANode:
.LFB56:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	je	.L339
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L339
	mov	DWORD PTR -12[rbp], 0
	jmp	.L336
.L338:
	mov	edx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 1
	jne	.L337
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 16[rax], 1
	jmp	.L332
.L337:
	add	DWORD PTR -12[rbp], 1
.L336:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -12[rbp], eax
	jl	.L338
	jmp	.L332
.L339:
	nop
.L332:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	updateFANode, .-updateFANode
	.section	.rodata
	.align 8
.LC42:
	.string	"nfa to dfa failed: nfa is null"
	.align 8
.LC43:
	.string	"%c has found the right dfa state\n"
	.align 8
.LC44:
	.string	"nfa to dfa failed: no end state in DFA"
.LC45:
	.string	"size of dfa ends array is %d\n"
	.text
	.globl	nfa2DFA
	.type	nfa2DFA, @function
nfa2DFA:
.LFB57:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 336
	mov	QWORD PTR -328[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -328[rbp], 0
	jne	.L341
	lea	rdi, .LC42[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L376
.L341:
	mov	DWORD PTR -304[rbp], 0
	mov	rax, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -200[rbp], rax
	mov	rax, QWORD PTR -200[rbp]
	mov	rdi, rax
	call	eclosure
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR -192[rbp]
	mov	rdi, rax
	call	getSize
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -192[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	quicksortEx
	mov	QWORD PTR -264[rbp], 0
	mov	eax, DWORD PTR -304[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -304[rbp], edx
	mov	edx, eax
	mov	esi, 0
	mov	edi, 0
	call	initFANode
	mov	QWORD PTR -184[rbp], rax
	mov	rax, QWORD PTR -184[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	initFA
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -184[rbp]
	mov	QWORD PTR -168[rbp], rax
	mov	QWORD PTR -160[rbp], 0
	mov	QWORD PTR -152[rbp], 0
	mov	QWORD PTR -256[rbp], 0
	mov	QWORD PTR -248[rbp], 0
	mov	rdx, QWORD PTR -168[rbp]
	lea	rax, -248[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -192[rbp]
	lea	rax, -256[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	DWORD PTR -300[rbp], 0
	mov	rax, QWORD PTR -256[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -296[rbp], eax
	mov	QWORD PTR -240[rbp], 0
	mov	DWORD PTR -308[rbp], 1
	mov	QWORD PTR -232[rbp], 0
.L374:
	mov	eax, DWORD PTR -300[rbp]
	cmp	eax, DWORD PTR -296[rbp]
	jl	.L343
	mov	rdx, QWORD PTR -240[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	rax, QWORD PTR -264[rbp]
	test	rax, rax
	je	.L344
	jmp	.L378
.L343:
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR -300[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -248[rbp]
	mov	edx, DWORD PTR -300[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -168[rbp], rax
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	updateFANode
	mov	rax, QWORD PTR -168[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 1
	jne	.L346
	mov	rdx, QWORD PTR -168[rbp]
	lea	rax, -264[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
.L346:
	mov	QWORD PTR -224[rbp], 0
	mov	QWORD PTR -216[rbp], 0
	mov	DWORD PTR -292[rbp], 0
	jmp	.L347
.L373:
	mov	edx, DWORD PTR -292[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -128[rbp], rax
	mov	DWORD PTR -288[rbp], 0
	jmp	.L348
.L372:
	mov	edx, DWORD PTR -288[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -112[rbp], rax
	cmp	QWORD PTR -112[rbp], 0
	je	.L379
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 96
	jle	.L379
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 122
	jg	.L379
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	edx, al
	mov	rax, QWORD PTR -232[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	get
	mov	QWORD PTR -104[rbp], rax
	cmp	QWORD PTR -104[rbp], 0
	jne	.L352
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	ecx, al
	lea	rdx, -308[rbp]
	lea	rax, -232[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
	mov	edi, 1
	call	malloc@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -96[rbp]
	mov	BYTE PTR [rax], dl
	mov	rdx, QWORD PTR -96[rbp]
	lea	rax, -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
.L352:
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	edx, al
	mov	rax, QWORD PTR -136[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	delta
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	closure
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L351
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	getSize
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	quicksortEx
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	edx, al
	mov	rax, QWORD PTR -224[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	get
	mov	QWORD PTR -208[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	jne	.L353
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	ecx, al
	mov	rdx, QWORD PTR -80[rbp]
	lea	rax, -224[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -208[rbp], rax
	mov	DWORD PTR -276[rbp], 0
	jmp	.L362
.L353:
	mov	DWORD PTR -284[rbp], 0
	mov	DWORD PTR -280[rbp], 0
	jmp	.L355
.L359:
	mov	edx, DWORD PTR -284[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	mov	edx, DWORD PTR -280[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L356
	add	DWORD PTR -284[rbp], 1
	add	DWORD PTR -280[rbp], 1
	jmp	.L355
.L356:
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jge	.L357
	mov	edx, DWORD PTR -280[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	addByIndex
	add	DWORD PTR -284[rbp], 1
	add	DWORD PTR -280[rbp], 1
	jmp	.L355
.L357:
	add	DWORD PTR -280[rbp], 1
.L355:
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -284[rbp], eax
	jge	.L360
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -280[rbp], eax
	jl	.L359
	jmp	.L360
.L361:
	mov	edx, DWORD PTR -284[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	lea	rax, -208[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -284[rbp], 1
.L360:
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -284[rbp], eax
	jl	.L361
	jmp	.L351
.L369:
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR -276[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -272[rbp], 0
	mov	DWORD PTR -268[rbp], 0
	jmp	.L363
.L366:
	mov	edx, DWORD PTR -272[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	mov	edx, DWORD PTR -268[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L364
	add	DWORD PTR -272[rbp], 1
	add	DWORD PTR -268[rbp], 1
	jmp	.L363
.L364:
	add	DWORD PTR -272[rbp], 1
.L363:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -272[rbp], eax
	jge	.L365
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -268[rbp], eax
	jl	.L366
.L365:
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -268[rbp], eax
	jne	.L367
	mov	rax, QWORD PTR -112[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC43[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L368
.L367:
	add	DWORD PTR -276[rbp], 1
.L362:
	mov	rax, QWORD PTR -256[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -276[rbp], eax
	jl	.L369
.L368:
	mov	rax, QWORD PTR -112[rbp]
	mov	rdi, rax
	call	initFAEdge
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -16[rbp], 0
	mov	rax, QWORD PTR -256[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -276[rbp], eax
	jne	.L370
	mov	rdx, QWORD PTR -208[rbp]
	lea	rax, -256[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	eax, DWORD PTR -304[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -304[rbp], edx
	mov	edx, eax
	mov	esi, 0
	mov	edi, 0
	call	initFANode
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR -16[rbp]
	lea	rax, -248[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -256[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -296[rbp], eax
	jmp	.L371
.L370:
	mov	rax, QWORD PTR -248[rbp]
	mov	edx, DWORD PTR -276[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
.L371:
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, -216[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	jmp	.L351
.L379:
	nop
.L351:
	add	DWORD PTR -288[rbp], 1
.L348:
	mov	rax, QWORD PTR -128[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -288[rbp], eax
	jl	.L372
	add	DWORD PTR -292[rbp], 1
.L347:
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -292[rbp], eax
	jl	.L373
	mov	rdx, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -168[rbp]
	mov	QWORD PTR 8[rax], rdx
	add	DWORD PTR -300[rbp], 1
	jmp	.L374
.L344:
	lea	rdi, .LC44[rip]
	call	puts@PLT
	jmp	.L375
.L378:
	mov	rax, QWORD PTR -264[rbp]
	mov	rdi, rax
	call	getSize
	mov	esi, eax
	lea	rdi, .LC45[rip]
	mov	eax, 0
	call	printf@PLT
.L375:
	mov	rdx, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -176[rbp]
.L376:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L377
	call	__stack_chk_fail@PLT
.L377:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	nfa2DFA, .-nfa2DFA
	.globl	isMatch
	.type	isMatch, @function
isMatch:
.LFB58:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	reg2NFA
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	nfa2DFA
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	minimalDFA
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -40[rbp], rax
	jmp	.L381
.L388:
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -52[rbp], 0
	jmp	.L382
.L385:
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L383
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -48[rbp], rax
	jmp	.L384
.L383:
	add	DWORD PTR -52[rbp], 1
.L382:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -52[rbp], eax
	jl	.L385
.L384:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -52[rbp], eax
	je	.L392
	add	QWORD PTR -40[rbp], 1
.L381:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L388
	jmp	.L387
.L392:
	nop
.L387:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L389
	mov	eax, 48
	jmp	.L390
.L389:
	cmp	QWORD PTR -48[rbp], 0
	je	.L391
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 1
	jne	.L391
	mov	eax, 49
	jmp	.L390
.L391:
	mov	eax, 48
.L390:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	isMatch, .-isMatch
	.section	.rodata
.LC46:
	.string	"%d(%d)->%c->"
.LC47:
	.string	"epsilon"
.LC48:
	.string	"%d(%d)"
	.text
	.globl	iterateDFA
	.type	iterateDFA, @function
iterateDFA:
.LFB59:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	je	.L409
	mov	QWORD PTR -56[rbp], 0
	mov	rdx, QWORD PTR -88[rbp]
	lea	rax, -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	DWORD PTR -72[rbp], 0
.L407:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -72[rbp], eax
	jge	.L410
	mov	eax, DWORD PTR -72[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -72[rbp], edx
	mov	rdx, QWORD PTR -56[rbp]
	mov	esi, eax
	mov	rdi, rdx
	call	getByIndex
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -40[rbp], rax
	mov	DWORD PTR -68[rbp], 0
	jmp	.L398
.L406:
	mov	edx, DWORD PTR -68[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	ecx, al
	mov	rax, QWORD PTR -48[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC46[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	jne	.L399
	lea	rdi, .LC47[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L400
.L399:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -60[rbp], 0
	mov	DWORD PTR -64[rbp], 0
	jmp	.L401
.L405:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, DWORD PTR -64[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	je	.L411
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jle	.L404
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -60[rbp], eax
	jmp	.L403
.L404:
	add	DWORD PTR -64[rbp], 1
	add	DWORD PTR -60[rbp], 1
.L401:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -64[rbp], eax
	jl	.L405
	jmp	.L403
.L411:
	nop
.L403:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -60[rbp], eax
	jne	.L400
	mov	edx, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	lea	rax, -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	addByIndex
.L400:
	mov	edi, 10
	call	putchar@PLT
	add	DWORD PTR -68[rbp], 1
.L398:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -68[rbp], eax
	jl	.L406
	jmp	.L407
.L409:
	nop
	jmp	.L393
.L410:
	nop
.L393:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L408
	call	__stack_chk_fail@PLT
.L408:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	iterateDFA, .-iterateDFA
	.section	.rodata
	.align 8
.LC49:
	.string	"move function error: node is null"
	.text
	.globl	move
	.type	move, @function
move:
.LFB60:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	eax, esi
	mov	BYTE PTR -44[rbp], al
	cmp	QWORD PTR -40[rbp], 0
	jne	.L413
	lea	rdi, .LC49[rip]
	call	puts@PLT
	mov	eax, 0
	jmp	.L414
.L413:
	mov	QWORD PTR -24[rbp], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	jmp	.L415
.L417:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -44[rbp], al
	jne	.L416
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -24[rbp], rax
.L416:
	add	DWORD PTR -28[rbp], 1
.L415:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -28[rbp], eax
	jl	.L417
	mov	rax, QWORD PTR -24[rbp]
.L414:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	move, .-move
	.globl	compareTo
	.type	compareTo, @function
compareTo:
.LFB61:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 56
	.cfi_offset 3, -24
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	cmp	QWORD PTR -56[rbp], 0
	jne	.L419
	cmp	QWORD PTR -64[rbp], 0
	jne	.L419
	mov	eax, 49
	jmp	.L420
.L419:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	mov	ebx, eax
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	getSize
	cmp	ebx, eax
	je	.L421
	mov	eax, 48
	jmp	.L420
.L421:
	mov	DWORD PTR -36[rbp], 0
	jmp	.L422
.L425:
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -32[rbp], rax
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L427
	add	DWORD PTR -36[rbp], 1
.L422:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -36[rbp], eax
	jl	.L425
	jmp	.L424
.L427:
	nop
.L424:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -36[rbp], eax
	je	.L426
	mov	eax, 48
	jmp	.L420
.L426:
	mov	eax, 49
.L420:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	compareTo, .-compareTo
	.section	.rodata
	.align 8
.LC50:
	.string	"---begin pring node array array--"
.LC51:
	.string	"node array is 0"
.LC52:
	.string	"node is null,"
	.align 8
.LC53:
	.string	"---end pring node array array--"
	.text
	.globl	printNodeAryAry
	.type	printNodeAryAry, @function
printNodeAryAry:
.LFB62:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	lea	rdi, .LC50[rip]
	call	puts@PLT
	mov	DWORD PTR -24[rbp], 0
	jmp	.L429
.L436:
	mov	edx, DWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	jne	.L430
	lea	rdi, .LC51[rip]
	call	puts@PLT
	jmp	.L431
.L430:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L432
.L435:
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L433
	lea	rdi, .LC52[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L434
.L433:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
.L434:
	add	DWORD PTR -20[rbp], 1
.L432:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -20[rbp], eax
	jl	.L435
	mov	edi, 10
	call	putchar@PLT
.L431:
	add	DWORD PTR -24[rbp], 1
.L429:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -24[rbp], eax
	jl	.L436
	lea	rdi, .LC53[rip]
	call	puts@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	printNodeAryAry, .-printNodeAryAry
	.section	.rodata
.LC54:
	.string	"mapper malloc failed"
	.text
	.globl	recursion
	.type	recursion, @function
recursion:
.LFB63:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 256
	mov	QWORD PTR -232[rbp], rdi
	mov	QWORD PTR -240[rbp], rsi
	mov	DWORD PTR -244[rbp], edx
	mov	QWORD PTR -256[rbp], rcx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -244[rbp], eax
	jge	.L438
	mov	rax, QWORD PTR -232[rbp]
	mov	rdi, rax
	call	getSize
	cmp	eax, 1
	jg	.L439
.L438:
	mov	QWORD PTR -168[rbp], 0
	mov	rdx, QWORD PTR -232[rbp]
	lea	rax, -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -168[rbp]
	jmp	.L437
.L439:
	mov	QWORD PTR -184[rbp], 0
	mov	DWORD PTR -212[rbp], 0
	jmp	.L441
.L449:
	mov	edx, DWORD PTR -244[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -48[rbp], rax
	mov	edx, DWORD PTR -212[rbp]
	mov	rax, QWORD PTR -232[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	edx, al
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	move
	mov	QWORD PTR -32[rbp], rax
	mov	edi, 16
	call	malloc@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L442
	lea	rdi, .LC54[rip]
	call	puts@PLT
	jmp	.L437
.L442:
	mov	QWORD PTR -176[rbp], 0
	mov	QWORD PTR -168[rbp], 0
	mov	rdx, QWORD PTR -40[rbp]
	lea	rax, -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	cmp	QWORD PTR -32[rbp], 0
	jne	.L444
	mov	rdx, QWORD PTR -32[rbp]
	lea	rax, -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	jmp	.L445
.L444:
	mov	DWORD PTR -208[rbp], 0
	jmp	.L446
.L448:
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR -208[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	indexOf
	mov	DWORD PTR -188[rbp], eax
	cmp	DWORD PTR -188[rbp], 0
	js	.L447
	mov	rdx, QWORD PTR -16[rbp]
	lea	rax, -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	jmp	.L445
.L447:
	add	DWORD PTR -208[rbp], 1
.L446:
	mov	rax, QWORD PTR -256[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -208[rbp], eax
	jl	.L448
.L445:
	mov	rdx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, -184[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -212[rbp], 1
.L441:
	mov	rax, QWORD PTR -232[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -212[rbp], eax
	jl	.L449
	mov	DWORD PTR -204[rbp], 0
	mov	rax, QWORD PTR -184[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -200[rbp], eax
	mov	eax, DWORD PTR -200[rbp]
	mov	DWORD PTR -196[rbp], eax
	jmp	.L450
.L459:
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -204[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -96[rbp], rax
	mov	eax, DWORD PTR -204[rbp]
	add	eax, 1
	mov	DWORD PTR -192[rbp], eax
	jmp	.L451
.L458:
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -192[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	jne	.L452
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	jne	.L452
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR [rax]
	lea	rax, -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	addAll
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -192[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	removeByIndex
	mov	rax, QWORD PTR -184[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -200[rbp], eax
	mov	eax, DWORD PTR -200[rbp]
	mov	DWORD PTR -196[rbp], eax
	jmp	.L451
.L452:
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L453
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L453
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -56[rbp], rax
	cmp	QWORD PTR -64[rbp], 0
	jne	.L454
	cmp	QWORD PTR -56[rbp], 0
	je	.L455
.L454:
	cmp	QWORD PTR -64[rbp], 0
	je	.L456
	cmp	QWORD PTR -56[rbp], 0
	je	.L456
	mov	rax, QWORD PTR -64[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L456
.L455:
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR [rax]
	lea	rax, -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	addAll
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -192[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	removeByIndex
	mov	rax, QWORD PTR -184[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -200[rbp], eax
	mov	eax, DWORD PTR -200[rbp]
	mov	DWORD PTR -196[rbp], eax
	jmp	.L457
.L456:
	add	DWORD PTR -192[rbp], 1
.L457:
	jmp	.L451
.L453:
	add	DWORD PTR -192[rbp], 1
.L451:
	mov	eax, DWORD PTR -192[rbp]
	cmp	eax, DWORD PTR -196[rbp]
	jl	.L458
	add	DWORD PTR -204[rbp], 1
.L450:
	mov	eax, DWORD PTR -204[rbp]
	cmp	eax, DWORD PTR -200[rbp]
	jl	.L459
	mov	QWORD PTR -160[rbp], 0
	mov	rax, QWORD PTR -184[rbp]
	mov	rdi, rax
	call	getSize
	cmp	eax, 1
	jle	.L460
	mov	DWORD PTR -204[rbp], 0
	jmp	.L461
.L464:
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR -204[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -232[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -136[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L462
	mov	rax, QWORD PTR -256[rbp]
	mov	edx, DWORD PTR -204[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	removeByIndex
	jmp	.L463
.L462:
	add	DWORD PTR -204[rbp], 1
.L461:
	mov	rax, QWORD PTR -256[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -204[rbp], eax
	jl	.L464
.L463:
	mov	DWORD PTR -204[rbp], 0
	jmp	.L465
.L466:
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -204[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -128[rbp], rax
	mov	rdx, QWORD PTR -128[rbp]
	lea	rax, -256[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -204[rbp], 1
.L465:
	mov	rax, QWORD PTR -184[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -204[rbp], eax
	jl	.L466
.L460:
	mov	QWORD PTR -168[rbp], 0
	mov	QWORD PTR -120[rbp], 0
	mov	DWORD PTR -204[rbp], 0
	jmp	.L467
.L468:
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR -204[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	eax, DWORD PTR -244[rbp]
	lea	edi, 1[rax]
	mov	rax, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, QWORD PTR -240[rbp]
	mov	rcx, rdx
	mov	edx, edi
	mov	rdi, rax
	call	recursion
	mov	rdx, rax
	lea	rax, -168[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	addAll
	add	DWORD PTR -204[rbp], 1
.L467:
	mov	rax, QWORD PTR -184[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -204[rbp], eax
	jl	.L468
	mov	rax, QWORD PTR -168[rbp]
.L437:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L470
	call	__stack_chk_fail@PLT
.L470:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	recursion, .-recursion
	.section	.rodata
	.align 8
.LC55:
	.string	"minimal dfa error: alphabet is null"
	.align 8
.LC56:
	.string	"size of finalStateAry is %d, size of nonFinalStateAry is %d\n"
.LC57:
	.string	"---begin print removed ele---"
.LC58:
	.string	"---end print removed ele---\n"
.LC59:
	.string	")"
	.text
	.globl	minimalDFA
	.type	minimalDFA, @function
minimalDFA:
.LFB64:
	.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, 152
	.cfi_offset 3, -24
	mov	QWORD PTR -152[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -152[rbp], 0
	je	.L490
	mov	QWORD PTR -120[rbp], 0
	mov	rax, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -80[rbp], rax
	mov	QWORD PTR -112[rbp], 0
	mov	QWORD PTR -104[rbp], 0
	mov	rax, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	QWORD PTR -72[rbp], rax
	cmp	QWORD PTR -72[rbp], 0
	jne	.L474
	lea	rdi, .LC55[rip]
	call	puts@PLT
	jmp	.L471
.L474:
	mov	DWORD PTR -132[rbp], 0
	jmp	.L475
.L478:
	mov	edx, DWORD PTR -132[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	je	.L476
	mov	rdx, QWORD PTR -32[rbp]
	lea	rax, -112[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	jmp	.L477
.L476:
	mov	rdx, QWORD PTR -32[rbp]
	lea	rax, -104[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
.L477:
	add	DWORD PTR -132[rbp], 1
.L475:
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -132[rbp], eax
	jl	.L478
	mov	rax, QWORD PTR -112[rbp]
	mov	rdi, rax
	call	getSize
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -112[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	quicksortEx
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	getSize
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -104[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	quicksortEx
	mov	QWORD PTR -96[rbp], 0
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	getSize
	mov	ebx, eax
	mov	rax, QWORD PTR -112[rbp]
	mov	rdi, rax
	call	getSize
	mov	edx, ebx
	mov	esi, eax
	lea	rdi, .LC56[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L479
	mov	rdx, QWORD PTR -104[rbp]
	lea	rax, -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -104[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	recursion
	mov	rdx, rax
	lea	rax, -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	addAll
.L479:
	mov	rax, QWORD PTR -112[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L480
	mov	rdx, QWORD PTR -112[rbp]
	lea	rax, -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -112[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	recursion
	mov	rdx, rax
	lea	rax, -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	addAll
.L480:
	mov	QWORD PTR -88[rbp], 0
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -128[rbp], eax
	mov	DWORD PTR -132[rbp], 0
	jmp	.L481
.L483:
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, DWORD PTR -132[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	get
	test	rax, rax
	jne	.L482
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, DWORD PTR [rax]
	mov	rdx, QWORD PTR -48[rbp]
	lea	rax, -88[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	put
	add	DWORD PTR -132[rbp], 1
	jmp	.L481
.L482:
	lea	rdi, .LC57[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC39[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC58[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, DWORD PTR -132[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	removeByIndex
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	getSize
	mov	DWORD PTR -128[rbp], eax
.L481:
	mov	eax, DWORD PTR -132[rbp]
	cmp	eax, DWORD PTR -128[rbp]
	jl	.L483
	mov	DWORD PTR -132[rbp], 0
	jmp	.L484
.L487:
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, DWORD PTR -132[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -64[rbp], rax
	mov	edi, 40
	call	putchar@PLT
	mov	DWORD PTR -124[rbp], 0
	jmp	.L485
.L486:
	mov	edx, DWORD PTR -124[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -124[rbp], 1
.L485:
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -124[rbp], eax
	jl	.L486
	lea	rdi, .LC59[rip]
	call	puts@PLT
	add	DWORD PTR -132[rbp], 1
.L484:
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -132[rbp], eax
	jl	.L487
	mov	edi, 10
	call	putchar@PLT
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	mergeDFA
	jmp	.L471
.L490:
	nop
.L471:
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L489
	call	__stack_chk_fail@PLT
.L489:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	minimalDFA, .-minimalDFA
	.globl	mergeDFA
	.type	mergeDFA, @function
mergeDFA:
.LFB65:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 160
	mov	QWORD PTR -152[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	getSize
	test	eax, eax
	je	.L517
	mov	QWORD PTR -104[rbp], 0
	mov	DWORD PTR -132[rbp], 0
	jmp	.L494
.L505:
	mov	edx, DWORD PTR -132[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -128[rbp], 0
	jmp	.L495
.L504:
	mov	edx, DWORD PTR -128[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -40[rbp], rax
	cmp	DWORD PTR -128[rbp], 0
	jne	.L496
	mov	rdx, QWORD PTR -40[rbp]
	lea	rax, -104[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	DWORD PTR -124[rbp], 0
	jmp	.L497
.L503:
	mov	edx, DWORD PTR -124[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -116[rbp], -1
	mov	QWORD PTR -96[rbp], 0
	mov	DWORD PTR -120[rbp], 0
	jmp	.L498
.L501:
	mov	edx, DWORD PTR -120[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	indexOf
	mov	DWORD PTR -116[rbp], eax
	cmp	DWORD PTR -116[rbp], 0
	jns	.L518
	add	DWORD PTR -120[rbp], 1
.L498:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -120[rbp], eax
	jl	.L501
	jmp	.L500
.L518:
	nop
.L500:
	cmp	DWORD PTR -116[rbp], 0
	jle	.L502
	mov	rax, QWORD PTR -96[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getByIndex
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rdx], rax
.L502:
	add	DWORD PTR -124[rbp], 1
.L497:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -124[rbp], eax
	jl	.L503
.L496:
	add	DWORD PTR -128[rbp], 1
.L495:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -128[rbp], eax
	jl	.L504
	add	DWORD PTR -132[rbp], 1
.L494:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -132[rbp], eax
	jl	.L505
	mov	DWORD PTR -132[rbp], 0
	jmp	.L506
.L513:
	mov	edx, DWORD PTR -132[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -80[rbp], rax
	mov	DWORD PTR -112[rbp], 0
	jmp	.L507
.L512:
	cmp	DWORD PTR -112[rbp], 0
	je	.L519
	mov	edx, DWORD PTR -112[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -64[rbp], rax
	mov	DWORD PTR -108[rbp], 0
	jmp	.L510
.L511:
	mov	edx, DWORD PTR -108[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	free@PLT
	add	DWORD PTR -108[rbp], 1
.L510:
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -108[rbp], eax
	jl	.L511
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	free@PLT
	jmp	.L509
.L519:
	nop
.L509:
	add	DWORD PTR -112[rbp], 1
.L507:
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -112[rbp], eax
	jl	.L512
	add	DWORD PTR -132[rbp], 1
.L506:
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -132[rbp], eax
	jl	.L513
	mov	DWORD PTR -132[rbp], 0
	jmp	.L514
.L515:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -132[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	printFANode
	add	DWORD PTR -132[rbp], 1
.L514:
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -132[rbp], eax
	jl	.L515
	mov	edi, 10
	call	putchar@PLT
	jmp	.L491
.L517:
	nop
.L491:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L516
	call	__stack_chk_fail@PLT
.L516:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	mergeDFA, .-mergeDFA
	.section	.rodata
.LC60:
	.string	"if|else|then"
	.text
	.globl	testFA
	.type	testFA, @function
testFA:
.LFB66:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	lea	rax, .LC60[rip]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	reg2NFAEx
	mov	QWORD PTR -8[rbp], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE66:
	.size	testFA, .-testFA
	.globl	testArray
	.type	testArray, @function
testArray:
.LFB67:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -64[rbp], 4
	mov	DWORD PTR -60[rbp], 5
	mov	DWORD PTR -56[rbp], 6
	mov	DWORD PTR -52[rbp], 9
	mov	DWORD PTR -48[rbp], 3
	mov	DWORD PTR -44[rbp], 23
	mov	DWORD PTR -40[rbp], 4
	mov	DWORD PTR -36[rbp], 67
	mov	DWORD PTR -32[rbp], 8
	mov	DWORD PTR -28[rbp], 9
	mov	DWORD PTR -24[rbp], 10
	mov	DWORD PTR -76[rbp], 1
	mov	DWORD PTR -72[rbp], 9
	mov	DWORD PTR -68[rbp], 87
	mov	DWORD PTR -108[rbp], 11
	mov	QWORD PTR -104[rbp], 0
	mov	DWORD PTR -112[rbp], 0
	jmp	.L522
.L523:
	lea	rdx, -64[rbp]
	mov	eax, DWORD PTR -112[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	lea	rax, -104[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -112[rbp], 1
.L522:
	mov	eax, DWORD PTR -112[rbp]
	cmp	eax, DWORD PTR -108[rbp]
	jl	.L523
	mov	DWORD PTR -108[rbp], 3
	mov	QWORD PTR -96[rbp], 0
	mov	DWORD PTR -112[rbp], 0
	jmp	.L524
.L525:
	lea	rdx, -76[rbp]
	mov	eax, DWORD PTR -112[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	lea	rax, -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -112[rbp], 1
.L524:
	mov	eax, DWORD PTR -112[rbp]
	cmp	eax, DWORD PTR -108[rbp]
	jl	.L525
	mov	rdx, QWORD PTR -96[rbp]
	lea	rax, -104[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	addAll
	mov	DWORD PTR -112[rbp], 0
	jmp	.L526
.L527:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -112[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -112[rbp], 1
.L526:
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -112[rbp], eax
	jl	.L527
	mov	edi, 10
	call	putchar@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L528
	call	__stack_chk_fail@PLT
.L528:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE67:
	.size	testArray, .-testArray
	.section	.rodata
.LC61:
	.string	"b*.c*..*.b*b*.*c*"
.LC62:
	.string	"bcaccbbacbcbcab"
.LC63:
	.string	"result=%c\n"
	.text
	.globl	test
	.type	test, @function
test:
.LFB68:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	lea	rax, .LC61[rip]
	mov	QWORD PTR -16[rbp], rax
	lea	rax, .LC62[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	isMatch
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC63[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE68:
	.size	test, .-test
	.globl	testQuicksort
	.type	testQuicksort, @function
testQuicksort:
.LFB69:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -13[rbp], 1717723491
	mov	BYTE PTR -9[rbp], 101
	mov	DWORD PTR -44[rbp], 5
	mov	QWORD PTR -40[rbp], 0
	mov	DWORD PTR -48[rbp], 0
	jmp	.L531
.L532:
	lea	rdx, -13[rbp]
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	add	rax, rdx
	mov	rdi, rax
	call	initFAEdge
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -48[rbp], 1
.L531:
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L532
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	lea	edx, -1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	quicksort
	mov	DWORD PTR -48[rbp], 0
	jmp	.L533
.L534:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -48[rbp], 1
.L533:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -48[rbp], eax
	jl	.L534
	mov	edi, 10
	call	putchar@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L535
	call	__stack_chk_fail@PLT
.L535:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE69:
	.size	testQuicksort, .-testQuicksort
	.globl	testMerge
	.type	testMerge, @function
testMerge:
.LFB70:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -136[rbp], 7
	mov	DWORD PTR -132[rbp], 57
	mov	DWORD PTR -128[rbp], 2
	mov	DWORD PTR -124[rbp], 3
	mov	DWORD PTR -120[rbp], 4
	mov	DWORD PTR -116[rbp], 8
	mov	DWORD PTR -112[rbp], 10
	mov	DWORD PTR -108[rbp], 12
	mov	DWORD PTR -104[rbp], 14
	mov	DWORD PTR -100[rbp], 16
	mov	DWORD PTR -96[rbp], 18
	mov	DWORD PTR -92[rbp], 20
	mov	DWORD PTR -88[rbp], 22
	mov	DWORD PTR -84[rbp], 24
	mov	DWORD PTR -80[rbp], 26
	mov	DWORD PTR -76[rbp], 28
	mov	DWORD PTR -72[rbp], 30
	mov	DWORD PTR -68[rbp], 32
	mov	DWORD PTR -64[rbp], 34
	mov	DWORD PTR -60[rbp], 36
	mov	DWORD PTR -56[rbp], 38
	mov	DWORD PTR -52[rbp], 40
	mov	DWORD PTR -48[rbp], 42
	mov	DWORD PTR -44[rbp], 44
	mov	DWORD PTR -40[rbp], 46
	mov	DWORD PTR -36[rbp], 48
	mov	DWORD PTR -32[rbp], 50
	mov	DWORD PTR -28[rbp], 52
	mov	DWORD PTR -24[rbp], 54
	mov	DWORD PTR -20[rbp], 56
	mov	DWORD PTR -16[rbp], 58
	mov	DWORD PTR -208[rbp], 29
	mov	DWORD PTR -204[rbp], 2
	mov	QWORD PTR -200[rbp], 0
	mov	QWORD PTR -192[rbp], 0
	mov	DWORD PTR -220[rbp], 0
	jmp	.L537
.L538:
	mov	esi, 24
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	eax, DWORD PTR -220[rbp]
	cdqe
	mov	edx, DWORD PTR -128[rbp+rax*4]
	mov	rax, QWORD PTR -144[rbp]
	mov	DWORD PTR [rax], edx
	mov	rdx, QWORD PTR -144[rbp]
	lea	rax, -200[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -220[rbp], 1
.L537:
	mov	eax, DWORD PTR -220[rbp]
	cmp	eax, DWORD PTR -208[rbp]
	jl	.L538
	mov	DWORD PTR -220[rbp], 0
	jmp	.L539
.L540:
	mov	esi, 24
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	eax, DWORD PTR -220[rbp]
	cdqe
	mov	edx, DWORD PTR -136[rbp+rax*4]
	mov	rax, QWORD PTR -152[rbp]
	mov	DWORD PTR [rax], edx
	mov	rdx, QWORD PTR -152[rbp]
	lea	rax, -192[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -220[rbp], 1
.L539:
	mov	eax, DWORD PTR -220[rbp]
	cmp	eax, DWORD PTR -204[rbp]
	jl	.L540
	mov	DWORD PTR -216[rbp], 0
	mov	DWORD PTR -212[rbp], 0
	jmp	.L541
.L545:
	mov	rax, QWORD PTR -200[rbp]
	mov	edx, DWORD PTR -216[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -184[rbp], rax
	mov	rax, QWORD PTR -192[rbp]
	mov	edx, DWORD PTR -212[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -176[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L542
	add	DWORD PTR -216[rbp], 1
	add	DWORD PTR -212[rbp], 1
	jmp	.L541
.L542:
	mov	rax, QWORD PTR -184[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -176[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jge	.L543
	mov	edx, DWORD PTR -212[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	lea	rax, -192[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	addByIndex
	add	DWORD PTR -216[rbp], 1
	add	DWORD PTR -212[rbp], 1
	jmp	.L541
.L543:
	add	DWORD PTR -212[rbp], 1
.L541:
	mov	rax, QWORD PTR -200[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -216[rbp], eax
	jge	.L546
	mov	rax, QWORD PTR -192[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -212[rbp], eax
	jl	.L545
	jmp	.L546
.L547:
	mov	rax, QWORD PTR -200[rbp]
	mov	edx, DWORD PTR -216[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -160[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	lea	rax, -192[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add
	add	DWORD PTR -216[rbp], 1
.L546:
	mov	rax, QWORD PTR -200[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -216[rbp], eax
	jl	.L547
	mov	DWORD PTR -220[rbp], 0
	jmp	.L548
.L549:
	mov	rax, QWORD PTR -192[rbp]
	mov	edx, DWORD PTR -220[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	getByIndex
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -168[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -220[rbp], 1
.L548:
	mov	rax, QWORD PTR -192[rbp]
	mov	rdi, rax
	call	getSize
	cmp	DWORD PTR -220[rbp], eax
	jl	.L549
	mov	edi, 10
	call	putchar@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L550
	call	__stack_chk_fail@PLT
.L550:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE70:
	.size	testMerge, .-testMerge
	.section	.rodata
.LC64:
	.string	"head is null"
.LC65:
	.string	"head is %d\n"
.LC66:
	.string	"tail is null"
.LC67:
	.string	"tail is %d\n"
.LC68:
	.string	"move is null"
.LC69:
	.string	"move is %d\n"
	.text
	.globl	testList
	.type	testList, @function
testList:
.LFB71:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -48[rbp], 2
	mov	DWORD PTR -44[rbp], 3
	mov	DWORD PTR -40[rbp], 4
	mov	DWORD PTR -36[rbp], 8
	mov	DWORD PTR -32[rbp], 34
	mov	DWORD PTR -28[rbp], 102
	mov	DWORD PTR -24[rbp], 10
	mov	DWORD PTR -20[rbp], 12
	mov	QWORD PTR -88[rbp], 0
	mov	DWORD PTR -92[rbp], 8
	mov	DWORD PTR -96[rbp], 0
	jmp	.L552
.L553:
	lea	rdx, -48[rbp]
	mov	eax, DWORD PTR -96[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	lea	rax, -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	insert
	add	DWORD PTR -96[rbp], 1
.L552:
	mov	eax, DWORD PTR -96[rbp]
	cmp	eax, DWORD PTR -92[rbp]
	jl	.L553
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	next
	mov	QWORD PTR -80[rbp], rax
	jmp	.L554
.L555:
	mov	rax, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	next
	mov	QWORD PTR -80[rbp], rax
.L554:
	cmp	QWORD PTR -80[rbp], 0
	jne	.L555
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	getHead
	mov	QWORD PTR -80[rbp], rax
	cmp	QWORD PTR -80[rbp], 0
	jne	.L556
	lea	rdi, .LC64[rip]
	call	puts@PLT
	jmp	.L557
.L556:
	mov	rax, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC65[rip]
	mov	eax, 0
	call	printf@PLT
.L557:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	getTail
	mov	QWORD PTR -80[rbp], rax
	cmp	QWORD PTR -80[rbp], 0
	jne	.L558
	lea	rdi, .LC66[rip]
	call	puts@PLT
	jmp	.L559
.L558:
	mov	rax, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC67[rip]
	mov	eax, 0
	call	printf@PLT
.L559:
	mov	rax, QWORD PTR -88[rbp]
	test	rax, rax
	je	.L560
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	jne	.L561
.L560:
	lea	rdi, .LC68[rip]
	call	puts@PLT
	jmp	.L562
.L561:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC69[rip]
	mov	eax, 0
	call	printf@PLT
.L562:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	reset
	mov	rax, QWORD PTR -88[rbp]
	test	rax, rax
	je	.L563
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	jne	.L564
.L563:
	lea	rdi, .LC68[rip]
	call	puts@PLT
	jmp	.L565
.L564:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC69[rip]
	mov	eax, 0
	call	printf@PLT
.L565:
	mov	edi, 10
	call	putchar@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L566
	call	__stack_chk_fail@PLT
.L566:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE71:
	.size	testList, .-testList
	.globl	testQueue
	.type	testQueue, @function
testQueue:
.LFB72:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -96[rbp], 0
	mov	DWORD PTR -64[rbp], 4
	mov	DWORD PTR -60[rbp], 3
	mov	DWORD PTR -56[rbp], 2
	mov	DWORD PTR -52[rbp], 5
	mov	DWORD PTR -48[rbp], 6
	mov	DWORD PTR -44[rbp], 4
	mov	DWORD PTR -40[rbp], 3
	mov	DWORD PTR -36[rbp], 4
	mov	DWORD PTR -32[rbp], 656
	mov	DWORD PTR -28[rbp], 78
	mov	DWORD PTR -24[rbp], 5
	mov	DWORD PTR -20[rbp], 3
	mov	DWORD PTR -16[rbp], 1
	mov	DWORD PTR -100[rbp], 13
	mov	DWORD PTR -104[rbp], 0
	jmp	.L568
.L569:
	mov	edi, 8
	call	malloc@PLT
	mov	QWORD PTR -72[rbp], rax
	lea	rdx, -64[rbp]
	mov	eax, DWORD PTR -104[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pushStk
	add	DWORD PTR -104[rbp], 1
.L568:
	mov	eax, DWORD PTR -104[rbp]
	cmp	eax, DWORD PTR -100[rbp]
	jl	.L569
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -88[rbp], rax
	jmp	.L570
.L571:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -96[rbp]
	mov	rdi, rax
	call	pop
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	top
	mov	QWORD PTR -88[rbp], rax
.L570:
	cmp	QWORD PTR -88[rbp], 0
	jne	.L571
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L572
	call	__stack_chk_fail@PLT
.L572:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE72:
	.size	testQueue, .-testQueue
	.globl	main
	.type	main, @function
main:
.LFB73:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, 0
	call	testFA
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE73:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"637633.c"
	.text
	.align	2
	.global	swap
	.syntax unified
	.arm
	.fpu softvfp
	.type	swap, %function
swap:
	@ 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]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	swap, .-swap
	.section	.rodata
	.align	2
.LC6:
	.ascii	"getByIndex: index is out of bound!\000"
	.text
	.align	2
	.global	getByIndex
	.syntax unified
	.arm
	.fpu softvfp
	.type	getByIndex, %function
getByIndex:
	@ 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	r0, [fp, #-8]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	bne	.L3
	mov	r3, #0
	b	.L4
.L3:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L5
	ldr	r0, .L6
	bl	puts
	mvn	r3, #0
	b	.L4
.L5:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
.L4:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L7:
	.align	2
.L6:
	.word	.LC6
	.size	getByIndex, .-getByIndex
	.section	.rodata
	.align	2
.LC7:
	.ascii	"index must larger than 0\000"
	.align	2
.LC8:
	.ascii	"setByIndex: index is out of bound\000"
	.text
	.align	2
	.global	setByIndex
	.syntax unified
	.arm
	.fpu softvfp
	.type	setByIndex, %function
setByIndex:
	@ 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]
	cmp	r3, #0
	beq	.L13
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L11
	ldr	r0, .L14
	bl	puts
	b	.L8
.L11:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L12
	ldr	r0, .L14+4
	bl	puts
	b	.L8
.L12:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-12]
	str	r2, [r3]
	b	.L8
.L13:
	nop
.L8:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L15:
	.align	2
.L14:
	.word	.LC7
	.word	.LC8
	.size	setByIndex, .-setByIndex
	.align	2
	.global	getLast
	.syntax unified
	.arm
	.fpu softvfp
	.type	getLast, %function
getLast:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L17
	mov	r3, #0
	b	.L18
.L17:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	sub	r3, r3, #1
	ldr	r1, [fp, #-12]
	mul	r3, r1, r3
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
.L18:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	getLast, .-getLast
	.section	.rodata
	.align	2
.LC9:
	.ascii	"%d,\000"
	.text
	.align	2
	.global	partition
	.syntax unified
	.arm
	.fpu softvfp
	.type	partition, %function
partition:
	@ 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, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-32]
	b	.L20
.L22:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r2, r3
	bgt	.L21
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	swap
.L21:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L20:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	blt	.L22
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	swap
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L23
.L24:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L26
	bl	printf
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L23:
	ldr	r0, [fp, #-40]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	blt	.L24
	mov	r0, #10
	bl	putchar
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L27:
	.align	2
.L26:
	.word	.LC9
	.size	partition, .-partition
	.align	2
	.global	quicksort
	.syntax unified
	.arm
	.fpu softvfp
	.type	quicksort, %function
quicksort:
	@ 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	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bge	.L30
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	partition
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	mov	r2, r3
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	quicksort
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldr	r2, [fp, #-24]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	quicksort
.L30:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	quicksort, .-quicksort
	.align	2
	.global	partitionEx
	.syntax unified
	.arm
	.fpu softvfp
	.type	partitionEx, %function
partitionEx:
	@ 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, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-32]
	b	.L32
.L34:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3]
	cmp	r2, r3
	bgt	.L33
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-40]
	bl	setByIndex
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-40]
	bl	setByIndex
	mov	r3, #0
	str	r3, [fp, #-8]
.L33:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L32:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	blt	.L34
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-40]
	bl	setByIndex
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-40]
	bl	setByIndex
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	partitionEx, .-partitionEx
	.align	2
	.global	quicksortEx
	.syntax unified
	.arm
	.fpu softvfp
	.type	quicksortEx, %function
quicksortEx:
	@ 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	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bge	.L38
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	partitionEx
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	mov	r2, r3
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	quicksortEx
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldr	r2, [fp, #-24]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	quicksortEx
.L38:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	quicksortEx, .-quicksortEx
	.align	2
	.global	pushStk
	.syntax unified
	.arm
	.fpu softvfp
	.type	pushStk, %function
pushStk:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L45
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L42
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3]
.L42:
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L43
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	b	.L44
.L43:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
.L44:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L39
.L45:
	nop
.L39:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	pushStk, .-pushStk
	.align	2
	.global	push
	.syntax unified
	.arm
	.fpu softvfp
	.type	push, %function
push:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L52
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L49
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3]
.L49:
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L50
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	b	.L51
.L50:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
.L51:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L46
.L52:
	nop
.L46:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	push, .-push
	.align	2
	.global	pop
	.syntax unified
	.arm
	.fpu softvfp
	.type	pop, %function
pop:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L57
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L57
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	ldr	r2, [r2, #4]
	str	r2, [r3]
	ldr	r0, [fp, #-8]
	bl	free
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L53
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3]
	b	.L53
.L57:
	nop
.L53:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	pop, .-pop
	.align	2
	.global	top
	.syntax unified
	.arm
	.fpu softvfp
	.type	top, %function
top:
	@ 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]
	cmp	r3, #0
	bne	.L59
	mov	r3, #0
	b	.L60
.L59:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
.L60:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	top, .-top
	.align	2
	.global	bottom
	.syntax unified
	.arm
	.fpu softvfp
	.type	bottom, %function
bottom:
	@ 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]
	cmp	r3, #0
	bne	.L62
	mov	r3, #0
	b	.L63
.L62:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
.L63:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	bottom, .-bottom
	.align	2
	.global	iterateQueue
	.syntax unified
	.arm
	.fpu softvfp
	.type	iterateQueue, %function
iterateQueue:
	@ 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]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	str	r3, [fp, #-20]
	b	.L65
.L68:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L66
.L67:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L69
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L66:
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	blt	.L67
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
.L65:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L68
	mov	r0, #10
	bl	putchar
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L70:
	.align	2
.L69:
	.word	.LC9
	.size	iterateQueue, .-iterateQueue
	.align	2
	.global	insert
	.syntax unified
	.arm
	.fpu softvfp
	.type	insert, %function
insert:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L77
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L74
	mov	r1, #12
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3]
.L74:
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L75
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #8]
	b	.L76
.L75:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
.L76:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L71
.L77:
	nop
.L71:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	insert, .-insert
	.align	2
	.global	next
	.syntax unified
	.arm
	.fpu softvfp
	.type	next, %function
next:
	@ 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, [fp, #-16]
	cmp	r3, #0
	bne	.L79
	mov	r3, #0
	b	.L80
.L79:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L81
	mov	r3, #0
	b	.L80
.L81:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
.L80:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	next, .-next
	.align	2
	.global	getHead
	.syntax unified
	.arm
	.fpu softvfp
	.type	getHead, %function
getHead:
	@ 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]
	cmp	r3, #0
	bne	.L83
	mov	r3, #0
	b	.L84
.L83:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
.L84:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	getHead, .-getHead
	.align	2
	.global	getTail
	.syntax unified
	.arm
	.fpu softvfp
	.type	getTail, %function
getTail:
	@ 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]
	cmp	r3, #0
	bne	.L86
	mov	r3, #0
	b	.L87
.L86:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
.L87:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	getTail, .-getTail
	.align	2
	.global	reset
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset, %function
reset:
	@ 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]
	cmp	r3, #0
	beq	.L91
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #8]
	b	.L88
.L91:
	nop
.L88:
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	reset, .-reset
	.align	2
	.global	add
	.syntax unified
	.arm
	.fpu softvfp
	.type	add, %function
add:
	@ 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, [fp, #-24]
	cmp	r3, #0
	beq	.L99
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L95
	mov	r1, #12
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r2, #10
	str	r2, [r3, #8]
	mov	r1, #4
	mov	r0, #10
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3]
.L95:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	cmp	r2, r3
	blt	.L96
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	lsr	r1, r3, #31
	add	r3, r1, r3
	asr	r3, r3, #1
	mov	r1, r3
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	add	r2, r2, r1
	str	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	mov	r1, #4
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L97
.L98:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L97:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L98
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
.L96:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-28]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	add	r2, r2, #1
	str	r2, [r3, #4]
	b	.L92
.L99:
	nop
.L92:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	add, .-add
	.section	.rodata
	.align	2
.LC10:
	.ascii	"addByIndex: index is out of bound\000"
	.text
	.align	2
	.global	addByIndex
	.syntax unified
	.arm
	.fpu softvfp
	.type	addByIndex, %function
addByIndex:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L113
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bge	.L103
	ldr	r0, .L114
	bl	puts
	b	.L100
.L103:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L104
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L105
	mov	r1, #12
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-32]
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	mov	r2, #10
	str	r2, [r3, #8]
	mov	r1, #4
	mov	r0, #10
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3]
	b	.L104
.L105:
	ldr	r0, .L114+4
	bl	puts
	b	.L100
.L104:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	ble	.L106
	ldr	r0, .L114+4
	bl	puts
	b	.L100
.L106:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	bne	.L107
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-32]
	bl	add
	b	.L100
.L107:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	cmp	r2, r3
	blt	.L108
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	lsr	r1, r3, #31
	add	r3, r1, r3
	asr	r3, r3, #1
	mov	r1, r3
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	add	r2, r2, r1
	str	r2, [r3, #8]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	mov	r1, #4
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L109
.L110:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L109:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L110
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
.L108:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
	b	.L111
.L112:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r1, [r3]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
.L111:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	bge	.L112
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-36]
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	add	r2, r2, #1
	str	r2, [r3, #4]
	b	.L100
.L113:
	nop
.L100:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L115:
	.align	2
.L114:
	.word	.LC7
	.word	.LC10
	.size	addByIndex, .-addByIndex
	.align	2
	.global	addAll
	.syntax unified
	.arm
	.fpu softvfp
	.type	addAll, %function
addAll:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L122
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L123
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L120
.L121:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	add
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L120:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-8]
	cmp	r3, r2
	blt	.L121
	b	.L116
.L122:
	nop
	b	.L116
.L123:
	nop
.L116:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	addAll, .-addAll
	.align	2
	.global	indexOf
	.syntax unified
	.arm
	.fpu softvfp
	.type	indexOf, %function
indexOf:
	@ 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, [fp, #-24]
	cmp	r3, #0
	beq	.L125
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L126
.L125:
	mvn	r3, #0
	b	.L127
.L126:
	mvn	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L128
.L131:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L129
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-16]
	b	.L130
.L129:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L128:
	ldr	r0, [fp, #-24]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-12]
	cmp	r3, r2
	blt	.L131
.L130:
	ldr	r3, [fp, #-16]
.L127:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	indexOf, .-indexOf
	.section	.rodata
	.align	2
.LC11:
	.ascii	"subArray error: index is out of bound\000"
	.align	2
.LC12:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	subArray
	.syntax unified
	.arm
	.fpu softvfp
	.type	subArray, %function
subArray:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, .L141
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L133
	mov	r3, #0
	b	.L139
.L133:
	ldr	r0, [fp, #-24]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	bge	.L135
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	blt	.L135
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	bge	.L136
.L135:
	ldr	r0, .L141+4
	bl	puts
	mov	r3, #0
	b	.L139
.L136:
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-12]
	b	.L137
.L138:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	getByIndex
	mov	r2, r0
	sub	r3, fp, #16
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L137:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	ble	.L138
	ldr	r3, [fp, #-16]
.L139:
	ldr	r2, .L141
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L140
	bl	__stack_chk_fail
.L140:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L142:
	.align	2
.L141:
	.word	.LC12
	.word	.LC11
	.size	subArray, .-subArray
	.section	.rodata
	.align	2
.LC13:
	.ascii	"removeByIndex: index is out of bound\000"
	.text
	.align	2
	.global	removeByIndex
	.syntax unified
	.arm
	.fpu softvfp
	.type	removeByIndex, %function
removeByIndex:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L151
	ldr	r0, [fp, #-16]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	blt	.L146
	ldr	r0, .L152
	bl	puts
	b	.L143
.L146:
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-8]
	b	.L147
.L150:
	ldr	r0, [fp, #-16]
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bne	.L148
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3]
	b	.L149
.L148:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r1, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r2]
	str	r2, [r3]
.L149:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L147:
	ldr	r0, [fp, #-16]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-8]
	cmp	r3, r2
	blt	.L150
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	sub	r2, r3, #1
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	b	.L143
.L151:
	nop
.L143:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L153:
	.align	2
.L152:
	.word	.LC13
	.size	removeByIndex, .-removeByIndex
	.align	2
	.global	getSize
	.syntax unified
	.arm
	.fpu softvfp
	.type	getSize, %function
getSize:
	@ 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]
	cmp	r3, #0
	bne	.L155
	mov	r3, #0
	b	.L156
.L155:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
.L156:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	getSize, .-getSize
	.section	.rodata
	.align	2
.LC14:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	sortNFANode
	.syntax unified
	.arm
	.fpu softvfp
	.type	sortNFANode, %function
sortNFANode:
	@ 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]
	ldr	r3, .L166
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r0, [fp, #-32]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L165
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L160
.L161:
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-32]
	bl	getByIndex
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-20]
	sub	r3, fp, #28
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L160:
	ldr	r0, [fp, #-32]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	blt	.L161
	ldr	r4, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	mov	r2, r3
	mov	r1, #0
	mov	r0, r4
	bl	quicksort
	ldr	r3, [fp, #-28]
	b	.L157
.L165:
	nop
	nop
.L157:
	ldr	r2, .L166
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L163
	bl	__stack_chk_fail
.L163:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L167:
	.align	2
.L166:
	.word	.LC14
	.size	sortNFANode, .-sortNFANode
	.align	2
	.global	hashCode
	.syntax unified
	.arm
	.fpu softvfp
	.type	hashCode, %function
hashCode:
	@ 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	r1, [fp, #-8]
	ldr	r3, .L170
	smull	r2, r3, r1, r3
	asr	r2, r3, #2
	asr	r3, r1, #31
	sub	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	sub	r2, r1, r3
	mov	r3, r2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L171:
	.align	2
.L170:
	.word	1321528399
	.size	hashCode, .-hashCode
	.section	.rodata
	.align	2
.LC15:
	.ascii	"hash map put failed: entity calloc failed\000"
	.text
	.align	2
	.global	put
	.syntax unified
	.arm
	.fpu softvfp
	.type	put, %function
put:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #52
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	str	r2, [fp, #-56]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L183
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L175
	mov	r0, #4
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-48]
	str	r2, [r3]
	ldr	r3, [fp, #-48]
	ldr	r4, [r3]
	mov	r1, #4
	mov	r0, #13
	bl	calloc
	mov	r3, r0
	str	r3, [r4]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L175
	ldr	r0, .L184
	bl	puts
	b	.L172
.L175:
	ldr	r0, [fp, #-52]
	bl	hashCode
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L176
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L177
	ldr	r0, .L184
	bl	puts
	b	.L172
.L177:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-52]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-56]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	add
	b	.L172
.L176:
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L178
.L181:
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-28]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #-52]
	cmp	r2, r3
	bne	.L179
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-56]
	str	r2, [r3, #4]
	b	.L180
.L179:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L178:
	ldr	r0, [fp, #-28]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-40]
	cmp	r3, r2
	blt	.L181
.L180:
	ldr	r0, [fp, #-28]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-40]
	cmp	r3, r2
	bne	.L172
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L182
	ldr	r0, .L184
	bl	puts
	b	.L172
.L182:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-52]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-56]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	add
	b	.L172
.L183:
	nop
.L172:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L185:
	.align	2
.L184:
	.word	.LC15
	.size	put, .-put
	.align	2
	.global	get
	.syntax unified
	.arm
	.fpu softvfp
	.type	get, %function
get:
	@ 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]
	str	r1, [fp, #-36]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L187
	mov	r3, #0
	b	.L188
.L187:
	ldr	r0, [fp, #-36]
	bl	hashCode
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L189
	mov	r3, #0
	b	.L188
.L189:
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L190
.L193:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	bne	.L191
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-24]
	b	.L192
.L191:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L190:
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	blt	.L193
.L192:
	ldr	r3, [fp, #-24]
.L188:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get, .-get
	.section	.rodata
	.align	2
.LC16:
	.ascii	"init fa node failed: state must be 1 or 0\000"
	.align	2
.LC17:
	.ascii	"init fa node failed\000"
	.text
	.align	2
	.global	initFANode
	.syntax unified
	.arm
	.fpu softvfp
	.type	initFANode, %function
initFANode:
	@ 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, #-20]
	cmp	r3, #0
	beq	.L195
	ldr	r3, [fp, #-20]
	cmp	r3, #1
	beq	.L195
	ldr	r0, .L198
	bl	puts
	mov	r3, #0
	b	.L196
.L195:
	mov	r1, #12
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L197
	ldr	r0, .L198+4
	bl	puts
	mov	r3, #0
	b	.L196
.L197:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
.L196:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L199:
	.align	2
.L198:
	.word	.LC16
	.word	.LC17
	.size	initFANode, .-initFANode
	.section	.rodata
	.align	2
.LC18:
	.ascii	"init FA edge node failed\000"
	.text
	.align	2
	.global	initFAEdge
	.syntax unified
	.arm
	.fpu softvfp
	.type	initFAEdge, %function
initFAEdge:
	@ 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	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L201
	ldr	r0, .L203
	bl	puts
	mov	r3, #0
	b	.L202
.L201:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
.L202:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L204:
	.align	2
.L203:
	.word	.LC18
	.size	initFAEdge, .-initFAEdge
	.section	.rodata
	.align	2
.LC19:
	.ascii	"initFA failed: malloc fa error\000"
	.text
	.align	2
	.global	initFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	initFA, %function
initFA:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r0, #16
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L206
	ldr	r0, .L208
	bl	puts
	mov	r3, #0
	b	.L207
.L206:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
.L207:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L209:
	.align	2
.L208:
	.word	.LC19
	.size	initFA, .-initFA
	.align	2
	.global	initEpEdge
	.syntax unified
	.arm
	.fpu softvfp
	.type	initEpEdge, %function
initEpEdge:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #0
	bl	initFAEdge
	mov	r3, r0
	mov	r0, r3
	pop	{fp, pc}
	.size	initEpEdge, .-initEpEdge
	.section	.rodata
	.align	2
.LC20:
	.ascii	"update fa failed: start or end node cannot be null\000"
	.text
	.align	2
	.global	updateFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	updateFA, %function
updateFA:
	@ 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]
	cmp	r3, #0
	beq	.L213
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L213
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L214
.L213:
	ldr	r0, .L216
	bl	puts
	b	.L212
.L214:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
.L212:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L217:
	.align	2
.L216:
	.word	.LC20
	.size	updateFA, .-updateFA
	.section	.rodata
	.align	2
.LC21:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	symbolFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	symbolFA, %function
symbolFA:
	@ 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]
	str	r1, [fp, #-36]
	ldr	r3, .L221
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-32]
	bl	initFAEdge
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #1
	mov	r0, #0
	bl	initFANode
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r3, [fp, #-36]
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	mov	r3, #0
	str	r3, [fp, #-24]
	sub	r3, fp, #24
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	add
	ldr	r0, [fp, #-24]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #0
	bl	initFANode
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	initFA
	mov	r3, r0
	ldr	r2, .L221
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L220
	bl	__stack_chk_fail
.L220:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L222:
	.align	2
.L221:
	.word	.LC21
	.size	symbolFA, .-symbolFA
	.align	2
	.global	epsilonFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	epsilonFA, %function
epsilonFA:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-8]
	mov	r0, #0
	bl	symbolFA
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	epsilonFA, .-epsilonFA
	.section	.rodata
	.align	2
.LC22:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	unonFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	unonFA, %function
unonFA:
	@ 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, #-64]
	str	r1, [fp, #-68]
	str	r2, [fp, #-72]
	ldr	r3, .L231
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	bne	.L226
	ldr	r3, [fp, #-64]
	b	.L229
.L226:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	bne	.L228
	ldr	r3, [fp, #-68]
	b	.L229
.L228:
	bl	initEpEdge
	str	r0, [fp, #-48]
	bl	initEpEdge
	str	r0, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-60]
	sub	r3, fp, #60
	ldr	r1, [fp, #-48]
	mov	r0, r3
	bl	add
	sub	r3, fp, #60
	ldr	r1, [fp, #-44]
	mov	r0, r3
	bl	add
	ldr	r0, [fp, #-60]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #0
	bl	initFANode
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r3, [fp, #-72]
	str	r2, [r3]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-68]
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	ldr	r2, [fp, #-36]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-32]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #1
	mov	r0, #0
	bl	initFANode
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-68]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
	bl	initEpEdge
	str	r0, [fp, #-16]
	bl	initEpEdge
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-28]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-28]
	str	r2, [r3, #4]
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-52]
	sub	r3, fp, #56
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	add
	sub	r3, fp, #52
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	add
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-20]
	str	r2, [r3, #4]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-64]
	bl	updateFA
	ldr	r3, [fp, #-64]
.L229:
	ldr	r2, .L231
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L230
	bl	__stack_chk_fail
.L230:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L232:
	.align	2
.L231:
	.word	.LC22
	.size	unonFA, .-unonFA
	.align	2
	.global	concatFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	concatFA, %function
concatFA:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L234
	ldr	r3, [fp, #-16]
	b	.L235
.L234:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L236
	ldr	r3, [fp, #-20]
	b	.L235
.L236:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	ldr	r1, [r3]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r0, [fp, #-16]
	bl	updateFA
	ldr	r3, [fp, #-16]
.L235:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	concatFA, .-concatFA
	.section	.rodata
	.align	2
.LC23:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	kleenStarFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	kleenStarFA, %function
kleenStarFA:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	ldr	r3, .L242
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L238
	mov	r3, #0
	b	.L240
.L238:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #1
	mov	r0, #0
	bl	initFANode
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r3, [fp, #-60]
	str	r2, [r3]
	bl	initEpEdge
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-56]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	str	r2, [r3, #4]
	bl	initEpEdge
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-40]
	str	r2, [r3, #4]
	bl	initEpEdge
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-56]
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	str	r2, [r3, #4]
	bl	initEpEdge
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-40]
	str	r2, [r3, #4]
	mov	r3, #0
	str	r3, [fp, #-48]
	sub	r3, fp, #48
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	add
	sub	r3, fp, #48
	ldr	r1, [fp, #-32]
	mov	r0, r3
	bl	add
	ldr	r0, [fp, #-48]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #0
	bl	initFANode
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-44]
	sub	r3, fp, #44
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	add
	sub	r3, fp, #44
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	add
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-20]
	bl	initFA
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
.L240:
	ldr	r2, .L242
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L241
	bl	__stack_chk_fail
.L241:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L243:
	.align	2
.L242:
	.word	.LC23
	.size	kleenStarFA, .-kleenStarFA
	.section	.rodata
	.align	2
.LC24:
	.ascii	"unonAllFA: char malloc failed\000"
	.align	2
.LC25:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	unonAllFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	unonAllFA, %function
unonAllFA:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-64]
	ldr	r3, .L251
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #1
	mov	r0, #0
	bl	initFANode
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r3, [fp, #-64]
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #97
	str	r3, [fp, #-48]
	b	.L245
.L248:
	ldr	r3, [fp, #-48]
	and	r3, r3, #255
	strb	r3, [fp, #-57]
	mov	r0, #1
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L246
	ldr	r0, .L251+4
	bl	puts
	mov	r3, #0
	b	.L249
.L246:
	ldrb	r2, [fp, #-57]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-32]
	bl	symbolFA
	str	r0, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r3, [fp, #-64]
	str	r2, [r3]
	bl	initEpEdge
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	sub	r3, fp, #56
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	bl	initEpEdge
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-44]
	str	r2, [r3, #4]
	mov	r3, #0
	str	r3, [fp, #-52]
	sub	r3, fp, #52
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L245:
	ldr	r3, [fp, #-48]
	cmp	r3, #122
	ble	.L248
	ldr	r0, [fp, #-56]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	mov	r2, r3
	mov	r1, #0
	bl	initFANode
	str	r0, [fp, #-28]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-28]
	bl	initFA
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
.L249:
	ldr	r2, .L251
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L250
	bl	__stack_chk_fail
.L250:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L252:
	.align	2
.L251:
	.word	.LC25
	.word	.LC24
	.size	unonAllFA, .-unonAllFA
	.section	.rodata
	.align	2
.LC26:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	reg2NFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	reg2NFA, %function
reg2NFA:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	ldr	r3, .L264
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #1
	str	r3, [fp, #-12]
	sub	r3, fp, #36
	mov	r0, r3
	bl	epsilonFA
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	b	.L254
.L261:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #42
	bne	.L255
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L256
	sub	r3, fp, #36
	mov	r0, r3
	bl	unonAllFA
	str	r0, [fp, #-24]
	b	.L257
.L256:
	sub	r3, fp, #36
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	symbolFA
	str	r0, [fp, #-24]
.L257:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	sub	r3, fp, #36
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	kleenStarFA
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-28]
	bl	concatFA
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-32]
	add	r3, r3, #2
	str	r3, [fp, #-32]
	b	.L258
.L255:
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L259
	sub	r3, fp, #36
	mov	r0, r3
	bl	unonAllFA
	str	r0, [fp, #-24]
	b	.L260
.L259:
	sub	r3, fp, #36
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	symbolFA
	str	r0, [fp, #-24]
.L260:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-28]
	bl	concatFA
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L258:
	mov	r3, #0
	str	r3, [fp, #-24]
.L254:
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L261
	ldr	r3, [fp, #-28]
	ldr	r2, .L264
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L263
	bl	__stack_chk_fail
.L263:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L265:
	.align	2
.L264:
	.word	.LC26
	.size	reg2NFA, .-reg2NFA
	.section	.rodata
	.align	2
.LC27:
	.ascii	"%c,\000"
	.text
	.align	2
	.global	iterateStack
	.syntax unified
	.arm
	.fpu softvfp
	.type	iterateStack, %function
iterateStack:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L271
	ldr	r0, [fp, #-16]
	bl	top
	str	r0, [fp, #-12]
	b	.L269
.L270:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L272
	bl	printf
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
.L269:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L270
	mov	r0, #10
	bl	putchar
	b	.L266
.L271:
	nop
.L266:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L273:
	.align	2
.L272:
	.word	.LC27
	.size	iterateStack, .-iterateStack
	.section	.rodata
	.align	2
.LC28:
	.ascii	"---* state---\000"
	.align	2
.LC29:
	.ascii	"verifystk is null\000"
	.align	2
.LC30:
	.ascii	"there cannot be a token before '*'\000"
	.align	2
.LC31:
	.ascii	"---| state---\000"
	.align	2
.LC32:
	.ascii	"there cannot be a token before '|'\000"
	.align	2
.LC33:
	.ascii	"---( state---\000"
	.align	2
.LC34:
	.ascii	"---) state---\000"
	.align	2
.LC35:
	.ascii	"there cannot be a token in the end\000"
	.align	2
.LC36:
	.ascii	"enter here \000"
	.align	2
.LC37:
	.ascii	"aaa\000"
	.align	2
.LC38:
	.ascii	"bbb\000"
	.align	2
.LC39:
	.ascii	"---. state---\000"
	.align	2
.LC40:
	.ascii	"---character state---\000"
	.align	2
.LC41:
	.ascii	"---begin print remain ----\000"
	.align	2
.LC42:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	reg2NFAEx
	.syntax unified
	.arm
	.fpu softvfp
	.type	reg2NFAEx, %function
reg2NFAEx:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #184
	str	r0, [fp, #-184]
	ldr	r3, .L317
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-184]
	str	r3, [fp, #-160]
	mov	r3, #49
	strb	r3, [fp, #-178]
	mov	r3, #48
	strb	r3, [fp, #-177]
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r3, #0
	str	r3, [fp, #-140]
	mov	r3, #0
	str	r3, [fp, #-136]
	mov	r3, #0
	str	r3, [fp, #-132]
	mov	r3, #0
	str	r3, [fp, #-176]
	mov	r3, #0
	str	r3, [fp, #-172]
	mov	r3, #0
	str	r3, [fp, #-168]
	mov	r3, #0
	str	r3, [fp, #-164]
	ldr	r3, [fp, #-184]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L277
	sub	r3, fp, #164
	mov	r0, r3
	bl	epsilonFA
	mov	r3, r0
	b	.L312
.L303:
	ldr	r3, [fp, #-160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #42
	bne	.L278
	ldr	r0, .L317+4
	bl	puts
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	bne	.L279
	ldr	r0, .L317+8
	bl	puts
.L279:
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	iterateStack
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L280
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L281
.L280:
	ldr	r0, .L317+12
	bl	puts
	mov	r3, #0
	b	.L312
.L281:
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	sub	r3, fp, #164
	mov	r1, r3
	ldr	r0, [fp, #-12]
	bl	kleenStarFA
	str	r0, [fp, #-156]
	sub	r3, fp, #172
	mov	r0, r3
	bl	pop
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
	sub	r3, fp, #172
	ldr	r1, [fp, #-156]
	mov	r0, r3
	bl	pushStk
	b	.L282
.L278:
	ldr	r3, [fp, #-160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #124
	bne	.L283
	ldr	r0, .L317+16
	bl	puts
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-152]
	ldr	r3, [fp, #-152]
	cmp	r3, #0
	beq	.L284
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L286
.L284:
	ldr	r0, .L317+20
	bl	puts
	mov	r3, #0
	b	.L312
.L289:
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	beq	.L287
	ldr	r3, [fp, #-152]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L287
	ldr	r3, [fp, #-152]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	beq	.L314
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	concatFA
	sub	r3, fp, #172
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-152]
.L286:
	ldr	r3, [fp, #-152]
	cmp	r3, #0
	bne	.L289
	b	.L287
.L314:
	nop
.L287:
	sub	r3, fp, #176
	ldr	r1, [fp, #-160]
	mov	r0, r3
	bl	pushStk
	sub	r2, fp, #178
	sub	r3, fp, #168
	mov	r1, r2
	mov	r0, r3
	bl	pushStk
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	iterateStack
	b	.L282
.L283:
	ldr	r3, [fp, #-160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #40
	bne	.L290
	ldr	r0, .L317+24
	bl	puts
	sub	r3, fp, #176
	ldr	r1, [fp, #-160]
	mov	r0, r3
	bl	pushStk
	sub	r2, fp, #178
	sub	r3, fp, #168
	mov	r1, r2
	mov	r0, r3
	bl	pushStk
	b	.L282
.L290:
	ldr	r3, [fp, #-160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #41
	bne	.L291
	ldr	r0, .L317+28
	bl	puts
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-148]
	ldr	r3, [fp, #-148]
	cmp	r3, #0
	beq	.L292
	ldr	r3, [fp, #-148]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L294
.L292:
	ldr	r0, .L317+32
	bl	puts
	mov	r3, #0
	b	.L312
.L301:
	ldr	r3, [fp, #-176]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-88]
	ldr	r3, [fp, #-148]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	beq	.L295
	ldr	r3, [fp, #-88]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #40
	bne	.L296
.L295:
	ldr	r0, .L317+36
	bl	puts
	b	.L297
.L296:
	ldr	r3, [fp, #-148]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L315
	ldr	r3, [fp, #-148]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-84]
	ldr	r3, [fp, #-84]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L299
	ldr	r0, .L317+40
	bl	puts
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	str	r3, [fp, #-56]
	ldr	r0, [fp, #-56]
	bl	iterateNFA
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	str	r3, [fp, #-52]
	sub	r3, fp, #164
	mov	r2, r3
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-52]
	bl	unonFA
	str	r0, [fp, #-156]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
	sub	r3, fp, #172
	mov	r0, r3
	bl	pop
	sub	r3, fp, #176
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	b	.L300
.L299:
	ldr	r0, .L317+44
	bl	puts
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-80]
	ldr	r3, [fp, #-80]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-80]
	ldr	r3, [r3]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-76]
	ldr	r3, [r3]
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-72]
	bl	iterateNFA
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-68]
	bl	concatFA
	str	r0, [fp, #-156]
	sub	r3, fp, #172
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
.L300:
	sub	r2, fp, #177
	sub	r3, fp, #168
	mov	r1, r2
	mov	r0, r3
	bl	pushStk
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-148]
.L294:
	ldr	r3, [fp, #-148]
	cmp	r3, #0
	bne	.L301
	b	.L297
.L315:
	nop
.L297:
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	str	r3, [fp, #-44]
	ldr	r0, [fp, #-44]
	bl	iterateNFA
	sub	r3, fp, #176
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	sub	r2, fp, #177
	sub	r3, fp, #168
	mov	r1, r2
	mov	r0, r3
	bl	pushStk
	b	.L282
.L291:
	ldr	r3, [fp, #-160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L302
	ldr	r0, .L317+48
	bl	puts
	sub	r3, fp, #164
	mov	r0, r3
	bl	unonAllFA
	str	r0, [fp, #-156]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
	sub	r3, fp, #172
	ldr	r1, [fp, #-156]
	mov	r0, r3
	bl	pushStk
	sub	r2, fp, #177
	sub	r3, fp, #168
	mov	r1, r2
	mov	r0, r3
	bl	pushStk
	b	.L282
.L302:
	ldr	r0, .L317+52
	bl	puts
	sub	r3, fp, #164
	mov	r1, r3
	ldr	r0, [fp, #-160]
	bl	symbolFA
	str	r0, [fp, #-156]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
	sub	r2, fp, #177
	sub	r3, fp, #168
	mov	r1, r2
	mov	r0, r3
	bl	pushStk
	sub	r3, fp, #172
	ldr	r1, [fp, #-156]
	mov	r0, r3
	bl	pushStk
.L282:
	ldr	r3, [fp, #-160]
	add	r3, r3, #1
	str	r3, [fp, #-160]
.L277:
	ldr	r3, [fp, #-160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L303
	ldr	r0, .L317+56
	bl	puts
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-144]
	ldr	r3, [fp, #-144]
	cmp	r3, #0
	beq	.L304
	ldr	r3, [fp, #-144]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L306
.L304:
	ldr	r0, .L317+32
	bl	puts
	mov	r3, #0
	b	.L312
.L311:
	ldr	r3, [fp, #-144]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L316
	ldr	r3, [fp, #-144]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-128]
	ldr	r3, [r3]
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-128]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L309
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-104]
	ldr	r3, [fp, #-104]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-100]
	ldr	r3, [fp, #-104]
	ldr	r3, [r3]
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-100]
	ldr	r3, [r3]
	str	r3, [fp, #-92]
	sub	r3, fp, #164
	mov	r2, r3
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-92]
	bl	unonFA
	str	r0, [fp, #-156]
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
	sub	r3, fp, #172
	mov	r0, r3
	bl	pop
	sub	r3, fp, #176
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
	b	.L310
.L309:
	ldr	r3, [fp, #-172]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-120]
	ldr	r3, [fp, #-120]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-116]
	ldr	r3, [fp, #-120]
	ldr	r3, [r3]
	str	r3, [fp, #-112]
	ldr	r3, [fp, #-116]
	ldr	r3, [r3]
	str	r3, [fp, #-108]
	ldr	r1, [fp, #-112]
	ldr	r0, [fp, #-108]
	bl	concatFA
	str	r0, [fp, #-156]
	sub	r3, fp, #172
	mov	r0, r3
	bl	pop
	sub	r3, fp, #168
	mov	r0, r3
	bl	pop
.L310:
	ldr	r3, [fp, #-168]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-144]
.L306:
	ldr	r3, [fp, #-144]
	cmp	r3, #0
	bne	.L311
	b	.L308
.L316:
	nop
.L308:
	ldr	r0, [fp, #-156]
	bl	iterateNFA
	ldr	r3, [fp, #-156]
.L312:
	ldr	r2, .L317
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L313
	bl	__stack_chk_fail
.L313:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L318:
	.align	2
.L317:
	.word	.LC42
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.size	reg2NFAEx, .-reg2NFAEx
	.section	.rodata
	.align	2
.LC43:
	.ascii	"delta function failed: nfa node is null\000"
	.align	2
.LC44:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	delta
	.syntax unified
	.arm
	.fpu softvfp
	.type	delta, %function
delta:
	@ 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]
	mov	r3, r1
	strb	r3, [fp, #-33]
	ldr	r3, .L327
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L320
	ldr	r0, .L327+4
	bl	puts
	mov	r3, #0
	b	.L325
.L320:
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L322
.L324:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L323
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-33]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L323
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	sub	r3, fp, #24
	mov	r1, r2
	mov	r0, r3
	bl	add
.L323:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L322:
	ldr	r0, [fp, #-16]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	blt	.L324
	ldr	r3, [fp, #-24]
.L325:
	ldr	r2, .L327
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L326
	bl	__stack_chk_fail
.L326:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L328:
	.align	2
.L327:
	.word	.LC44
	.word	.LC43
	.size	delta, .-delta
	.section	.rodata
	.align	2
.LC45:
	.ascii	"eclosure function failed: nfa node is null\000"
	.align	2
.LC46:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	eclosure
	.syntax unified
	.arm
	.fpu softvfp
	.type	eclosure, %function
eclosure:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-56]
	ldr	r3, .L340
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L330
	ldr	r0, .L340+4
	bl	puts
	mov	r3, #0
	b	.L338
.L330:
	mov	r3, #0
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-24]
	sub	r3, fp, #44
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	push
	ldr	r1, [fp, #-24]
	sub	r2, fp, #36
	sub	r3, fp, #40
	mov	r0, r3
	bl	put
	sub	r3, fp, #48
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-44]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-32]
	b	.L332
.L337:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L333
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L334
.L336:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L335
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L335
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L335
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	get
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L335
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r1, r3
	sub	r2, fp, #36
	sub	r3, fp, #40
	mov	r0, r3
	bl	put
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	sub	r3, fp, #44
	mov	r1, r2
	mov	r0, r3
	bl	push
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	sub	r3, fp, #48
	mov	r1, r2
	mov	r0, r3
	bl	add
.L335:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L334:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	blt	.L336
.L333:
	sub	r3, fp, #44
	mov	r0, r3
	bl	pop
	ldr	r3, [fp, #-44]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-32]
.L332:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L337
	ldr	r3, [fp, #-48]
.L338:
	ldr	r2, .L340
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L339
	bl	__stack_chk_fail
.L339:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L341:
	.align	2
.L340:
	.word	.LC46
	.word	.LC45
	.size	eclosure, .-eclosure
	.section	.rodata
	.align	2
.LC47:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	closure
	.syntax unified
	.arm
	.fpu softvfp
	.type	closure, %function
closure:
	@ 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]
	ldr	r3, .L352
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L343
	mov	r3, #0
	b	.L350
.L343:
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #1
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L345
.L349:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-48]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	eclosure
	str	r0, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L346
.L348:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, r2
	bl	get
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L347
	sub	r3, fp, #44
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-16]
	ldr	r1, [r3]
	sub	r2, fp, #36
	sub	r3, fp, #40
	mov	r0, r3
	bl	put
.L347:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L346:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	blt	.L348
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L345:
	ldr	r0, [fp, #-48]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-32]
	cmp	r3, r2
	blt	.L349
	ldr	r3, [fp, #-44]
.L350:
	ldr	r2, .L352
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L351
	bl	__stack_chk_fail
.L351:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L353:
	.align	2
.L352:
	.word	.LC47
	.size	closure, .-closure
	.section	.rodata
	.align	2
.LC48:
	.ascii	"print dfa node failed: node is null\000"
	.align	2
.LC49:
	.ascii	"%d(%d)->\000"
	.align	2
.LC50:
	.ascii	"epsilon->\000"
	.align	2
.LC51:
	.ascii	"%c->\000"
	.align	2
.LC52:
	.ascii	"%d(%d)\012\000"
	.text
	.align	2
	.global	printFANode
	.syntax unified
	.arm
	.fpu softvfp
	.type	printFANode, %function
printFANode:
	@ 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]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L355
	ldr	r0, .L361
	bl	puts
	b	.L354
.L355:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L357
.L360:
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	mov	r2, r3
	ldr	r0, .L361+4
	bl	printf
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L358
	ldr	r0, .L361+8
	bl	printf
	b	.L359
.L358:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L361+12
	bl	printf
.L359:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r1, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	mov	r2, r3
	ldr	r0, .L361+16
	bl	printf
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L357:
	ldr	r0, [fp, #-16]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	blt	.L360
.L354:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L362:
	.align	2
.L361:
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.word	.LC51
	.word	.LC52
	.size	printFANode, .-printFANode
	.section	.rodata
	.align	2
.LC53:
	.ascii	"iterate nfa failed: nfa is null\000"
	.align	2
.LC54:
	.ascii	"start=%d, end=%d\012\000"
	.align	2
.LC55:
	.ascii	"%d->\000"
	.align	2
.LC56:
	.ascii	"%d\012\000"
	.align	2
.LC57:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	iterateNFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	iterateNFA, %function
iterateNFA:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-56]
	ldr	r3, .L374
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L364
	ldr	r0, .L374+4
	bl	puts
	b	.L363
.L364:
	ldr	r3, [fp, #-56]
	ldr	r3, [r3]
	ldr	r1, [r3]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #4]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r0, .L374+8
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3]
	str	r3, [fp, #-28]
	sub	r3, fp, #48
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	push
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-36]
	mov	r3, #1
	str	r3, [fp, #-40]
	b	.L366
.L372:
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L367
.L371:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L374+12
	bl	printf
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L368
	ldr	r0, .L374+16
	bl	printf
	b	.L369
.L368:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L374+20
	bl	printf
.L369:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L374+24
	bl	printf
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L370
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L370
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	get
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L370
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r1, r3
	sub	r2, fp, #40
	sub	r3, fp, #44
	mov	r0, r3
	bl	put
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	sub	r3, fp, #48
	mov	r1, r2
	mov	r0, r3
	bl	push
.L370:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L367:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-32]
	cmp	r3, r2
	blt	.L371
	sub	r3, fp, #48
	mov	r0, r3
	bl	pop
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-36]
.L366:
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bne	.L372
.L363:
	ldr	r3, .L374
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L373
	bl	__stack_chk_fail
.L373:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L375:
	.align	2
.L374:
	.word	.LC57
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC50
	.word	.LC51
	.word	.LC56
	.size	iterateNFA, .-iterateNFA
	.section	.rodata
	.align	2
.LC58:
	.ascii	"%d(\000"
	.align	2
.LC59:
	.ascii	"->\000"
	.text
	.align	2
	.global	printDFANode
	.syntax unified
	.arm
	.fpu softvfp
	.type	printDFANode, %function
printDFANode:
	@ 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]
	str	r1, [fp, #-36]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L383
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L384
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L379
.L380:
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-36]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L384+4
	bl	printf
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L379:
	ldr	r0, [fp, #-36]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	blt	.L380
	mov	r0, #41
	bl	putchar
	ldr	r0, .L384+8
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L381
.L382:
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	putchar
	ldr	r0, .L384+8
	bl	printf
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L384
	bl	printf
	mov	r0, #41
	bl	putchar
	mov	r0, #10
	bl	putchar
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L381:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	blt	.L382
	mov	r0, #10
	bl	putchar
	b	.L376
.L383:
	nop
.L376:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L385:
	.align	2
.L384:
	.word	.LC58
	.word	.LC9
	.word	.LC59
	.size	printDFANode, .-printDFANode
	.align	2
	.global	updateFANode
	.syntax unified
	.arm
	.fpu softvfp
	.type	updateFANode, %function
updateFANode:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L393
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L393
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L390
.L392:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	cmp	r3, #1
	bne	.L391
	ldr	r3, [fp, #-16]
	mov	r2, #1
	str	r2, [r3, #8]
	b	.L386
.L391:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L390:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-12]
	cmp	r3, r2
	blt	.L392
	b	.L386
.L393:
	nop
.L386:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	updateFANode, .-updateFANode
	.section	.rodata
	.align	2
.LC60:
	.ascii	"nfa to dfa failed: nfa is null\000"
	.align	2
.LC61:
	.ascii	"%c has found the right dfa state\012\000"
	.align	2
.LC62:
	.ascii	"nfa to dfa failed: no end state in DFA\000"
	.align	2
.LC63:
	.ascii	"size of dfa ends array is %d\012\000"
	.align	2
.LC64:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	nfa2DFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	nfa2DFA, %function
nfa2DFA:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #184
	str	r0, [fp, #-184]
	ldr	r3, .L434
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-184]
	cmp	r3, #0
	bne	.L395
	ldr	r0, .L434+4
	bl	puts
	mov	r3, #0
	b	.L430
.L395:
	mov	r3, #0
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-184]
	ldr	r3, [r3]
	str	r3, [fp, #-104]
	ldr	r0, [fp, #-104]
	bl	eclosure
	str	r0, [fp, #-100]
	ldr	r0, [fp, #-100]
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-100]
	bl	quicksortEx
	mov	r3, #0
	str	r3, [fp, #-180]
	ldr	r3, [fp, #-144]
	add	r2, r3, #1
	str	r2, [fp, #-144]
	mov	r2, r3
	mov	r1, #0
	mov	r0, #0
	bl	initFANode
	str	r0, [fp, #-96]
	mov	r1, #0
	ldr	r0, [fp, #-96]
	bl	initFA
	str	r0, [fp, #-92]
	ldr	r3, [fp, #-96]
	str	r3, [fp, #-88]
	mov	r3, #0
	str	r3, [fp, #-84]
	mov	r3, #0
	str	r3, [fp, #-80]
	mov	r3, #0
	str	r3, [fp, #-176]
	mov	r3, #0
	str	r3, [fp, #-172]
	sub	r3, fp, #172
	ldr	r1, [fp, #-88]
	mov	r0, r3
	bl	add
	sub	r3, fp, #176
	ldr	r1, [fp, #-100]
	mov	r0, r3
	bl	add
	mov	r3, #0
	str	r3, [fp, #-140]
	ldr	r3, [fp, #-176]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-136]
	mov	r3, #0
	str	r3, [fp, #-168]
	mov	r3, #1
	str	r3, [fp, #-164]
	mov	r3, #0
	str	r3, [fp, #-160]
.L428:
	ldr	r2, [fp, #-140]
	ldr	r3, [fp, #-136]
	cmp	r2, r3
	blt	.L397
	ldr	r2, [fp, #-168]
	ldr	r3, [fp, #-92]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-180]
	cmp	r3, #0
	beq	.L398
	b	.L432
.L397:
	ldr	r3, [fp, #-176]
	ldr	r1, [fp, #-140]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-172]
	ldr	r1, [fp, #-140]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-88]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-88]
	bl	updateFANode
	ldr	r3, [fp, #-88]
	ldr	r3, [r3, #8]
	cmp	r3, #1
	bne	.L400
	sub	r3, fp, #180
	ldr	r1, [fp, #-88]
	mov	r0, r3
	bl	add
.L400:
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r3, #0
	str	r3, [fp, #-152]
	mov	r3, #0
	str	r3, [fp, #-132]
	b	.L401
.L427:
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-76]
	bl	getByIndex
	str	r0, [fp, #-72]
	ldr	r3, [fp, #-72]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-68]
	mov	r3, #0
	str	r3, [fp, #-128]
	b	.L402
.L426:
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-68]
	bl	getByIndex
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L433
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #96
	bls	.L433
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #122
	bhi	.L433
	ldr	r2, [fp, #-160]
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	get
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L406
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	sub	r2, fp, #164
	sub	r3, fp, #160
	mov	r0, r3
	bl	put
	mov	r0, #1
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-60]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-52]
	strb	r2, [r3]
	sub	r3, fp, #168
	ldr	r1, [fp, #-52]
	mov	r0, r3
	bl	add
.L406:
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-72]
	bl	delta
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	closure
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-44]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L405
	ldr	r0, [fp, #-44]
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-44]
	bl	quicksortEx
	ldr	r2, [fp, #-156]
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	get
	mov	r3, r0
	str	r3, [fp, #-148]
	ldr	r3, [fp, #-148]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	bne	.L407
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	sub	r3, fp, #156
	ldr	r2, [fp, #-44]
	mov	r0, r3
	bl	put
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-148]
	mov	r3, #0
	str	r3, [fp, #-116]
	b	.L416
.L407:
	mov	r3, #0
	str	r3, [fp, #-124]
	mov	r3, #0
	str	r3, [fp, #-120]
	b	.L409
.L413:
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-44]
	bl	getByIndex
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-148]
	ldr	r1, [fp, #-120]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-40]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L410
	ldr	r3, [fp, #-124]
	add	r3, r3, #1
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-120]
	add	r3, r3, #1
	str	r3, [fp, #-120]
	b	.L409
.L410:
	ldr	r3, [fp, #-40]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	cmp	r2, r3
	bge	.L411
	sub	r3, fp, #148
	ldr	r2, [fp, #-120]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	addByIndex
	ldr	r3, [fp, #-124]
	add	r3, r3, #1
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-120]
	add	r3, r3, #1
	str	r3, [fp, #-120]
	b	.L409
.L411:
	ldr	r3, [fp, #-120]
	add	r3, r3, #1
	str	r3, [fp, #-120]
.L409:
	ldr	r0, [fp, #-44]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-124]
	cmp	r3, r2
	bge	.L414
	ldr	r3, [fp, #-148]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-120]
	cmp	r3, r2
	blt	.L413
	b	.L414
.L415:
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-44]
	bl	getByIndex
	str	r0, [fp, #-32]
	sub	r3, fp, #148
	ldr	r1, [fp, #-32]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-124]
	add	r3, r3, #1
	str	r3, [fp, #-124]
.L414:
	ldr	r0, [fp, #-44]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-124]
	cmp	r3, r2
	blt	.L415
	b	.L405
.L423:
	ldr	r3, [fp, #-176]
	ldr	r1, [fp, #-116]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-112]
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L417
.L420:
	ldr	r1, [fp, #-112]
	ldr	r0, [fp, #-28]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-148]
	ldr	r1, [fp, #-108]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L418
	ldr	r3, [fp, #-112]
	add	r3, r3, #1
	str	r3, [fp, #-112]
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
	b	.L417
.L418:
	ldr	r3, [fp, #-112]
	add	r3, r3, #1
	str	r3, [fp, #-112]
.L417:
	ldr	r0, [fp, #-28]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-112]
	cmp	r3, r2
	bge	.L419
	ldr	r3, [fp, #-148]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-108]
	cmp	r3, r2
	blt	.L420
.L419:
	ldr	r3, [fp, #-148]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-108]
	cmp	r3, r2
	bne	.L421
	ldr	r3, [fp, #-60]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L434+8
	bl	printf
	b	.L422
.L421:
	ldr	r3, [fp, #-116]
	add	r3, r3, #1
	str	r3, [fp, #-116]
.L416:
	ldr	r3, [fp, #-176]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-116]
	cmp	r3, r2
	blt	.L423
.L422:
	ldr	r0, [fp, #-60]
	bl	initFAEdge
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-176]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-116]
	cmp	r3, r2
	bne	.L424
	ldr	r2, [fp, #-148]
	sub	r3, fp, #176
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-144]
	add	r2, r3, #1
	str	r2, [fp, #-144]
	mov	r2, r3
	mov	r1, #0
	mov	r0, #0
	bl	initFANode
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #4]
	sub	r3, fp, #172
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-176]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-136]
	b	.L425
.L424:
	ldr	r3, [fp, #-172]
	ldr	r1, [fp, #-116]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #4]
.L425:
	sub	r3, fp, #152
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	add
	b	.L405
.L433:
	nop
.L405:
	ldr	r3, [fp, #-128]
	add	r3, r3, #1
	str	r3, [fp, #-128]
.L402:
	ldr	r0, [fp, #-68]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-128]
	cmp	r3, r2
	blt	.L426
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L401:
	ldr	r0, [fp, #-76]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-132]
	cmp	r3, r2
	blt	.L427
	ldr	r2, [fp, #-152]
	ldr	r3, [fp, #-88]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-140]
	add	r3, r3, #1
	str	r3, [fp, #-140]
	b	.L428
.L398:
	ldr	r0, .L434+12
	bl	puts
	b	.L429
.L432:
	ldr	r3, [fp, #-180]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L434+16
	bl	printf
.L429:
	ldr	r2, [fp, #-172]
	ldr	r3, [fp, #-92]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-92]
.L430:
	ldr	r2, .L434
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L431
	bl	__stack_chk_fail
.L431:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L435:
	.align	2
.L434:
	.word	.LC64
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.size	nfa2DFA, .-nfa2DFA
	.align	2
	.global	isMatch
	.syntax unified
	.arm
	.fpu softvfp
	.type	isMatch, %function
isMatch:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r0, [fp, #-40]
	bl	reg2NFA
	str	r0, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	nfa2DFA
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	minimalDFA
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-28]
	b	.L437
.L444:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L438
.L441:
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-12]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L439
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-32]
	b	.L440
.L439:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L438:
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	blt	.L441
.L440:
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	beq	.L448
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L437:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L444
	b	.L443
.L448:
	nop
.L443:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L445
	mov	r3, #48
	b	.L446
.L445:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L447
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	cmp	r3, #1
	bne	.L447
	mov	r3, #49
	b	.L446
.L447:
	mov	r3, #48
.L446:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	isMatch, .-isMatch
	.section	.rodata
	.align	2
.LC65:
	.ascii	"%d(%d)->%c->\000"
	.align	2
.LC66:
	.ascii	"epsilon\000"
	.align	2
.LC67:
	.ascii	"%d(%d)\000"
	.align	2
.LC68:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	iterateDFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	iterateDFA, %function
iterateDFA:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-56]
	ldr	r3, .L468
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L465
	mov	r3, #0
	str	r3, [fp, #-48]
	sub	r3, fp, #48
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	add
	mov	r3, #0
	str	r3, [fp, #-44]
.L463:
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-44]
	cmp	r3, r2
	bge	.L466
	ldr	r0, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r2, r3, #1
	str	r2, [fp, #-44]
	mov	r1, r3
	bl	getByIndex
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L454
.L462:
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-24]
	bl	getByIndex
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-28]
	ldr	r1, [r3]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r0, .L468+4
	bl	printf
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L455
	ldr	r0, .L468+8
	bl	printf
	b	.L456
.L455:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	mov	r2, r3
	ldr	r0, .L468+12
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L457
.L461:
	ldr	r3, [fp, #-48]
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r2, r3
	beq	.L467
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r2, r3
	ble	.L460
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-32]
	b	.L459
.L460:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L457:
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-36]
	cmp	r3, r2
	blt	.L461
	b	.L459
.L467:
	nop
.L459:
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-32]
	cmp	r3, r2
	bne	.L456
	sub	r3, fp, #48
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	addByIndex
.L456:
	mov	r0, #10
	bl	putchar
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L454:
	ldr	r0, [fp, #-24]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-40]
	cmp	r3, r2
	blt	.L462
	b	.L463
.L465:
	nop
	b	.L449
.L466:
	nop
.L449:
	ldr	r3, .L468
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L464
	bl	__stack_chk_fail
.L464:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L469:
	.align	2
.L468:
	.word	.LC68
	.word	.LC65
	.word	.LC66
	.word	.LC67
	.size	iterateDFA, .-iterateDFA
	.section	.rodata
	.align	2
.LC69:
	.ascii	"move function error: node is null\000"
	.text
	.align	2
	.global	move
	.syntax unified
	.arm
	.fpu softvfp
	.type	move, %function
move:
	@ 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, r1
	strb	r3, [fp, #-25]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L471
	ldr	r0, .L476
	bl	puts
	mov	r3, #0
	b	.L472
.L471:
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L473
.L475:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-25]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L474
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
.L474:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L473:
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	blt	.L475
	ldr	r3, [fp, #-20]
.L472:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L477:
	.align	2
.L476:
	.word	.LC69
	.size	move, .-move
	.align	2
	.global	compareTo
	.syntax unified
	.arm
	.fpu softvfp
	.type	compareTo, %function
compareTo:
	@ 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, [fp, #-32]
	cmp	r3, #0
	bne	.L479
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bne	.L479
	mov	r3, #49
	b	.L480
.L479:
	ldr	r0, [fp, #-32]
	bl	getSize
	mov	r4, r0
	ldr	r0, [fp, #-36]
	bl	getSize
	mov	r3, r0
	cmp	r4, r3
	beq	.L481
	mov	r3, #48
	b	.L480
.L481:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L482
.L485:
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-32]
	bl	getByIndex
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-36]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L487
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L482:
	ldr	r0, [fp, #-32]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	blt	.L485
	b	.L484
.L487:
	nop
.L484:
	ldr	r0, [fp, #-32]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r3, r2
	beq	.L486
	mov	r3, #48
	b	.L480
.L486:
	mov	r3, #49
.L480:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	compareTo, .-compareTo
	.section	.rodata
	.align	2
.LC70:
	.ascii	"---begin pring node array array--\000"
	.align	2
.LC71:
	.ascii	"node array is 0\000"
	.align	2
.LC72:
	.ascii	"node is null,\000"
	.align	2
.LC73:
	.ascii	"---end pring node array array--\000"
	.text
	.align	2
	.global	printNodeAryAry
	.syntax unified
	.arm
	.fpu softvfp
	.type	printNodeAryAry, %function
printNodeAryAry:
	@ 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]
	ldr	r0, .L497
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L489
.L496:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	getByIndex
	str	r0, [fp, #-12]
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	bne	.L490
	ldr	r0, .L497+4
	bl	puts
	b	.L491
.L490:
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L492
.L495:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	getByIndex
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L493
	ldr	r0, .L497+8
	bl	printf
	b	.L494
.L493:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L497+12
	bl	printf
.L494:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L492:
	ldr	r0, [fp, #-12]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	blt	.L495
	mov	r0, #10
	bl	putchar
.L491:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L489:
	ldr	r0, [fp, #-24]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	blt	.L496
	ldr	r0, .L497+16
	bl	puts
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L498:
	.align	2
.L497:
	.word	.LC70
	.word	.LC71
	.word	.LC72
	.word	.LC9
	.word	.LC73
	.size	printNodeAryAry, .-printNodeAryAry
	.section	.rodata
	.align	2
.LC74:
	.ascii	"mapper malloc failed\000"
	.align	2
.LC75:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	recursion
	.syntax unified
	.arm
	.fpu softvfp
	.type	recursion, %function
recursion:
	@ args = 0, pretend = 0, frame = 136
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #136
	str	r0, [fp, #-128]
	str	r1, [fp, #-132]
	str	r2, [fp, #-136]
	str	r3, [fp, #-140]
	ldr	r3, .L533
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-132]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-136]
	cmp	r3, r2
	bge	.L500
	ldr	r0, [fp, #-128]
	bl	getSize
	mov	r3, r0
	cmp	r3, #1
	bgt	.L501
.L500:
	mov	r3, #0
	str	r3, [fp, #-116]
	sub	r3, fp, #116
	ldr	r1, [fp, #-128]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-116]
	b	.L499
.L501:
	mov	r3, #0
	str	r3, [fp, #-124]
	mov	r3, #0
	str	r3, [fp, #-112]
	b	.L503
.L511:
	ldr	r1, [fp, #-136]
	ldr	r0, [fp, #-132]
	bl	getByIndex
	str	r0, [fp, #-32]
	ldr	r1, [fp, #-112]
	ldr	r0, [fp, #-128]
	bl	getByIndex
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	move
	str	r0, [fp, #-24]
	mov	r0, #8
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L504
	ldr	r0, .L533+4
	bl	puts
	b	.L499
.L504:
	mov	r3, #0
	str	r3, [fp, #-120]
	mov	r3, #0
	str	r3, [fp, #-116]
	sub	r3, fp, #120
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	add
	ldr	r2, [fp, #-120]
	ldr	r3, [fp, #-20]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L506
	sub	r3, fp, #116
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	add
	b	.L507
.L506:
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L508
.L510:
	ldr	r3, [fp, #-140]
	ldr	r1, [fp, #-108]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-16]
	bl	indexOf
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	blt	.L509
	sub	r3, fp, #116
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	add
	b	.L507
.L509:
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L508:
	ldr	r3, [fp, #-140]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-108]
	cmp	r3, r2
	blt	.L510
.L507:
	ldr	r2, [fp, #-116]
	ldr	r3, [fp, #-20]
	str	r2, [r3, #4]
	sub	r3, fp, #124
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-112]
	add	r3, r3, #1
	str	r3, [fp, #-112]
.L503:
	ldr	r0, [fp, #-128]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-112]
	cmp	r3, r2
	blt	.L511
	mov	r3, #0
	str	r3, [fp, #-104]
	ldr	r3, [fp, #-124]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-100]
	ldr	r3, [fp, #-100]
	str	r3, [fp, #-96]
	b	.L512
.L521:
	ldr	r3, [fp, #-124]
	ldr	r1, [fp, #-104]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-92]
	b	.L513
.L520:
	ldr	r3, [fp, #-124]
	ldr	r1, [fp, #-92]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	bne	.L514
	ldr	r3, [fp, #-52]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	bne	.L514
	ldr	r3, [fp, #-56]
	ldr	r3, [r3]
	str	r3, [fp, #-116]
	ldr	r3, [fp, #-52]
	ldr	r2, [r3]
	sub	r3, fp, #116
	mov	r1, r2
	mov	r0, r3
	bl	addAll
	ldr	r3, [fp, #-124]
	ldr	r1, [fp, #-92]
	mov	r0, r3
	bl	removeByIndex
	ldr	r3, [fp, #-124]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-100]
	ldr	r3, [fp, #-100]
	str	r3, [fp, #-96]
	b	.L513
.L514:
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L515
	ldr	r3, [fp, #-52]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L515
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-44]
	mov	r1, #0
	ldr	r0, [fp, #-48]
	bl	getByIndex
	str	r0, [fp, #-40]
	mov	r1, #0
	ldr	r0, [fp, #-44]
	bl	getByIndex
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L516
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L517
.L516:
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L518
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L518
	ldr	r3, [fp, #-40]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L518
.L517:
	ldr	r3, [fp, #-56]
	ldr	r3, [r3]
	str	r3, [fp, #-116]
	ldr	r3, [fp, #-52]
	ldr	r2, [r3]
	sub	r3, fp, #116
	mov	r1, r2
	mov	r0, r3
	bl	addAll
	ldr	r3, [fp, #-124]
	ldr	r1, [fp, #-92]
	mov	r0, r3
	bl	removeByIndex
	ldr	r3, [fp, #-124]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-100]
	ldr	r3, [fp, #-100]
	str	r3, [fp, #-96]
	b	.L519
.L518:
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L519:
	b	.L513
.L515:
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L513:
	ldr	r2, [fp, #-92]
	ldr	r3, [fp, #-96]
	cmp	r2, r3
	blt	.L520
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-104]
.L512:
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-100]
	cmp	r2, r3
	blt	.L521
	mov	r3, #0
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-124]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #1
	ble	.L522
	mov	r3, #0
	str	r3, [fp, #-104]
	b	.L523
.L526:
	ldr	r3, [fp, #-140]
	ldr	r1, [fp, #-104]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-84]
	mov	r1, #0
	ldr	r0, [fp, #-128]
	bl	getByIndex
	str	r0, [fp, #-80]
	mov	r1, #0
	ldr	r0, [fp, #-84]
	bl	getByIndex
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-80]
	ldr	r2, [r3]
	ldr	r3, [fp, #-76]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L524
	ldr	r3, [fp, #-140]
	ldr	r1, [fp, #-104]
	mov	r0, r3
	bl	removeByIndex
	b	.L525
.L524:
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-104]
.L523:
	ldr	r3, [fp, #-140]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-104]
	cmp	r3, r2
	blt	.L526
.L525:
	mov	r3, #0
	str	r3, [fp, #-104]
	b	.L527
.L528:
	ldr	r3, [fp, #-124]
	ldr	r1, [fp, #-104]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-88]
	ldr	r3, [fp, #-88]
	ldr	r3, [r3]
	str	r3, [fp, #-72]
	sub	r3, fp, #140
	ldr	r1, [fp, #-72]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-104]
.L527:
	ldr	r3, [fp, #-124]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-104]
	cmp	r3, r2
	blt	.L528
.L522:
	mov	r3, #0
	str	r3, [fp, #-116]
	mov	r3, #0
	str	r3, [fp, #-68]
	mov	r3, #0
	str	r3, [fp, #-104]
	b	.L529
.L530:
	ldr	r3, [fp, #-124]
	ldr	r1, [fp, #-104]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-64]
	ldr	r0, [r3]
	ldr	r3, [fp, #-136]
	add	r2, r3, #1
	ldr	r3, [fp, #-140]
	ldr	r1, [fp, #-132]
	bl	recursion
	mov	r2, r0
	sub	r3, fp, #116
	mov	r1, r2
	mov	r0, r3
	bl	addAll
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-104]
.L529:
	ldr	r3, [fp, #-124]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-104]
	cmp	r3, r2
	blt	.L530
	ldr	r3, [fp, #-116]
.L499:
	ldr	r2, .L533
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L532
	bl	__stack_chk_fail
.L532:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L534:
	.align	2
.L533:
	.word	.LC75
	.word	.LC74
	.size	recursion, .-recursion
	.section	.rodata
	.align	2
.LC76:
	.ascii	"minimal dfa error: alphabet is null\000"
	.align	2
.LC77:
	.ascii	"size of finalStateAry is %d, size of nonFinalStateA"
	.ascii	"ry is %d\012\000"
	.align	2
.LC78:
	.ascii	"---begin print removed ele---\000"
	.align	2
.LC79:
	.ascii	"---end print removed ele---\012\000"
	.align	2
.LC80:
	.ascii	")\000"
	.align	2
.LC81:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	minimalDFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	minimalDFA, %function
minimalDFA:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #76
	str	r0, [fp, #-80]
	ldr	r3, .L555
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-80]
	cmp	r3, #0
	beq	.L554
	mov	r3, #0
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-80]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-80]
	ldr	r3, [r3, #12]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L538
	ldr	r0, .L555+4
	bl	puts
	b	.L535
.L538:
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L539
.L542:
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-44]
	bl	getByIndex
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	beq	.L540
	sub	r3, fp, #72
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	add
	b	.L541
.L540:
	sub	r3, fp, #68
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	add
.L541:
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L539:
	ldr	r0, [fp, #-44]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-56]
	cmp	r3, r2
	blt	.L542
	ldr	r4, [fp, #-72]
	ldr	r3, [fp, #-72]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	mov	r2, r3
	mov	r1, #0
	mov	r0, r4
	bl	quicksortEx
	ldr	r4, [fp, #-68]
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	mov	r2, r3
	mov	r1, #0
	mov	r0, r4
	bl	quicksortEx
	mov	r3, #0
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-72]
	mov	r0, r3
	bl	getSize
	mov	r4, r0
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L555+8
	bl	printf
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L543
	ldr	r2, [fp, #-68]
	sub	r3, fp, #76
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r0, [fp, #-68]
	ldr	r3, [fp, #-76]
	mov	r2, #0
	ldr	r1, [fp, #-40]
	bl	recursion
	mov	r2, r0
	sub	r3, fp, #64
	mov	r1, r2
	mov	r0, r3
	bl	addAll
.L543:
	ldr	r3, [fp, #-72]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L544
	ldr	r2, [fp, #-72]
	sub	r3, fp, #76
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r0, [fp, #-72]
	ldr	r3, [fp, #-76]
	mov	r2, #0
	ldr	r1, [fp, #-40]
	bl	recursion
	mov	r2, r0
	sub	r3, fp, #64
	mov	r1, r2
	mov	r0, r3
	bl	addAll
.L544:
	mov	r3, #0
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-64]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L545
.L547:
	ldr	r3, [fp, #-64]
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-28]
	mov	r1, #0
	ldr	r0, [fp, #-28]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, r2
	bl	get
	mov	r3, r0
	cmp	r3, #0
	bne	.L546
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	sub	r3, fp, #60
	ldr	r2, [fp, #-28]
	mov	r0, r3
	bl	put
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
	b	.L545
.L546:
	ldr	r0, .L555+12
	bl	puts
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L555+16
	bl	printf
	ldr	r0, .L555+20
	bl	puts
	ldr	r3, [fp, #-64]
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	removeByIndex
	ldr	r3, [fp, #-64]
	mov	r0, r3
	bl	getSize
	str	r0, [fp, #-52]
.L545:
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	blt	.L547
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L548
.L551:
	ldr	r3, [fp, #-64]
	ldr	r1, [fp, #-56]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-36]
	mov	r0, #40
	bl	putchar
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L549
.L550:
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-36]
	bl	getByIndex
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L555+24
	bl	printf
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L549:
	ldr	r0, [fp, #-36]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-48]
	cmp	r3, r2
	blt	.L550
	ldr	r0, .L555+28
	bl	puts
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L548:
	ldr	r3, [fp, #-64]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-56]
	cmp	r3, r2
	blt	.L551
	mov	r0, #10
	bl	putchar
	ldr	r3, [fp, #-64]
	mov	r0, r3
	bl	mergeDFA
	b	.L535
.L554:
	nop
.L535:
	ldr	r3, .L555
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L553
	bl	__stack_chk_fail
.L553:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L556:
	.align	2
.L555:
	.word	.LC81
	.word	.LC76
	.word	.LC77
	.word	.LC78
	.word	.LC56
	.word	.LC79
	.word	.LC9
	.word	.LC80
	.size	minimalDFA, .-minimalDFA
	.section	.rodata
	.align	2
.LC82:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	mergeDFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	mergeDFA, %function
mergeDFA:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #88
	str	r0, [fp, #-88]
	ldr	r3, .L586
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, [fp, #-88]
	bl	getSize
	mov	r3, r0
	cmp	r3, #0
	beq	.L583
	mov	r3, #0
	str	r3, [fp, #-84]
	mov	r3, #0
	str	r3, [fp, #-80]
	b	.L560
.L571:
	ldr	r1, [fp, #-80]
	ldr	r0, [fp, #-88]
	bl	getByIndex
	str	r0, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L561
.L570:
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-28]
	bl	getByIndex
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	bne	.L562
	sub	r3, fp, #84
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-72]
	b	.L563
.L569:
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-20]
	bl	getByIndex
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	mvn	r3, #0
	str	r3, [fp, #-64]
	mov	r3, #0
	str	r3, [fp, #-60]
	mov	r3, #0
	str	r3, [fp, #-68]
	b	.L564
.L567:
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-88]
	bl	getByIndex
	str	r0, [fp, #-60]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-60]
	bl	indexOf
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	bge	.L584
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	str	r3, [fp, #-68]
.L564:
	ldr	r0, [fp, #-88]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-68]
	cmp	r3, r2
	blt	.L567
	b	.L566
.L584:
	nop
.L566:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	ble	.L568
	mov	r1, #0
	ldr	r0, [fp, #-60]
	bl	getByIndex
	mov	r2, r0
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
.L568:
	ldr	r3, [fp, #-72]
	add	r3, r3, #1
	str	r3, [fp, #-72]
.L563:
	ldr	r0, [fp, #-20]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-72]
	cmp	r3, r2
	blt	.L569
.L562:
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L561:
	ldr	r0, [fp, #-28]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-76]
	cmp	r3, r2
	blt	.L570
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L560:
	ldr	r0, [fp, #-88]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-80]
	cmp	r3, r2
	blt	.L571
	mov	r3, #0
	str	r3, [fp, #-80]
	b	.L572
.L579:
	ldr	r1, [fp, #-80]
	ldr	r0, [fp, #-88]
	bl	getByIndex
	str	r0, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L573
.L578:
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L585
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-44]
	bl	getByIndex
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L576
.L577:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-36]
	bl	getByIndex
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-32]
	bl	free
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L576:
	ldr	r0, [fp, #-36]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-52]
	cmp	r3, r2
	blt	.L577
	ldr	r0, [fp, #-36]
	bl	free
	ldr	r0, [fp, #-40]
	bl	free
	b	.L575
.L585:
	nop
.L575:
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L573:
	ldr	r0, [fp, #-44]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-56]
	cmp	r3, r2
	blt	.L578
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L572:
	ldr	r0, [fp, #-88]
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-80]
	cmp	r3, r2
	blt	.L579
	mov	r3, #0
	str	r3, [fp, #-80]
	b	.L580
.L581:
	ldr	r3, [fp, #-84]
	ldr	r1, [fp, #-80]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	printFANode
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L580:
	ldr	r3, [fp, #-84]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-80]
	cmp	r3, r2
	blt	.L581
	mov	r0, #10
	bl	putchar
	b	.L557
.L583:
	nop
.L557:
	ldr	r3, .L586
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L582
	bl	__stack_chk_fail
.L582:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L587:
	.align	2
.L586:
	.word	.LC82
	.size	mergeDFA, .-mergeDFA
	.section	.rodata
	.align	2
.LC83:
	.ascii	"if|else|then\000"
	.text
	.align	2
	.global	testFA
	.syntax unified
	.arm
	.fpu softvfp
	.type	testFA, %function
testFA:
	@ 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, .L589
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-12]
	bl	reg2NFAEx
	str	r0, [fp, #-8]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L590:
	.align	2
.L589:
	.word	.LC83
	.size	testFA, .-testFA
	.section	.rodata
	.align	2
.LC0:
	.word	4
	.word	5
	.word	6
	.word	9
	.word	3
	.word	23
	.word	4
	.word	67
	.word	8
	.word	9
	.word	10
	.align	2
.LC1:
	.word	1
	.word	9
	.word	87
	.align	2
.LC84:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	testArray
	.syntax unified
	.arm
	.fpu softvfp
	.type	testArray, %function
testArray:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	ldr	r3, .L599
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L599+4
	sub	ip, fp, #52
	mov	lr, 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	r2, .L599+8
	sub	r3, fp, #64
	ldm	r2, {r0, r1, r2}
	stm	r3, {r0, r1, r2}
	mov	r3, #11
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-84]
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L592
.L593:
	sub	r2, fp, #52
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #2
	add	r2, r2, r3
	sub	r3, fp, #84
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L592:
	ldr	r2, [fp, #-76]
	ldr	r3, [fp, #-72]
	cmp	r2, r3
	blt	.L593
	mov	r3, #3
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-80]
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L594
.L595:
	sub	r2, fp, #64
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #2
	add	r2, r2, r3
	sub	r3, fp, #80
	mov	r1, r2
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L594:
	ldr	r2, [fp, #-76]
	ldr	r3, [fp, #-72]
	cmp	r2, r3
	blt	.L595
	ldr	r2, [fp, #-80]
	sub	r3, fp, #84
	mov	r1, r2
	mov	r0, r3
	bl	addAll
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L596
.L597:
	ldr	r3, [fp, #-84]
	ldr	r1, [fp, #-76]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-68]
	ldr	r3, [fp, #-68]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L599+12
	bl	printf
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L596:
	ldr	r3, [fp, #-84]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-76]
	cmp	r3, r2
	blt	.L597
	mov	r0, #10
	bl	putchar
	nop
	ldr	r3, .L599
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L598
	bl	__stack_chk_fail
.L598:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L600:
	.align	2
.L599:
	.word	.LC84
	.word	.LC0
	.word	.LC1
	.word	.LC9
	.size	testArray, .-testArray
	.section	.rodata
	.align	2
.LC85:
	.ascii	"b*.c*..*.b*b*.*c*\000"
	.align	2
.LC86:
	.ascii	"bcaccbbacbcbcab\000"
	.align	2
.LC87:
	.ascii	"result=%c\012\000"
	.text
	.align	2
	.global	test
	.syntax unified
	.arm
	.fpu softvfp
	.type	test, %function
test:
	@ 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, .L602
	str	r3, [fp, #-12]
	ldr	r3, .L602+4
	str	r3, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	isMatch
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L602+8
	bl	printf
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L603:
	.align	2
.L602:
	.word	.LC85
	.word	.LC86
	.word	.LC87
	.size	test, .-test
	.section	.rodata
	.align	2
.LC88:
	.ascii	"cabfe"
	.align	2
.LC89:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	testQuicksort
	.syntax unified
	.arm
	.fpu softvfp
	.type	testQuicksort, %function
testQuicksort:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	ldr	r3, .L610
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r2, .L610+4
	sub	r3, fp, #24
	ldm	r2, {r0, r1}
	str	r0, [r3]
	add	r3, r3, #4
	strb	r1, [r3]
	mov	r3, #5
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L605
.L606:
	sub	r2, fp, #24
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	mov	r0, r3
	bl	initFAEdge
	str	r0, [fp, #-28]
	sub	r3, fp, #44
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L605:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	blt	.L606
	ldr	r4, [fp, #-44]
	ldr	r3, [fp, #-44]
	mov	r0, r3
	bl	getSize
	mov	r3, r0
	sub	r3, r3, #1
	mov	r2, r3
	mov	r1, #0
	mov	r0, r4
	bl	quicksort
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L607
.L608:
	ldr	r3, [fp, #-44]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L610+8
	bl	printf
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L607:
	ldr	r3, [fp, #-44]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-40]
	cmp	r3, r2
	blt	.L608
	mov	r0, #10
	bl	putchar
	nop
	ldr	r3, .L610
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L609
	bl	__stack_chk_fail
.L609:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L611:
	.align	2
.L610:
	.word	.LC89
	.word	.LC88
	.word	.LC27
	.size	testQuicksort, .-testQuicksort
	.section	.rodata
	.align	2
.LC2:
	.word	7
	.word	57
	.align	2
.LC3:
	.word	2
	.word	3
	.word	4
	.word	8
	.word	10
	.word	12
	.word	14
	.word	16
	.word	18
	.word	20
	.word	22
	.word	24
	.word	26
	.word	28
	.word	30
	.word	32
	.word	34
	.word	36
	.word	38
	.word	40
	.word	42
	.word	44
	.word	46
	.word	48
	.word	50
	.word	52
	.word	54
	.word	56
	.word	58
	.align	2
.LC90:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	testMerge
	.syntax unified
	.arm
	.fpu softvfp
	.type	testMerge, %function
testMerge:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #184
	ldr	r3, .L627
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r2, .L627+4
	sub	r3, fp, #132
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	ldr	r2, .L627+8
	sub	r3, fp, #124
	mov	r1, r2
	mov	r2, #116
	mov	r0, r3
	bl	memcpy
	mov	r3, #29
	str	r3, [fp, #-164]
	mov	r3, #2
	str	r3, [fp, #-160]
	mov	r3, #0
	str	r3, [fp, #-184]
	mov	r3, #0
	str	r3, [fp, #-180]
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L613
.L614:
	mov	r1, #12
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-136]
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-120]
	ldr	r3, [fp, #-136]
	str	r2, [r3]
	sub	r3, fp, #184
	ldr	r1, [fp, #-136]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L613:
	ldr	r2, [fp, #-176]
	ldr	r3, [fp, #-164]
	cmp	r2, r3
	blt	.L614
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L615
.L616:
	mov	r1, #12
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-140]
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-128]
	ldr	r3, [fp, #-140]
	str	r2, [r3]
	sub	r3, fp, #180
	ldr	r1, [fp, #-140]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L615:
	ldr	r2, [fp, #-176]
	ldr	r3, [fp, #-160]
	cmp	r2, r3
	blt	.L616
	mov	r3, #0
	str	r3, [fp, #-172]
	mov	r3, #0
	str	r3, [fp, #-168]
	b	.L617
.L621:
	ldr	r3, [fp, #-184]
	ldr	r1, [fp, #-172]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-156]
	ldr	r3, [fp, #-180]
	ldr	r1, [fp, #-168]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-152]
	ldr	r3, [fp, #-156]
	ldr	r2, [r3]
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L618
	ldr	r3, [fp, #-172]
	add	r3, r3, #1
	str	r3, [fp, #-172]
	ldr	r3, [fp, #-168]
	add	r3, r3, #1
	str	r3, [fp, #-168]
	b	.L617
.L618:
	ldr	r3, [fp, #-156]
	ldr	r2, [r3]
	ldr	r3, [fp, #-152]
	ldr	r3, [r3]
	cmp	r2, r3
	bge	.L619
	sub	r3, fp, #180
	ldr	r2, [fp, #-168]
	ldr	r1, [fp, #-156]
	mov	r0, r3
	bl	addByIndex
	ldr	r3, [fp, #-172]
	add	r3, r3, #1
	str	r3, [fp, #-172]
	ldr	r3, [fp, #-168]
	add	r3, r3, #1
	str	r3, [fp, #-168]
	b	.L617
.L619:
	ldr	r3, [fp, #-168]
	add	r3, r3, #1
	str	r3, [fp, #-168]
.L617:
	ldr	r3, [fp, #-184]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-172]
	cmp	r3, r2
	bge	.L622
	ldr	r3, [fp, #-180]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-168]
	cmp	r3, r2
	blt	.L621
	b	.L622
.L623:
	ldr	r3, [fp, #-184]
	ldr	r1, [fp, #-172]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-144]
	sub	r3, fp, #180
	ldr	r1, [fp, #-144]
	mov	r0, r3
	bl	add
	ldr	r3, [fp, #-172]
	add	r3, r3, #1
	str	r3, [fp, #-172]
.L622:
	ldr	r3, [fp, #-184]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-172]
	cmp	r3, r2
	blt	.L623
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L624
.L625:
	ldr	r3, [fp, #-180]
	ldr	r1, [fp, #-176]
	mov	r0, r3
	bl	getByIndex
	str	r0, [fp, #-148]
	ldr	r3, [fp, #-148]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L627+12
	bl	printf
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L624:
	ldr	r3, [fp, #-180]
	mov	r0, r3
	bl	getSize
	mov	r2, r0
	ldr	r3, [fp, #-176]
	cmp	r3, r2
	blt	.L625
	mov	r0, #10
	bl	putchar
	nop
	ldr	r3, .L627
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L626
	bl	__stack_chk_fail
.L626:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L628:
	.align	2
.L627:
	.word	.LC90
	.word	.LC2
	.word	.LC3
	.word	.LC9
	.size	testMerge, .-testMerge
	.section	.rodata
	.align	2
.LC91:
	.ascii	"head is null\000"
	.align	2
.LC92:
	.ascii	"head is %d\012\000"
	.align	2
.LC93:
	.ascii	"tail is null\000"
	.align	2
.LC94:
	.ascii	"tail is %d\012\000"
	.align	2
.LC95:
	.ascii	"move is null\000"
	.align	2
.LC96:
	.ascii	"move is %d\012\000"
	.align	2
.LC4:
	.word	2
	.word	3
	.word	4
	.word	8
	.word	34
	.word	102
	.word	10
	.word	12
	.align	2
.LC97:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	testList
	.syntax unified
	.arm
	.fpu softvfp
	.type	testList, %function
testList:
	@ 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, .L645
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L645+4
	sub	ip, fp, #40
	mov	lr, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2, r3}
	stm	ip, {r0, r1, r2, r3}
	mov	r3, #0
	str	r3, [fp, #-68]
	mov	r3, #8
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-64]
	b	.L630
.L631:
	sub	r2, fp, #40
	ldr	r3, [fp, #-64]
	lsl	r3, r3, #2
	add	r2, r2, r3
	sub	r3, fp, #68
	mov	r1, r2
	mov	r0, r3
	bl	insert
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	str	r3, [fp, #-64]
.L630:
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	blt	.L631
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	next
	str	r0, [fp, #-60]
	b	.L632
.L633:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L645+8
	bl	printf
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	next
	str	r0, [fp, #-60]
.L632:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L633
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	getHead
	str	r0, [fp, #-60]
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L634
	ldr	r0, .L645+12
	bl	puts
	b	.L635
.L634:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L645+16
	bl	printf
.L635:
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	getTail
	str	r0, [fp, #-60]
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L636
	ldr	r0, .L645+20
	bl	puts
	b	.L637
.L636:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L645+24
	bl	printf
.L637:
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	beq	.L638
	ldr	r3, [fp, #-68]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L639
.L638:
	ldr	r0, .L645+28
	bl	puts
	b	.L640
.L639:
	ldr	r3, [fp, #-68]
	ldr	r3, [r3, #8]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L645+32
	bl	printf
.L640:
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	reset
	ldr	r3, [fp, #-68]
	cmp	r3, #0
	beq	.L641
	ldr	r3, [fp, #-68]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L642
.L641:
	ldr	r0, .L645+28
	bl	puts
	b	.L643
.L642:
	ldr	r3, [fp, #-68]
	ldr	r3, [r3, #8]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L645+32
	bl	printf
.L643:
	mov	r0, #10
	bl	putchar
	nop
	ldr	r3, .L645
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L644
	bl	__stack_chk_fail
.L644:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L646:
	.align	2
.L645:
	.word	.LC97
	.word	.LC4
	.word	.LC9
	.word	.LC91
	.word	.LC92
	.word	.LC93
	.word	.LC94
	.word	.LC95
	.word	.LC96
	.size	testList, .-testList
	.section	.rodata
	.align	2
.LC5:
	.word	4
	.word	3
	.word	2
	.word	5
	.word	6
	.word	4
	.word	3
	.word	4
	.word	656
	.word	78
	.word	5
	.word	3
	.word	1
	.align	2
.LC98:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	testQueue
	.syntax unified
	.arm
	.fpu softvfp
	.type	testQueue, %function
testQueue:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	ldr	r3, .L653
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-84]
	ldr	r3, .L653+4
	sub	ip, fp, #60
	mov	lr, 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}
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldr	r3, [lr]
	str	r3, [ip]
	mov	r3, #13
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-80]
	b	.L648
.L649:
	mov	r0, #4
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-64]
	sub	r2, fp, #60
	ldr	r3, [fp, #-80]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-64]
	str	r2, [r3]
	sub	r3, fp, #84
	ldr	r1, [fp, #-64]
	mov	r0, r3
	bl	pushStk
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L648:
	ldr	r2, [fp, #-80]
	ldr	r3, [fp, #-72]
	cmp	r2, r3
	blt	.L649
	ldr	r3, [fp, #-84]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-76]
	b	.L650
.L651:
	ldr	r3, [fp, #-76]
	ldr	r3, [r3]
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-68]
	ldr	r3, [r3]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L653+8
	bl	printf
	sub	r3, fp, #84
	mov	r0, r3
	bl	pop
	ldr	r3, [fp, #-84]
	mov	r0, r3
	bl	top
	str	r0, [fp, #-76]
.L650:
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	bne	.L651
	nop
	ldr	r3, .L653
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L652
	bl	__stack_chk_fail
.L652:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L654:
	.align	2
.L653:
	.word	.LC98
	.word	.LC5
	.word	.LC9
	.size	testQueue, .-testQueue
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	testFA
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
