	.file	"651380.c"
	.intel_syntax noprefix
	.text
	.globl	rom
	.bss
	.align 32
	.type	rom, @object
	.size	rom, 1048576
rom:
	.zero	1048576
	.globl	ram
	.align 32
	.type	ram, @object
	.size	ram, 1048576
ram:
	.zero	1048576
	.globl	vcdcount
	.align 4
	.type	vcdcount, @object
	.size	vcdcount, 4
vcdcount:
	.zero	4
	.globl	output_vcd
	.align 4
	.type	output_vcd, @object
	.size	output_vcd, 4
output_vcd:
	.zero	4
	.globl	fpvcd
	.align 8
	.type	fpvcd, @object
	.size	fpvcd, 8
fpvcd:
	.zero	8
	.globl	systick_ctrl
	.align 4
	.type	systick_ctrl, @object
	.size	systick_ctrl, 4
systick_ctrl:
	.zero	4
	.globl	systick_reload
	.align 4
	.type	systick_reload, @object
	.size	systick_reload, 4
systick_reload:
	.zero	4
	.globl	systick_count
	.align 4
	.type	systick_count, @object
	.size	systick_count, 4
systick_count:
	.zero	4
	.globl	systick_calibrate
	.align 4
	.type	systick_calibrate, @object
	.size	systick_calibrate, 4
systick_calibrate:
	.zero	4
	.globl	halfadd
	.align 4
	.type	halfadd, @object
	.size	halfadd, 4
halfadd:
	.zero	4
	.globl	cpsr
	.align 4
	.type	cpsr, @object
	.size	cpsr, 4
cpsr:
	.zero	4
	.globl	handler_mode
	.align 4
	.type	handler_mode, @object
	.size	handler_mode, 4
handler_mode:
	.zero	4
	.globl	reg_norm
	.align 32
	.type	reg_norm, @object
	.size	reg_norm, 64
reg_norm:
	.zero	64
	.globl	instructions
	.align 8
	.type	instructions, @object
	.size	instructions, 8
instructions:
	.zero	8
	.globl	fetches
	.align 8
	.type	fetches, @object
	.size	fetches, 8
fetches:
	.zero	8
	.globl	reads
	.align 8
	.type	reads, @object
	.size	reads, 8
reads:
	.zero	8
	.globl	writes
	.align 8
	.type	writes, @object
	.size	writes, 8
writes:
	.zero	8
	.globl	systick_ints
	.align 8
	.type	systick_ints, @object
	.size	systick_ints, 8
systick_ints:
	.zero	8
	.section	.rodata
.LC0:
	.string	"\n"
.LC1:
	.string	"instructions %lu\n"
.LC2:
	.string	"fetches      %lu\n"
.LC3:
	.string	"reads        %lu\n"
.LC4:
	.string	"writes       %lu\n"
.LC5:
	.string	"memcycles    %lu\n"
.LC6:
	.string	"systick_ints %lu\n"
	.text
	.globl	dump_counters
	.type	dump_counters, @function
dump_counters:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	rdi, .LC0[rip]
	call	puts@PLT
	mov	rax, QWORD PTR instructions[rip]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR fetches[rip]
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR reads[rip]
	mov	rsi, rax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR writes[rip]
	mov	rsi, rax
	lea	rdi, .LC4[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR fetches[rip]
	mov	rax, QWORD PTR reads[rip]
	add	rdx, rax
	mov	rax, QWORD PTR writes[rip]
	add	rax, rdx
	mov	rsi, rax
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR systick_ints[rip]
	mov	rsi, rax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	dump_counters, .-dump_counters
	.section	.rodata
	.align 8
.LC7:
	.string	"fetch16(0x%08X), abort pc = 0x%04X\n"
	.text
	.globl	fetch16
	.type	fetch16, @function
fetch16:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	rax, QWORD PTR fetches[rip]
	add	rax, 1
	mov	QWORD PTR fetches[rip], rax
	mov	eax, DWORD PTR -20[rbp]
	and	eax, -268435456
	test	eax, eax
	je	.L3
	cmp	eax, 1073741824
	je	.L4
	jmp	.L7
.L3:
	and	DWORD PTR -20[rbp], 1048575
	shr	DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, [rax+rax]
	lea	rax, rom[rip]
	movzx	eax, WORD PTR [rdx+rax]
	movzx	eax, ax
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L6
.L4:
	and	DWORD PTR -20[rbp], 1048575
	shr	DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, [rax+rax]
	lea	rax, ram[rip]
	movzx	eax, WORD PTR [rdx+rax]
	movzx	eax, ax
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L6
.L7:
	mov	edi, 15
	call	read_register
	mov	ecx, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -20[rbp]
	lea	rsi, .LC7[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L6:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	fetch16, .-fetch16
	.section	.rodata
	.align 8
.LC8:
	.string	"fetch32(0x%08X), abort pc = 0x%04X\n"
	.align 8
.LC9:
	.string	"fetch32(0x%08X), abort pc 0x%04X\n"
	.text
	.globl	fetch32
	.type	fetch32, @function
fetch32:
.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	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	and	eax, -268435456
	test	eax, eax
	je	.L9
	cmp	eax, 1073741824
	je	.L10
	jmp	.L16
.L9:
	cmp	DWORD PTR -20[rbp], 79
	ja	.L10
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	jne	.L12
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L13
.L12:
	cmp	DWORD PTR -20[rbp], 4
	jne	.L14
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L13
.L14:
	cmp	DWORD PTR -20[rbp], 60
	jne	.L15
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L13
.L15:
	mov	edi, 15
	call	read_register
	mov	ecx, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -20[rbp]
	lea	rsi, .LC8[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L10:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L13
.L16:
	mov	edi, 15
	call	read_register
	mov	ecx, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -20[rbp]
	lea	rsi, .LC9[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L13:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	fetch32, .-fetch32
	.section	.rodata
	.align 8
.LC10:
	.string	"write16(0x%08X,0x%04X), abort pc 0x%04X\n"
	.text
	.globl	write16
	.type	write16, @function
write16:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], edi
	mov	DWORD PTR -8[rbp], esi
	mov	rax, QWORD PTR writes[rip]
	add	rax, 1
	mov	QWORD PTR writes[rip], rax
	mov	eax, DWORD PTR -4[rbp]
	and	eax, -268435456
	cmp	eax, 1073741824
	jne	.L18
	and	DWORD PTR -4[rbp], 1048575
	shr	DWORD PTR -4[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, [rax+rax]
	lea	rax, ram[rip]
	mov	WORD PTR [rdx+rax], cx
	jmp	.L20
.L18:
	mov	edi, 15
	call	read_register
	mov	esi, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -8[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	r8d, esi
	lea	rsi, .LC10[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	write16, .-write16
	.section	.rodata
.LC11:
	.string	"%c"
.LC12:
	.string	"[0x%08X][0x%08X] 0x%08X\n"
.LC13:
	.string	"0x%08X "
.LC14:
	.string	"0x%08X\n"
	.align 8
.LC15:
	.string	"write32(0x%08X,0x%08X), abort pc 0x%04X\n"
	.text
	.globl	write32
	.type	write32, @function
write32:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	eax, DWORD PTR -20[rbp]
	and	eax, -268435456
	cmp	eax, -268435456
	je	.L22
	cmp	eax, -268435456
	ja	.L23
	cmp	eax, -536870912
	je	.L24
	cmp	eax, -536870912
	ja	.L23
	cmp	eax, 1073741824
	je	.L25
	cmp	eax, -805306368
	je	.L26
	jmp	.L23
.L22:
	call	dump_counters
	mov	edi, 0
	call	exit@PLT
.L24:
	cmp	DWORD PTR -20[rbp], -536870912
	je	.L27
	cmp	DWORD PTR -20[rbp], -536870912
	jb	.L41
	cmp	DWORD PTR -20[rbp], -536813536
	ja	.L41
	cmp	DWORD PTR -20[rbp], -536813552
	jb	.L41
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 536813552
	cmp	eax, 16
	ja	.L41
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L30[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L30[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L30:
	.long	.L34-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L33-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L32-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L31-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L41-.L30
	.long	.L29-.L30
	.text
.L27:
	mov	eax, DWORD PTR -24[rbp]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC11[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rdi, rax
	call	fflush@PLT
	jmp	.L28
.L34:
	mov	eax, DWORD PTR systick_ctrl[rip]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 65543
	mov	DWORD PTR systick_ctrl[rip], eax
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 1
	test	eax, eax
	jne	.L42
	mov	eax, DWORD PTR systick_ctrl[rip]
	and	eax, 1
	test	eax, eax
	je	.L42
	mov	eax, DWORD PTR systick_reload[rip]
	mov	DWORD PTR systick_count[rip], eax
	jmp	.L42
.L33:
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 16777215
	mov	DWORD PTR systick_reload[rip], eax
	jmp	.L28
.L32:
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 16777215
	mov	DWORD PTR systick_count[rip], eax
	jmp	.L28
.L31:
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 16777215
	mov	DWORD PTR systick_calibrate[rip], eax
	jmp	.L28
.L29:
	cmp	DWORD PTR -24[rbp], 0
	je	.L43
	mov	edi, 0
	call	exit@PLT
.L42:
	nop
	jmp	.L41
.L43:
	nop
.L28:
	jmp	.L41
.L26:
	mov	eax, DWORD PTR -20[rbp]
	movzx	eax, al
	cmp	eax, 32
	je	.L38
	cmp	eax, 32
	ja	.L25
	test	eax, eax
	je	.L39
	cmp	eax, 16
	je	.L40
	jmp	.L25
.L39:
	mov	edi, 14
	call	read_register
	mov	esi, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -24[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	r8d, ecx
	mov	ecx, edx
	mov	edx, esi
	lea	rsi, .LC12[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L21
.L40:
	mov	eax, DWORD PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L21
.L38:
	mov	eax, DWORD PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L21
.L25:
	mov	eax, DWORD PTR -24[rbp]
	movzx	edx, ax
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write16
	mov	eax, DWORD PTR -24[rbp]
	shr	eax, 16
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 2
	mov	esi, edx
	mov	edi, eax
	call	write16
	jmp	.L21
.L23:
	mov	edi, 15
	call	read_register
	mov	esi, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -24[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	r8d, esi
	lea	rsi, .LC15[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L41:
	nop
.L21:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	write32, .-write32
	.section	.rodata
	.align 8
.LC16:
	.string	"read16(0x%08X), abort pc 0x%04X\n"
	.text
	.globl	read16
	.type	read16, @function
read16:
.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	DWORD PTR -20[rbp], edi
	mov	rax, QWORD PTR reads[rip]
	add	rax, 1
	mov	QWORD PTR reads[rip], rax
	mov	eax, DWORD PTR -20[rbp]
	and	eax, -268435456
	test	eax, eax
	je	.L45
	cmp	eax, 1073741824
	je	.L46
	jmp	.L49
.L45:
	and	DWORD PTR -20[rbp], 1048575
	shr	DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, [rax+rax]
	lea	rax, rom[rip]
	movzx	eax, WORD PTR [rdx+rax]
	movzx	eax, ax
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L48
.L46:
	and	DWORD PTR -20[rbp], 1048575
	shr	DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, [rax+rax]
	lea	rax, ram[rip]
	movzx	eax, WORD PTR [rdx+rax]
	movzx	eax, ax
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L48
.L49:
	mov	edi, 15
	call	read_register
	mov	ecx, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -20[rbp]
	lea	rsi, .LC16[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L48:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	read16, .-read16
	.section	.rodata
	.align 8
.LC17:
	.string	"read32(0x%08X), abort pc 0x%04X\n"
	.text
	.globl	read32
	.type	read32, @function
read32:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	and	eax, -268435456
	cmp	eax, -536870912
	je	.L51
	cmp	eax, -536870912
	ja	.L52
	test	eax, eax
	je	.L53
	cmp	eax, 1073741824
	jne	.L52
.L53:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read16
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 2
	mov	edi, eax
	call	read16
	sal	eax, 16
	or	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L54
.L51:
	cmp	DWORD PTR -20[rbp], -536813540
	je	.L55
	cmp	DWORD PTR -20[rbp], -536813540
	ja	.L52
	cmp	DWORD PTR -20[rbp], -536813544
	je	.L56
	cmp	DWORD PTR -20[rbp], -536813544
	ja	.L52
	cmp	DWORD PTR -20[rbp], -536813548
	je	.L57
	cmp	DWORD PTR -20[rbp], -536813548
	ja	.L52
	cmp	DWORD PTR -20[rbp], -536870912
	je	.L58
	cmp	DWORD PTR -20[rbp], -536813552
	je	.L59
	jmp	.L52
.L58:
	mov	rax, QWORD PTR stdin[rip]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L60
	mov	edi, 0
	call	exit@PLT
.L60:
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L54
.L59:
	mov	eax, DWORD PTR systick_ctrl[rip]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR systick_ctrl[rip]
	and	eax, -65537
	mov	DWORD PTR systick_ctrl[rip], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L54
.L57:
	mov	eax, DWORD PTR systick_reload[rip]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L54
.L56:
	mov	eax, DWORD PTR systick_count[rip]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L54
.L55:
	mov	eax, DWORD PTR systick_calibrate[rip]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L54
.L52:
	mov	edi, 15
	call	read_register
	mov	ecx, eax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -20[rbp]
	lea	rsi, .LC17[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L54:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	read32, .-read32
	.section	.rodata
.LC18:
	.string	"pc has lsbit set 0x%08X\n"
	.text
	.globl	read_register
	.type	read_register, @function
read_register:
.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	DWORD PTR -20[rbp], edi
	and	DWORD PTR -20[rbp], 15
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, reg_norm[rip]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -20[rbp], 15
	jne	.L62
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 1
	test	eax, eax
	je	.L63
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -4[rbp]
	lea	rsi, .LC18[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L63:
	and	DWORD PTR -4[rbp], -2
.L62:
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	read_register, .-read_register
	.section	.rodata
.LC19:
	.string	" r%u\n"
	.text
	.globl	write_register
	.type	write_register, @function
write_register:
.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	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	and	DWORD PTR -20[rbp], 15
	cmp	DWORD PTR -20[rbp], 15
	jne	.L66
	and	DWORD PTR -24[rbp], -2
.L66:
	mov	eax, DWORD PTR -20[rbp]
	lea	rcx, 0[0+rax*4]
	lea	rdx, reg_norm[rip]
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR [rcx+rdx], eax
	mov	eax, DWORD PTR output_vcd[rip]
	test	eax, eax
	je	.L72
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rsi, rax
	mov	edi, 98
	call	fputc@PLT
	mov	DWORD PTR -4[rbp], -2147483648
	jmp	.L68
.L71:
	mov	eax, DWORD PTR -4[rbp]
	and	eax, DWORD PTR -24[rbp]
	test	eax, eax
	je	.L69
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rsi, rax
	mov	edi, 49
	call	fputc@PLT
	jmp	.L70
.L69:
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rsi, rax
	mov	edi, 48
	call	fputc@PLT
.L70:
	shr	DWORD PTR -4[rbp]
.L68:
	cmp	DWORD PTR -4[rbp], 0
	jne	.L71
	mov	rax, QWORD PTR fpvcd[rip]
	mov	edx, DWORD PTR -20[rbp]
	lea	rsi, .LC19[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L72:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	write_register, .-write_register
	.globl	do_zflag
	.type	do_zflag, @function
do_zflag:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	cmp	DWORD PTR -4[rbp], 0
	jne	.L74
	mov	eax, DWORD PTR cpsr[rip]
	or	eax, 1073741824
	mov	DWORD PTR cpsr[rip], eax
	jmp	.L76
.L74:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, -1073741825
	mov	DWORD PTR cpsr[rip], eax
.L76:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	do_zflag, .-do_zflag
	.globl	do_nflag
	.type	do_nflag, @function
do_nflag:
.LFB16:
	.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	eax, DWORD PTR -4[rbp]
	test	eax, eax
	jns	.L78
	mov	eax, DWORD PTR cpsr[rip]
	or	eax, -2147483648
	mov	DWORD PTR cpsr[rip], eax
	jmp	.L80
.L78:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 2147483647
	mov	DWORD PTR cpsr[rip], eax
.L80:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	do_nflag, .-do_nflag
	.globl	do_cflag
	.type	do_cflag, @function
do_cflag:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	DWORD PTR -28[rbp], edx
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, -536870913
	mov	DWORD PTR cpsr[rip], eax
	mov	eax, DWORD PTR -20[rbp]
	and	eax, 2147483647
	mov	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 2147483647
	add	edx, eax
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	shr	eax, 31
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	shr	eax, 31
	add	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	shr	eax, 31
	add	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	and	eax, 2
	test	eax, eax
	je	.L83
	mov	eax, DWORD PTR cpsr[rip]
	or	eax, 536870912
	mov	DWORD PTR cpsr[rip], eax
.L83:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	do_cflag, .-do_cflag
	.globl	do_vflag
	.type	do_vflag, @function
do_vflag:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	DWORD PTR -28[rbp], edx
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, -268435457
	mov	DWORD PTR cpsr[rip], eax
	mov	eax, DWORD PTR -20[rbp]
	and	eax, 2147483647
	mov	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 2147483647
	add	edx, eax
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	mov	DWORD PTR -8[rbp], eax
	shr	DWORD PTR -8[rbp], 31
	mov	eax, DWORD PTR -8[rbp]
	and	eax, 1
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	shr	eax, 31
	add	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	shr	eax, 31
	add	eax, edx
	mov	DWORD PTR -4[rbp], eax
	shr	DWORD PTR -4[rbp]
	mov	eax, DWORD PTR -8[rbp]
	xor	eax, DWORD PTR -4[rbp]
	and	eax, 1
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	je	.L86
	mov	eax, DWORD PTR cpsr[rip]
	or	eax, 268435456
	mov	DWORD PTR cpsr[rip], eax
.L86:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	do_vflag, .-do_vflag
	.globl	do_cflag_bit
	.type	do_cflag_bit, @function
do_cflag_bit:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	cmp	DWORD PTR -4[rbp], 0
	je	.L88
	mov	eax, DWORD PTR cpsr[rip]
	or	eax, 536870912
	mov	DWORD PTR cpsr[rip], eax
	jmp	.L90
.L88:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, -536870913
	mov	DWORD PTR cpsr[rip], eax
.L90:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	do_cflag_bit, .-do_cflag_bit
	.globl	do_vflag_bit
	.type	do_vflag_bit, @function
do_vflag_bit:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	cmp	DWORD PTR -4[rbp], 0
	je	.L92
	mov	eax, DWORD PTR cpsr[rip]
	or	eax, 268435456
	mov	DWORD PTR cpsr[rip], eax
	jmp	.L94
.L92:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, -268435457
	mov	DWORD PTR cpsr[rip], eax
.L94:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	do_vflag_bit, .-do_vflag_bit
	.section	.rodata
.LC20:
	.string	" inst\n"
	.align 8
.LC21:
	.string	"add pc,... produced an arm address 0x%08X 0x%08X\n"
.LC22:
	.string	"bkpt 0x%02X\n"
.LC23:
	.string	"hello"
	.align 8
.LC24:
	.string	"cannot branch to arm 0x%08X 0x%04X\n"
	.align 8
.LC25:
	.string	"pop {rc} with an ARM address pc 0x%08X popped 0x%08X\n"
	.align 8
.LC26:
	.string	"push {lr} with an ARM address pc 0x%08X popped 0x%08X\n"
.LC27:
	.string	"setend not implemented\n"
.LC28:
	.string	"\n\nswi 0x%02X\n"
	.align 8
.LC29:
	.string	"invalid instruction 0x%08X 0x%04X\n"
	.text
	.globl	execute
	.type	execute, @function
execute:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 72
	.cfi_offset 3, -24
	mov	edi, 15
	call	read_register
	mov	DWORD PTR -68[rbp], eax
	mov	eax, DWORD PTR handler_mode[rip]
	test	eax, eax
	je	.L96
	mov	eax, DWORD PTR -68[rbp]
	and	eax, -268435456
	cmp	eax, -268435456
	jne	.L96
	mov	DWORD PTR handler_mode[rip], 0
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -72[rbp], eax
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	esi, eax
	mov	edi, 0
	call	write_register
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	esi, eax
	mov	edi, 1
	call	write_register
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	esi, eax
	mov	edi, 2
	call	write_register
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	esi, eax
	mov	edi, 3
	call	write_register
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	esi, eax
	mov	edi, 12
	call	write_register
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	esi, eax
	mov	edi, 14
	call	write_register
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -68[rbp], eax
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR cpsr[rip], eax
	add	DWORD PTR -72[rbp], 4
	mov	eax, DWORD PTR -72[rbp]
	mov	esi, eax
	mov	edi, 13
	call	write_register
.L96:
	mov	eax, DWORD PTR systick_ctrl[rip]
	and	eax, 1
	test	eax, eax
	je	.L97
	mov	eax, DWORD PTR systick_count[rip]
	test	eax, eax
	je	.L98
	mov	eax, DWORD PTR systick_count[rip]
	sub	eax, 1
	mov	DWORD PTR systick_count[rip], eax
	jmp	.L97
.L98:
	mov	eax, DWORD PTR systick_reload[rip]
	mov	DWORD PTR systick_count[rip], eax
	mov	eax, DWORD PTR systick_ctrl[rip]
	or	eax, 65536
	mov	DWORD PTR systick_ctrl[rip], eax
.L97:
	mov	eax, DWORD PTR systick_ctrl[rip]
	and	eax, 3
	cmp	eax, 3
	jne	.L99
	mov	eax, DWORD PTR systick_ctrl[rip]
	and	eax, 65536
	test	eax, eax
	je	.L99
	mov	eax, DWORD PTR handler_mode[rip]
	test	eax, eax
	jne	.L99
	mov	rax, QWORD PTR systick_ints[rip]
	add	rax, 1
	mov	QWORD PTR systick_ints[rip], rax
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -40[rbp], eax
	sub	DWORD PTR -40[rbp], 4
	mov	edx, DWORD PTR cpsr[rip]
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edx, DWORD PTR -68[rbp]
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edi, 14
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edi, 12
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edi, 3
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edi, 2
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edi, 1
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	sub	DWORD PTR -40[rbp], 4
	mov	edi, 0
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, eax
	mov	edi, 13
	call	write_register
	mov	edi, 60
	call	fetch32
	mov	DWORD PTR -68[rbp], eax
	add	DWORD PTR -68[rbp], 2
	mov	esi, -7
	mov	edi, 14
	call	write_register
	mov	DWORD PTR handler_mode[rip], 1
.L99:
	mov	eax, DWORD PTR -68[rbp]
	sub	eax, 2
	mov	edi, eax
	call	fetch16
	mov	DWORD PTR -36[rbp], eax
	add	DWORD PTR -68[rbp], 2
	mov	eax, DWORD PTR -68[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	mov	eax, DWORD PTR output_vcd[rip]
	test	eax, eax
	je	.L100
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rsi, rax
	mov	edi, 98
	call	fputc@PLT
	mov	DWORD PTR -64[rbp], 32768
	jmp	.L101
.L104:
	mov	eax, DWORD PTR -64[rbp]
	and	eax, DWORD PTR -36[rbp]
	test	eax, eax
	je	.L102
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rsi, rax
	mov	edi, 49
	call	fputc@PLT
	jmp	.L103
.L102:
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rsi, rax
	mov	edi, 48
	call	fputc@PLT
.L103:
	shr	DWORD PTR -64[rbp]
.L101:
	cmp	DWORD PTR -64[rbp], 0
	jne	.L104
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 6
	mov	esi, 1
	lea	rdi, .LC20[rip]
	call	fwrite@PLT
.L100:
	mov	rax, QWORD PTR instructions[rip]
	add	rax, 1
	mov	QWORD PTR instructions[rip], rax
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16704
	jne	.L105
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	je	.L106
	add	DWORD PTR -56[rbp], 1
.L106:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	je	.L107
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	jmp	.L108
.L107:
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
.L108:
	mov	eax, 0
	jmp	.L109
.L105:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 7168
	jne	.L110
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -52[rbp], eax
	cmp	DWORD PTR -52[rbp], 0
	je	.L110
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L110:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 12288
	jne	.L111
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L111:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 6144
	jne	.L112
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L112:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65280
	cmp	eax, 17408
	jne	.L113
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 4
	and	eax, 8
	or	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 15
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	cmp	DWORD PTR -60[rbp], 15
	jne	.L114
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 1
	test	eax, eax
	jne	.L115
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -56[rbp]
	mov	edx, DWORD PTR -68[rbp]
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L115:
	and	DWORD PTR -56[rbp], -2
	add	DWORD PTR -56[rbp], 2
.L114:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L113:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 40960
	jne	.L116
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 15
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	and	eax, -4
	mov	edx, eax
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L116:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 43008
	jne	.L117
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L117:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65408
	cmp	eax, 45056
	jne	.L118
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 127
	mov	DWORD PTR -52[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	esi, eax
	mov	edi, 13
	call	write_register
	mov	eax, 0
	jmp	.L109
.L118:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16384
	jne	.L119
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	and	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L119:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 4096
	jne	.L120
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	cmp	DWORD PTR -52[rbp], 0
	jne	.L121
	mov	eax, DWORD PTR -56[rbp]
	test	eax, eax
	jns	.L122
	mov	edi, 1
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], -1
	jmp	.L123
.L122:
	mov	edi, 0
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
	jmp	.L123
.L121:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, DWORD PTR -56[rbp]
	and	eax, -2147483648
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	shr	DWORD PTR -56[rbp], cl
	cmp	DWORD PTR -48[rbp], 0
	je	.L123
	mov	eax, 32
	sub	eax, DWORD PTR -52[rbp]
	mov	edx, -1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	or	DWORD PTR -56[rbp], eax
.L123:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L120:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16640
	jne	.L124
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	and	DWORD PTR -52[rbp], 255
	cmp	DWORD PTR -52[rbp], 0
	je	.L125
	cmp	DWORD PTR -52[rbp], 31
	ja	.L126
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, DWORD PTR -56[rbp]
	and	eax, -2147483648
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	shr	DWORD PTR -56[rbp], cl
	cmp	DWORD PTR -48[rbp], 0
	je	.L125
	mov	eax, 32
	sub	eax, DWORD PTR -52[rbp]
	mov	edx, -1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	or	DWORD PTR -56[rbp], eax
	jmp	.L125
.L126:
	mov	eax, DWORD PTR -56[rbp]
	test	eax, eax
	jns	.L127
	mov	edi, 1
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], -1
	jmp	.L125
.L127:
	mov	edi, 0
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
.L125:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L124:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 61440
	cmp	eax, 53248
	jne	.L302
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 128
	test	eax, eax
	je	.L129
	or	DWORD PTR -52[rbp], -256
.L129:
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 15
	mov	DWORD PTR -28[rbp], eax
	sal	DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -68[rbp]
	add	DWORD PTR -52[rbp], eax
	add	DWORD PTR -52[rbp], 2
	cmp	DWORD PTR -28[rbp], 15
	ja	.L128
	mov	eax, DWORD PTR -28[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L131[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L131[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L131:
	.long	.L288-.L131
	.long	.L289-.L131
	.long	.L290-.L131
	.long	.L291-.L131
	.long	.L292-.L131
	.long	.L293-.L131
	.long	.L294-.L131
	.long	.L295-.L131
	.long	.L296-.L131
	.long	.L297-.L131
	.long	.L298-.L131
	.long	.L299-.L131
	.long	.L300-.L131
	.long	.L301-.L131
	.long	.L303-.L131
	.long	.L303-.L131
	.text
.L288:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 1073741824
	test	eax, eax
	je	.L147
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L147:
	mov	eax, 0
	jmp	.L109
.L289:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 1073741824
	test	eax, eax
	jne	.L148
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L148:
	mov	eax, 0
	jmp	.L109
.L290:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	je	.L149
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L149:
	mov	eax, 0
	jmp	.L109
.L291:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	jne	.L150
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L150:
	mov	eax, 0
	jmp	.L109
.L292:
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	jns	.L151
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L151:
	mov	eax, 0
	jmp	.L109
.L293:
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	js	.L152
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L152:
	mov	eax, 0
	jmp	.L109
.L294:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	je	.L153
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L153:
	mov	eax, 0
	jmp	.L109
.L295:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	jne	.L154
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L154:
	mov	eax, 0
	jmp	.L109
.L296:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	je	.L155
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 1073741824
	test	eax, eax
	jne	.L155
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L155:
	mov	eax, 0
	jmp	.L109
.L297:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 1073741824
	test	eax, eax
	jne	.L156
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	jne	.L157
.L156:
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L157:
	mov	eax, 0
	jmp	.L109
.L298:
	mov	DWORD PTR -48[rbp], 0
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	jns	.L158
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	je	.L158
	add	DWORD PTR -48[rbp], 1
.L158:
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	js	.L159
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	jne	.L159
	add	DWORD PTR -48[rbp], 1
.L159:
	cmp	DWORD PTR -48[rbp], 0
	je	.L160
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L160:
	mov	eax, 0
	jmp	.L109
.L299:
	mov	DWORD PTR -48[rbp], 0
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	js	.L161
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	je	.L161
	add	DWORD PTR -48[rbp], 1
.L161:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	jne	.L162
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	jns	.L162
	add	DWORD PTR -48[rbp], 1
.L162:
	cmp	DWORD PTR -48[rbp], 0
	je	.L163
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L163:
	mov	eax, 0
	jmp	.L109
.L300:
	mov	DWORD PTR -48[rbp], 0
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	jns	.L164
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	je	.L164
	add	DWORD PTR -48[rbp], 1
.L164:
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	js	.L165
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	jne	.L165
	add	DWORD PTR -48[rbp], 1
.L165:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 1073741824
	test	eax, eax
	je	.L166
	mov	DWORD PTR -48[rbp], 0
.L166:
	cmp	DWORD PTR -48[rbp], 0
	je	.L167
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L167:
	mov	eax, 0
	jmp	.L109
.L301:
	mov	DWORD PTR -48[rbp], 0
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	js	.L168
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	je	.L168
	add	DWORD PTR -48[rbp], 1
.L168:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 268435456
	test	eax, eax
	jne	.L169
	mov	eax, DWORD PTR cpsr[rip]
	test	eax, eax
	jns	.L169
	add	DWORD PTR -48[rbp], 1
.L169:
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 1073741824
	test	eax, eax
	je	.L170
	add	DWORD PTR -48[rbp], 1
.L170:
	cmp	DWORD PTR -48[rbp], 0
	je	.L171
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
.L171:
	mov	eax, 0
	jmp	.L109
.L302:
	nop
	jmp	.L128
.L303:
	nop
.L128:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 57344
	jne	.L172
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 2047
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1024
	test	eax, eax
	je	.L173
	or	DWORD PTR -52[rbp], -2048
.L173:
	sal	DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -68[rbp]
	add	DWORD PTR -52[rbp], eax
	add	DWORD PTR -52[rbp], 2
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	mov	eax, 0
	jmp	.L109
.L172:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17280
	jne	.L174
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	and	eax, DWORD PTR -48[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L174:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65280
	cmp	eax, 48640
	jne	.L175
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -52[rbp]
	lea	rsi, .LC22[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
	jmp	.L109
.L175:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 57344
	cmp	eax, 57344
	jne	.L176
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 6144
	cmp	eax, 4096
	jne	.L177
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 2047
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1024
	test	eax, eax
	je	.L178
	or	DWORD PTR -52[rbp], -2048
.L178:
	sal	DWORD PTR -52[rbp], 12
	mov	eax, DWORD PTR -68[rbp]
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 14
	call	write_register
	mov	eax, 0
	jmp	.L109
.L177:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 6144
	cmp	eax, 6144
	jne	.L179
	mov	edi, 14
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	add	eax, eax
	and	eax, 4094
	add	DWORD PTR -52[rbp], eax
	add	DWORD PTR -52[rbp], 2
	mov	eax, DWORD PTR -68[rbp]
	sub	eax, 2
	or	eax, 1
	mov	esi, eax
	mov	edi, 14
	call	write_register
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	mov	eax, 0
	jmp	.L109
.L179:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 6144
	cmp	eax, 2048
	jne	.L176
	mov	edi, 14
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	add	eax, eax
	and	eax, 4094
	add	DWORD PTR -52[rbp], eax
	and	DWORD PTR -52[rbp], -4
	add	DWORD PTR -52[rbp], 2
	lea	rdi, .LC23[rip]
	call	puts@PLT
	mov	eax, DWORD PTR -68[rbp]
	sub	eax, 2
	or	eax, 1
	mov	esi, eax
	mov	edi, 14
	call	write_register
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	mov	eax, 0
	jmp	.L109
.L176:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65415
	cmp	eax, 18304
	jne	.L180
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 15
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	add	DWORD PTR -56[rbp], 2
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 1
	test	eax, eax
	je	.L181
	mov	eax, DWORD PTR -68[rbp]
	sub	eax, 2
	or	eax, 1
	mov	esi, eax
	mov	edi, 14
	call	write_register
	and	DWORD PTR -56[rbp], -2
	mov	eax, DWORD PTR -56[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	mov	eax, 0
	jmp	.L109
.L181:
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -36[rbp]
	mov	edx, DWORD PTR -68[rbp]
	lea	rsi, .LC24[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
	jmp	.L109
.L180:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65415
	cmp	eax, 18176
	jne	.L182
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 15
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	add	DWORD PTR -56[rbp], 2
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 1
	test	eax, eax
	je	.L183
	and	DWORD PTR -56[rbp], -2
	mov	eax, DWORD PTR -56[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	mov	eax, 0
	jmp	.L109
.L183:
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -36[rbp]
	mov	edx, DWORD PTR -68[rbp]
	lea	rsi, .LC24[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
	jmp	.L109
.L182:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17088
	jne	.L184
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	edx, DWORD PTR -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	add	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	ecx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L184:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 10240
	jne	.L185
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L185:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17024
	jne	.L186
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L186:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65280
	cmp	eax, 17664
	jne	.L187
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 4
	and	eax, 8
	or	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 15
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L187:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65512
	cmp	eax, 46688
	jne	.L188
	mov	eax, 1
	jmp	.L109
.L188:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17920
	jne	.L189
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L189:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16448
	jne	.L190
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	xor	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L190:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 51200
	jne	.L191
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -52[rbp], 1
	jmp	.L192
.L194:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, DWORD PTR -52[rbp]
	test	eax, eax
	je	.L193
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	read32
	mov	edx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	add	DWORD PTR -44[rbp], 4
.L193:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, eax
	and	eax, 255
	mov	DWORD PTR -52[rbp], eax
	add	DWORD PTR -48[rbp], 1
.L192:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L194
	mov	eax, DWORD PTR -32[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -36[rbp]
	test	eax, eax
	jne	.L195
	mov	edx, DWORD PTR -44[rbp]
	mov	eax, DWORD PTR -32[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
.L195:
	mov	eax, 0
	jmp	.L109
.L191:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 26624
	jne	.L196
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L196:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 22528
	jne	.L197
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L197:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 18432
	jne	.L198
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 15
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	and	DWORD PTR -48[rbp], -4
	mov	eax, DWORD PTR -48[rbp]
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L198:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 38912
	jne	.L199
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L199:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 30720
	jne	.L200
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, -2
	mov	edi, eax
	call	read16
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L201
	shr	DWORD PTR -56[rbp], 8
.L201:
	mov	eax, DWORD PTR -56[rbp]
	movzx	edx, al
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L200:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 23552
	jne	.L202
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, -2
	mov	edi, eax
	call	read16
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L203
	shr	DWORD PTR -56[rbp], 8
.L203:
	mov	eax, DWORD PTR -56[rbp]
	movzx	edx, al
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L202:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 34816
	jne	.L204
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	sal	DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read16
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movzx	edx, ax
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L204:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 23040
	jne	.L205
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read16
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movzx	edx, ax
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L205:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 22016
	jne	.L206
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, -2
	mov	edi, eax
	call	read16
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L207
	shr	DWORD PTR -56[rbp], 8
.L207:
	and	DWORD PTR -56[rbp], 255
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 128
	test	eax, eax
	je	.L208
	or	DWORD PTR -56[rbp], -256
.L208:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L206:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 24064
	jne	.L209
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	read16
	mov	DWORD PTR -56[rbp], eax
	and	DWORD PTR -56[rbp], 65535
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 32768
	test	eax, eax
	je	.L210
	or	DWORD PTR -56[rbp], -65536
.L210:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L209:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	test	eax, eax
	jne	.L211
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	cmp	DWORD PTR -52[rbp], 0
	je	.L212
	mov	eax, 32
	sub	eax, DWORD PTR -52[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	sal	DWORD PTR -56[rbp], cl
.L212:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L211:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16512
	jne	.L213
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	and	DWORD PTR -52[rbp], 255
	cmp	DWORD PTR -52[rbp], 0
	je	.L214
	cmp	DWORD PTR -52[rbp], 31
	ja	.L215
	mov	eax, 32
	sub	eax, DWORD PTR -52[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	sal	DWORD PTR -56[rbp], cl
	jmp	.L214
.L215:
	cmp	DWORD PTR -52[rbp], 32
	jne	.L216
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 1
	mov	edi, eax
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
	jmp	.L214
.L216:
	mov	edi, 0
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
.L214:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L213:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 2048
	jne	.L217
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	cmp	DWORD PTR -52[rbp], 0
	jne	.L218
	mov	eax, DWORD PTR -56[rbp]
	and	eax, -2147483648
	mov	edi, eax
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
	jmp	.L219
.L218:
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	shr	DWORD PTR -56[rbp], cl
.L219:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L217:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16576
	jne	.L220
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	and	DWORD PTR -52[rbp], 255
	cmp	DWORD PTR -52[rbp], 0
	je	.L221
	cmp	DWORD PTR -52[rbp], 31
	ja	.L222
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	shr	DWORD PTR -56[rbp], cl
	jmp	.L221
.L222:
	cmp	DWORD PTR -52[rbp], 32
	jne	.L223
	mov	eax, DWORD PTR -56[rbp]
	and	eax, -2147483648
	mov	edi, eax
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
	jmp	.L221
.L223:
	mov	edi, 0
	call	do_cflag_bit
	mov	DWORD PTR -56[rbp], 0
.L221:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L220:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 8192
	jne	.L224
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	edx, DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L224:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 7168
	jne	.L225
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	edi, 0
	call	do_cflag_bit
	mov	edi, 0
	call	do_vflag_bit
	mov	eax, 0
	jmp	.L109
.L225:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65280
	cmp	eax, 17920
	jne	.L226
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 4
	and	eax, 8
	or	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 15
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	cmp	DWORD PTR -60[rbp], 15
	jne	.L227
	and	DWORD PTR -56[rbp], -2
	add	DWORD PTR -56[rbp], 2
.L227:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L226:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17216
	jne	.L228
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L228:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17344
	jne	.L229
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	not	eax
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L229:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16960
	jne	.L230
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	neg	eax
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -48[rbp]
	not	eax
	mov	edx, 1
	mov	esi, eax
	mov	edi, 0
	call	do_cflag
	mov	eax, DWORD PTR -48[rbp]
	not	eax
	mov	edx, 1
	mov	esi, eax
	mov	edi, 0
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L230:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 17152
	jne	.L231
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	or	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L231:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 48128
	jne	.L232
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -52[rbp], 1
	jmp	.L233
.L235:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, DWORD PTR -52[rbp]
	test	eax, eax
	je	.L234
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	read32
	mov	edx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	add	DWORD PTR -44[rbp], 4
.L234:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, eax
	and	eax, 255
	mov	DWORD PTR -52[rbp], eax
	add	DWORD PTR -48[rbp], 1
.L233:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L235
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 256
	test	eax, eax
	je	.L236
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	read32
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 1
	test	eax, eax
	jne	.L237
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -56[rbp]
	mov	edx, DWORD PTR -68[rbp]
	lea	rsi, .LC25[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	and	DWORD PTR -56[rbp], -2
.L237:
	add	DWORD PTR -56[rbp], 2
	mov	eax, DWORD PTR -56[rbp]
	mov	esi, eax
	mov	edi, 15
	call	write_register
	add	DWORD PTR -44[rbp], 4
.L236:
	mov	eax, DWORD PTR -44[rbp]
	mov	esi, eax
	mov	edi, 13
	call	write_register
	mov	eax, 0
	jmp	.L109
.L232:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 46080
	jne	.L238
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -52[rbp], 1
	mov	DWORD PTR -56[rbp], 0
	jmp	.L239
.L241:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, DWORD PTR -52[rbp]
	test	eax, eax
	je	.L240
	add	DWORD PTR -56[rbp], 1
.L240:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, eax
	and	eax, 255
	mov	DWORD PTR -52[rbp], eax
	add	DWORD PTR -48[rbp], 1
.L239:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L241
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 256
	test	eax, eax
	je	.L242
	add	DWORD PTR -56[rbp], 1
.L242:
	sal	DWORD PTR -56[rbp], 2
	mov	eax, DWORD PTR -56[rbp]
	sub	DWORD PTR -44[rbp], eax
	mov	eax, DWORD PTR -44[rbp]
	mov	DWORD PTR -60[rbp], eax
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -52[rbp], 1
	jmp	.L243
.L245:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, DWORD PTR -52[rbp]
	test	eax, eax
	je	.L244
	mov	eax, DWORD PTR -48[rbp]
	mov	edi, eax
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	add	DWORD PTR -60[rbp], 4
.L244:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, eax
	and	eax, 255
	mov	DWORD PTR -52[rbp], eax
	add	DWORD PTR -48[rbp], 1
.L243:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L245
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 256
	test	eax, eax
	je	.L246
	mov	edi, 14
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 1
	test	eax, eax
	jne	.L246
	mov	rax, QWORD PTR stderr[rip]
	mov	ecx, DWORD PTR -56[rbp]
	mov	edx, DWORD PTR -68[rbp]
	lea	rsi, .LC26[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L246:
	mov	eax, DWORD PTR -44[rbp]
	mov	esi, eax
	mov	edi, 13
	call	write_register
	mov	eax, 0
	jmp	.L109
.L238:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 47616
	jne	.L247
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sal	eax, 24
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 8
	sal	eax, 16
	and	eax, 16711680
	or	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 16
	sal	eax, 8
	movzx	eax, ax
	or	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 24
	or	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L247:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 47680
	jne	.L248
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sal	eax, 8
	and	eax, 65535
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 8
	movzx	eax, al
	or	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 16
	sal	eax, 24
	or	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 24
	sal	eax, 16
	or	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L248:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 47808
	jne	.L249
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sal	eax, 8
	and	eax, 65535
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	shr	eax, 8
	movzx	eax, al
	or	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 32768
	test	eax, eax
	je	.L250
	or	DWORD PTR -56[rbp], -65536
	jmp	.L251
.L250:
	and	DWORD PTR -56[rbp], 65535
.L251:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L249:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16832
	jne	.L252
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	and	DWORD PTR -48[rbp], 255
	cmp	DWORD PTR -48[rbp], 0
	je	.L253
	and	DWORD PTR -48[rbp], 31
	cmp	DWORD PTR -48[rbp], 0
	jne	.L254
	mov	eax, DWORD PTR -56[rbp]
	and	eax, -2147483648
	mov	edi, eax
	call	do_cflag_bit
	jmp	.L253
.L254:
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, 1
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	and	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_cflag_bit
	mov	eax, 32
	sub	eax, DWORD PTR -48[rbp]
	mov	edx, DWORD PTR -56[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	mov	ecx, eax
	shr	DWORD PTR -56[rbp], cl
	mov	eax, DWORD PTR -52[rbp]
	or	DWORD PTR -56[rbp], eax
.L253:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L252:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16768
	jne	.L255
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	jne	.L256
	sub	DWORD PTR -56[rbp], 1
.L256:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR cpsr[rip]
	and	eax, 536870912
	test	eax, eax
	je	.L257
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	jmp	.L258
.L257:
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
.L258:
	mov	eax, 0
	jmp	.L109
.L255:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65527
	cmp	eax, 46672
	jne	.L259
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 23
	mov	esi, 1
	lea	rdi, .LC27[rip]
	call	fwrite@PLT
	mov	eax, 1
	jmp	.L109
.L259:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 49152
	jne	.L260
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -52[rbp], 1
	jmp	.L261
.L263:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, DWORD PTR -52[rbp]
	test	eax, eax
	je	.L262
	mov	eax, DWORD PTR -48[rbp]
	mov	edi, eax
	call	read_register
	mov	edx, eax
	mov	eax, DWORD PTR -44[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	add	DWORD PTR -44[rbp], 4
.L262:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, eax
	and	eax, 255
	mov	DWORD PTR -52[rbp], eax
	add	DWORD PTR -48[rbp], 1
.L261:
	cmp	DWORD PTR -52[rbp], 0
	jne	.L263
	mov	edx, DWORD PTR -44[rbp]
	mov	eax, DWORD PTR -32[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L260:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 24576
	jne	.L264
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	mov	eax, 0
	jmp	.L109
.L264:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 20480
	jne	.L265
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	mov	eax, 0
	jmp	.L109
.L265:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 36864
	jne	.L266
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 13
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write32
	mov	eax, 0
	jmp	.L109
.L266:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 28672
	jne	.L267
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, -2
	mov	edi, eax
	call	read16
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L268
	and	DWORD PTR -48[rbp], 255
	mov	eax, DWORD PTR -56[rbp]
	sal	eax, 8
	or	DWORD PTR -48[rbp], eax
	jmp	.L269
.L268:
	and	DWORD PTR -48[rbp], 65280
	mov	eax, DWORD PTR -56[rbp]
	movzx	eax, al
	or	DWORD PTR -48[rbp], eax
.L269:
	mov	eax, DWORD PTR -48[rbp]
	movzx	eax, ax
	mov	edx, DWORD PTR -52[rbp]
	and	edx, -2
	mov	esi, eax
	mov	edi, edx
	call	write16
	mov	eax, 0
	jmp	.L109
.L267:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 21504
	jne	.L270
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, -2
	mov	edi, eax
	call	read16
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 1
	test	eax, eax
	je	.L271
	and	DWORD PTR -48[rbp], 255
	mov	eax, DWORD PTR -56[rbp]
	sal	eax, 8
	or	DWORD PTR -48[rbp], eax
	jmp	.L272
.L271:
	and	DWORD PTR -48[rbp], 65280
	mov	eax, DWORD PTR -56[rbp]
	movzx	eax, al
	or	DWORD PTR -48[rbp], eax
.L272:
	mov	eax, DWORD PTR -48[rbp]
	movzx	eax, ax
	mov	edx, DWORD PTR -52[rbp]
	and	edx, -2
	mov	esi, eax
	mov	edi, edx
	call	write16
	mov	eax, 0
	jmp	.L109
.L270:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 32768
	jne	.L273
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 31
	mov	DWORD PTR -52[rbp], eax
	sal	DWORD PTR -52[rbp]
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	add	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movzx	edx, ax
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write16
	mov	eax, 0
	jmp	.L109
.L273:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 20992
	jne	.L274
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	ebx, eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	add	eax, ebx
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movzx	edx, ax
	mov	eax, DWORD PTR -52[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write16
	mov	eax, 0
	jmp	.L109
.L274:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 7680
	jne	.L275
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L275:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 63488
	cmp	eax, 14336
	jne	.L276
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 8
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L276:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65024
	cmp	eax, 6656
	jne	.L277
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 6
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_cflag
	mov	eax, DWORD PTR -52[rbp]
	not	eax
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, 1
	mov	esi, ecx
	mov	edi, eax
	call	do_vflag
	mov	eax, 0
	jmp	.L109
.L277:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65408
	cmp	eax, 45184
	jne	.L278
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 127
	mov	DWORD PTR -52[rbp], eax
	sal	DWORD PTR -52[rbp], 2
	mov	edi, 13
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	sub	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	mov	esi, eax
	mov	edi, 13
	call	write_register
	mov	eax, 0
	jmp	.L109
.L278:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65280
	cmp	eax, 57088
	jne	.L279
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	cmp	eax, 204
	jne	.L280
	mov	eax, DWORD PTR cpsr[rip]
	mov	esi, eax
	mov	edi, 0
	call	write_register
	mov	eax, 0
	jmp	.L109
.L280:
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -52[rbp]
	lea	rsi, .LC28[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
	jmp	.L109
.L279:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 45632
	jne	.L281
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	movzx	eax, al
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 128
	test	eax, eax
	je	.L282
	or	DWORD PTR -56[rbp], -256
.L282:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L281:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 45568
	jne	.L283
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	movzx	eax, ax
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	and	eax, 32768
	test	eax, eax
	je	.L284
	or	DWORD PTR -56[rbp], -65536
.L284:
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L283:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 16896
	jne	.L285
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	and	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_nflag
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	do_zflag
	mov	eax, 0
	jmp	.L109
.L285:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 45760
	jne	.L286
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	movzx	eax, al
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L286:
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 65472
	cmp	eax, 45696
	jne	.L287
	mov	eax, DWORD PTR -36[rbp]
	and	eax, 7
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	shr	eax, 3
	and	eax, 7
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	read_register
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	movzx	eax, ax
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -56[rbp]
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, edx
	mov	edi, eax
	call	write_register
	mov	eax, 0
	jmp	.L109
.L287:
	mov	eax, DWORD PTR -68[rbp]
	lea	esi, -4[rax]
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -36[rbp]
	mov	ecx, edx
	mov	edx, esi
	lea	rsi, .LC29[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
.L109:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	execute, .-execute
	.section	.rodata
	.align 8
.LC30:
	.string	"reset vector with an ARM address 0x%08X\n"
	.text
	.globl	reset
	.type	reset, @function
reset:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edx, 1048576
	mov	esi, 255
	lea	rdi, ram[rip]
	call	memset@PLT
	mov	DWORD PTR systick_ctrl[rip], 4
	mov	DWORD PTR systick_reload[rip], 0
	mov	DWORD PTR systick_count[rip], 0
	mov	DWORD PTR systick_calibrate[rip], 11259375
	mov	DWORD PTR handler_mode[rip], 0
	mov	DWORD PTR cpsr[rip], 0
	mov	edi, 0
	call	fetch32
	mov	DWORD PTR reg_norm[rip+52], eax
	mov	DWORD PTR reg_norm[rip+56], -1
	mov	edi, 4
	call	fetch32
	mov	DWORD PTR reg_norm[rip+60], eax
	mov	eax, DWORD PTR reg_norm[rip+60]
	and	eax, 1
	test	eax, eax
	jne	.L305
	mov	edx, DWORD PTR reg_norm[rip+60]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC30[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L305:
	mov	eax, DWORD PTR reg_norm[rip+60]
	and	eax, -2
	mov	DWORD PTR reg_norm[rip+60], eax
	mov	eax, DWORD PTR reg_norm[rip+60]
	add	eax, 2
	mov	DWORD PTR reg_norm[rip+60], eax
	mov	QWORD PTR instructions[rip], 0
	mov	QWORD PTR fetches[rip], 0
	mov	QWORD PTR reads[rip], 0
	mov	QWORD PTR writes[rip], 0
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	reset, .-reset
	.section	.rodata
.LC31:
	.string	"#%u\n"
	.text
	.globl	run
	.type	run, @function
run:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	reset
.L311:
	mov	eax, DWORD PTR output_vcd[rip]
	test	eax, eax
	je	.L308
	mov	eax, DWORD PTR vcdcount[rip]
	lea	edx, 1[rax]
	mov	DWORD PTR vcdcount[rip], edx
	mov	rcx, QWORD PTR fpvcd[rip]
	mov	edx, eax
	lea	rsi, .LC31[rip]
	mov	rdi, rcx
	mov	eax, 0
	call	fprintf@PLT
.L308:
	call	execute
	test	eax, eax
	jne	.L314
	jmp	.L311
.L314:
	nop
	call	dump_counters
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	run, .-run
	.section	.rodata
.LC32:
	.string	"bin file not specified\n"
.LC33:
	.string	"--vcd"
.LC34:
	.string	"rb"
.LC35:
	.string	"Error opening file [%s]\n"
.LC36:
	.string	"output vcd enabled\n"
.LC37:
	.string	"wt"
.LC38:
	.string	"output.vcd"
	.align 8
.LC39:
	.string	"Error creating file output.vcd\n"
	.align 8
.LC40:
	.string	"$version Generated by thumbulator $end\n"
.LC41:
	.string	"$timescale 1ns $end\n"
.LC42:
	.string	"$scope module thumb $end\n"
.LC43:
	.string	"$var wire 32 r%u r%u $end\n"
.LC44:
	.string	"$var wire 16 inst inst $end\n"
.LC45:
	.string	"$upscope $end\n"
.LC46:
	.string	"$enddefinitions $end\n"
.LC47:
	.string	"b0 r%u\n"
.LC48:
	.string	"b0 inst\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	cmp	DWORD PTR -20[rbp], 1
	jg	.L316
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 23
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
	mov	eax, 1
	jmp	.L317
.L316:
	mov	DWORD PTR output_vcd[rip], 0
	mov	DWORD PTR -12[rbp], 2
	jmp	.L318
.L320:
	mov	eax, DWORD PTR -12[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC33[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L319
	mov	DWORD PTR output_vcd[rip], 1
.L319:
	add	DWORD PTR -12[rbp], 1
.L318:
	mov	eax, DWORD PTR -20[rbp]
	cmp	DWORD PTR -12[rbp], eax
	jb	.L320
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC34[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L321
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 8
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC35[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
	jmp	.L317
.L321:
	mov	edx, 1048576
	mov	esi, 255
	lea	rdi, rom[rip]
	call	memset@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rax
	mov	edx, 1048576
	mov	esi, 1
	lea	rdi, rom[rip]
	call	fread@PLT
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	fclose@PLT
	mov	eax, DWORD PTR output_vcd[rip]
	test	eax, eax
	je	.L322
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 19
	mov	esi, 1
	lea	rdi, .LC36[rip]
	call	fwrite@PLT
	lea	rsi, .LC37[rip]
	lea	rdi, .LC38[rip]
	call	fopen@PLT
	mov	QWORD PTR fpvcd[rip], rax
	mov	rax, QWORD PTR fpvcd[rip]
	test	rax, rax
	jne	.L323
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 31
	mov	esi, 1
	lea	rdi, .LC39[rip]
	call	fwrite@PLT
	mov	DWORD PTR output_vcd[rip], 0
	mov	eax, 1
	jmp	.L317
.L323:
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 39
	mov	esi, 1
	lea	rdi, .LC40[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 20
	mov	esi, 1
	lea	rdi, .LC41[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 25
	mov	esi, 1
	lea	rdi, .LC42[rip]
	call	fwrite@PLT
	mov	DWORD PTR -12[rbp], 0
	jmp	.L324
.L325:
	mov	rax, QWORD PTR fpvcd[rip]
	mov	ecx, DWORD PTR -12[rbp]
	mov	edx, DWORD PTR -12[rbp]
	lea	rsi, .LC43[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	add	DWORD PTR -12[rbp], 1
.L324:
	cmp	DWORD PTR -12[rbp], 15
	jbe	.L325
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 28
	mov	esi, 1
	lea	rdi, .LC44[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 14
	mov	esi, 1
	lea	rdi, .LC45[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 21
	mov	esi, 1
	lea	rdi, .LC46[rip]
	call	fwrite@PLT
	mov	DWORD PTR vcdcount[rip], 0
	mov	eax, DWORD PTR vcdcount[rip]
	lea	edx, 1[rax]
	mov	DWORD PTR vcdcount[rip], edx
	mov	rcx, QWORD PTR fpvcd[rip]
	mov	edx, eax
	lea	rsi, .LC31[rip]
	mov	rdi, rcx
	mov	eax, 0
	call	fprintf@PLT
	mov	DWORD PTR -12[rbp], 0
	jmp	.L326
.L327:
	mov	rax, QWORD PTR fpvcd[rip]
	mov	edx, DWORD PTR -12[rbp]
	lea	rsi, .LC47[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	add	DWORD PTR -12[rbp], 1
.L326:
	cmp	DWORD PTR -12[rbp], 15
	jbe	.L327
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rcx, rax
	mov	edx, 8
	mov	esi, 1
	lea	rdi, .LC48[rip]
	call	fwrite@PLT
.L322:
	mov	edx, 1048576
	mov	esi, 0
	lea	rdi, ram[rip]
	call	memset@PLT
	call	run
	mov	eax, DWORD PTR output_vcd[rip]
	test	eax, eax
	je	.L328
	mov	rax, QWORD PTR fpvcd[rip]
	mov	rdi, rax
	call	fclose@PLT
.L328:
	mov	eax, 0
.L317:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.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	"651380.c"
	.text
	.comm	rom,1048576,4
	.comm	ram,1048576,4
	.comm	vcdcount,4,4
	.comm	output_vcd,4,4
	.comm	fpvcd,4,4
	.comm	systick_ctrl,4,4
	.comm	systick_reload,4,4
	.comm	systick_count,4,4
	.comm	systick_calibrate,4,4
	.comm	halfadd,4,4
	.comm	cpsr,4,4
	.comm	handler_mode,4,4
	.comm	reg_norm,64,4
	.comm	instructions,4,4
	.comm	fetches,4,4
	.comm	reads,4,4
	.comm	writes,4,4
	.comm	systick_ints,4,4
	.section	.rodata
	.align	2
.LC0:
	.ascii	"\012\000"
	.align	2
.LC1:
	.ascii	"instructions %lu\012\000"
	.align	2
.LC2:
	.ascii	"fetches      %lu\012\000"
	.align	2
.LC3:
	.ascii	"reads        %lu\012\000"
	.align	2
.LC4:
	.ascii	"writes       %lu\012\000"
	.align	2
.LC5:
	.ascii	"memcycles    %lu\012\000"
	.align	2
.LC6:
	.ascii	"systick_ints %lu\012\000"
	.text
	.align	2
	.global	dump_counters
	.syntax unified
	.arm
	.fpu softvfp
	.type	dump_counters, %function
dump_counters:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r0, .L2
	bl	puts
	ldr	r3, .L2+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+8
	bl	printf
	ldr	r3, .L2+12
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+16
	bl	printf
	ldr	r3, .L2+20
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+24
	bl	printf
	ldr	r3, .L2+28
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+32
	bl	printf
	ldr	r3, .L2+12
	ldr	r2, [r3]
	ldr	r3, .L2+20
	ldr	r3, [r3]
	add	r2, r2, r3
	ldr	r3, .L2+28
	ldr	r3, [r3]
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, .L2+36
	bl	printf
	ldr	r3, .L2+40
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+44
	bl	printf
	nop
	pop	{fp, pc}
.L3:
	.align	2
.L2:
	.word	.LC0
	.word	instructions
	.word	.LC1
	.word	fetches
	.word	.LC2
	.word	reads
	.word	.LC3
	.word	writes
	.word	.LC4
	.word	.LC5
	.word	systick_ints
	.word	.LC6
	.size	dump_counters, .-dump_counters
	.section	.rodata
	.align	2
.LC7:
	.ascii	"fetch16(0x%08X), abort pc = 0x%04X\012\000"
	.text
	.align	2
	.global	fetch16
	.syntax unified
	.arm
	.fpu softvfp
	.type	fetch16, %function
fetch16:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r3, .L10
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L10
	str	r3, [r2]
	ldr	r3, [fp, #-24]
	and	r3, r3, #-268435456
	cmp	r3, #0
	beq	.L5
	cmp	r3, #1073741824
	beq	.L6
	b	.L9
.L5:
	ldr	r3, [fp, #-24]
	bic	r3, r3, #-16777216
	bic	r3, r3, #15728640
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, .L10+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L8
.L6:
	ldr	r3, [fp, #-24]
	bic	r3, r3, #-16777216
	bic	r3, r3, #15728640
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, .L10+8
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L8
.L9:
	ldr	r3, .L10+12
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	ldr	r2, [fp, #-24]
	ldr	r1, .L10+16
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L8:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L11:
	.align	2
.L10:
	.word	fetches
	.word	rom
	.word	ram
	.word	stderr
	.word	.LC7
	.size	fetch16, .-fetch16
	.section	.rodata
	.align	2
.LC8:
	.ascii	"fetch32(0x%08X), abort pc = 0x%04X\012\000"
	.align	2
.LC9:
	.ascii	"fetch32(0x%08X), abort pc 0x%04X\012\000"
	.text
	.align	2
	.global	fetch32
	.syntax unified
	.arm
	.fpu softvfp
	.type	fetch32, %function
fetch32:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	and	r3, r3, #-268435456
	cmp	r3, #0
	beq	.L13
	cmp	r3, #1073741824
	beq	.L14
	b	.L20
.L13:
	ldr	r3, [fp, #-24]
	cmp	r3, #79
	bhi	.L14
	ldr	r0, [fp, #-24]
	bl	read32
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L16
	ldr	r3, [fp, #-16]
	b	.L17
.L16:
	ldr	r3, [fp, #-24]
	cmp	r3, #4
	bne	.L18
	ldr	r3, [fp, #-16]
	b	.L17
.L18:
	ldr	r3, [fp, #-24]
	cmp	r3, #60
	bne	.L19
	ldr	r3, [fp, #-16]
	b	.L17
.L19:
	ldr	r3, .L21
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	ldr	r2, [fp, #-24]
	ldr	r1, .L21+4
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L14:
	ldr	r0, [fp, #-24]
	bl	read32
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L17
.L20:
	ldr	r3, .L21
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	ldr	r2, [fp, #-24]
	ldr	r1, .L21+8
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L17:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L22:
	.align	2
.L21:
	.word	stderr
	.word	.LC8
	.word	.LC9
	.size	fetch32, .-fetch32
	.section	.rodata
	.align	2
.LC10:
	.ascii	"write16(0x%08X,0x%04X), abort pc 0x%04X\012\000"
	.text
	.align	2
	.global	write16
	.syntax unified
	.arm
	.fpu softvfp
	.type	write16, %function
write16:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L27
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L27
	str	r3, [r2]
	ldr	r3, [fp, #-16]
	and	r3, r3, #-268435456
	cmp	r3, #1073741824
	bne	.L24
	ldr	r3, [fp, #-16]
	bic	r3, r3, #-16777216
	bic	r3, r3, #15728640
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r1, .L27+4
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
	b	.L26
.L24:
	ldr	r3, .L27+8
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	str	r3, [sp]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	ldr	r1, .L27+12
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L26:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L28:
	.align	2
.L27:
	.word	writes
	.word	ram
	.word	stderr
	.word	.LC10
	.size	write16, .-write16
	.section	.rodata
	.align	2
.LC11:
	.ascii	"%c\000"
	.align	2
.LC12:
	.ascii	"[0x%08X][0x%08X] 0x%08X\012\000"
	.align	2
.LC13:
	.ascii	"0x%08X \000"
	.align	2
.LC14:
	.ascii	"0x%08X\012\000"
	.align	2
.LC15:
	.ascii	"write32(0x%08X,0x%08X), abort pc 0x%04X\012\000"
	.text
	.align	2
	.global	write32
	.syntax unified
	.arm
	.fpu softvfp
	.type	write32, %function
write32:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	and	r3, r3, #-268435456
	cmp	r3, #-268435456
	beq	.L30
	cmp	r3, #-268435456
	bhi	.L31
	cmp	r3, #-536870912
	beq	.L32
	cmp	r3, #-536870912
	bhi	.L31
	cmp	r3, #1073741824
	beq	.L33
	cmp	r3, #-805306368
	beq	.L34
	b	.L31
.L30:
	bl	dump_counters
	mov	r0, #0
	bl	exit
.L32:
	ldr	r3, [fp, #-24]
	cmp	r3, #-536870912
	beq	.L35
	ldr	r3, [fp, #-24]
	cmp	r3, #-536870912
	bcc	.L49
	ldr	r3, [fp, #-24]
	ldr	r2, .L52
	cmp	r3, r2
	bhi	.L49
	ldr	r3, [fp, #-24]
	ldr	r2, .L52+4
	cmp	r3, r2
	bls	.L49
	ldr	r2, [fp, #-24]
	ldr	r3, .L52+8
	add	r3, r2, r3
	cmp	r3, #16
	ldrls	pc, [pc, r3, asl #2]
	b	.L49
.L38:
	.word	.L42
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L41
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L40
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L39
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L37
.L35:
	ldr	r3, [fp, #-28]
	and	r3, r3, #255
	mov	r1, r3
	ldr	r0, .L52+12
	bl	printf
	ldr	r3, .L52+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	fflush
	b	.L36
.L42:
	ldr	r3, .L52+20
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-28]
	ldr	r3, .L52+24
	and	r3, r3, r2
	ldr	r2, .L52+20
	str	r3, [r2]
	ldr	r3, [fp, #-16]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L50
	ldr	r3, .L52+20
	ldr	r3, [r3]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L50
	ldr	r3, .L52+28
	ldr	r3, [r3]
	ldr	r2, .L52+32
	str	r3, [r2]
	b	.L50
.L41:
	ldr	r3, [fp, #-28]
	bic	r3, r3, #-16777216
	ldr	r2, .L52+28
	str	r3, [r2]
	b	.L36
.L40:
	ldr	r3, [fp, #-28]
	bic	r3, r3, #-16777216
	ldr	r2, .L52+32
	str	r3, [r2]
	b	.L36
.L39:
	ldr	r3, [fp, #-28]
	bic	r3, r3, #-16777216
	ldr	r2, .L52+36
	str	r3, [r2]
	b	.L36
.L37:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L51
	mov	r0, #0
	bl	exit
.L50:
	nop
	b	.L49
.L51:
	nop
.L36:
	b	.L49
.L34:
	ldr	r3, [fp, #-24]
	and	r3, r3, #255
	cmp	r3, #32
	beq	.L46
	cmp	r3, #32
	bhi	.L33
	cmp	r3, #0
	beq	.L47
	cmp	r3, #16
	beq	.L48
	b	.L33
.L47:
	ldr	r3, .L52+40
	ldr	r4, [r3]
	mov	r0, #14
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-28]
	str	r3, [sp]
	ldr	r3, [fp, #-24]
	ldr	r1, .L52+44
	mov	r0, r4
	bl	fprintf
	b	.L29
.L48:
	ldr	r1, [fp, #-28]
	ldr	r0, .L52+48
	bl	printf
	b	.L29
.L46:
	ldr	r1, [fp, #-28]
	ldr	r0, .L52+52
	bl	printf
	b	.L29
.L33:
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	write16
	ldr	r3, [fp, #-24]
	add	r2, r3, #2
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #16
	mov	r1, r3
	mov	r0, r2
	bl	write16
	b	.L29
.L31:
	ldr	r3, .L52+40
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, .L52+56
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L49:
	nop
.L29:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L53:
	.align	2
.L52:
	.word	-536813536
	.word	-536813553
	.word	536813552
	.word	.LC11
	.word	stdout
	.word	systick_ctrl
	.word	65543
	.word	systick_reload
	.word	systick_count
	.word	systick_calibrate
	.word	stderr
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.size	write32, .-write32
	.section	.rodata
	.align	2
.LC16:
	.ascii	"read16(0x%08X), abort pc 0x%04X\012\000"
	.text
	.align	2
	.global	read16
	.syntax unified
	.arm
	.fpu softvfp
	.type	read16, %function
read16:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r3, .L60
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L60
	str	r3, [r2]
	ldr	r3, [fp, #-24]
	and	r3, r3, #-268435456
	cmp	r3, #0
	beq	.L55
	cmp	r3, #1073741824
	beq	.L56
	b	.L59
.L55:
	ldr	r3, [fp, #-24]
	bic	r3, r3, #-16777216
	bic	r3, r3, #15728640
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, .L60+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L58
.L56:
	ldr	r3, [fp, #-24]
	bic	r3, r3, #-16777216
	bic	r3, r3, #15728640
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, .L60+8
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L58
.L59:
	ldr	r3, .L60+12
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	ldr	r2, [fp, #-24]
	ldr	r1, .L60+16
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L58:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L61:
	.align	2
.L60:
	.word	reads
	.word	rom
	.word	ram
	.word	stderr
	.word	.LC16
	.size	read16, .-read16
	.section	.rodata
	.align	2
.LC17:
	.ascii	"read32(0x%08X), abort pc 0x%04X\012\000"
	.text
	.align	2
	.global	read32
	.syntax unified
	.arm
	.fpu softvfp
	.type	read32, %function
read32:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	and	r3, r3, #-268435456
	cmp	r3, #-536870912
	beq	.L63
	cmp	r3, #-536870912
	bhi	.L64
	cmp	r3, #0
	beq	.L65
	cmp	r3, #1073741824
	bne	.L64
.L65:
	ldr	r0, [fp, #-24]
	bl	read16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r3, #2
	mov	r0, r3
	bl	read16
	mov	r3, r0
	lsl	r3, r3, #16
	ldr	r2, [fp, #-16]
	orr	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L66
.L63:
	ldr	r3, [fp, #-24]
	cmp	r3, #-536870912
	beq	.L67
	ldr	r3, [fp, #-24]
	cmp	r3, #-536870912
	bcc	.L64
	ldr	r3, [fp, #-24]
	ldr	r2, .L74
	cmp	r3, r2
	bhi	.L64
	ldr	r3, [fp, #-24]
	ldr	r2, .L74+4
	cmp	r3, r2
	bls	.L64
	ldr	r2, [fp, #-24]
	ldr	r3, .L74+8
	add	r3, r2, r3
	cmp	r3, #12
	ldrls	pc, [pc, r3, asl #2]
	b	.L64
.L69:
	.word	.L72
	.word	.L64
	.word	.L64
	.word	.L64
	.word	.L71
	.word	.L64
	.word	.L64
	.word	.L64
	.word	.L70
	.word	.L64
	.word	.L64
	.word	.L64
	.word	.L68
.L67:
	ldr	r3, .L74+12
	ldr	r3, [r3]
	mov	r0, r3
	bl	fgetc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmn	r3, #1
	bne	.L73
	mov	r0, #0
	bl	exit
.L73:
	ldr	r3, [fp, #-16]
	b	.L66
.L72:
	ldr	r3, .L74+16
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, .L74+16
	ldr	r3, [r3]
	bic	r3, r3, #65536
	ldr	r2, .L74+16
	str	r3, [r2]
	ldr	r3, [fp, #-16]
	b	.L66
.L71:
	ldr	r3, .L74+20
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L66
.L70:
	ldr	r3, .L74+24
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L66
.L68:
	ldr	r3, .L74+28
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L66
.L64:
	ldr	r3, .L74+32
	ldr	r4, [r3]
	mov	r0, #15
	bl	read_register
	mov	r3, r0
	ldr	r2, [fp, #-24]
	ldr	r1, .L74+36
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L66:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L75:
	.align	2
.L74:
	.word	-536813540
	.word	-536813553
	.word	536813552
	.word	stdin
	.word	systick_ctrl
	.word	systick_reload
	.word	systick_count
	.word	systick_calibrate
	.word	stderr
	.word	.LC17
	.size	read32, .-read32
	.section	.rodata
	.align	2
.LC18:
	.ascii	"pc has lsbit set 0x%08X\012\000"
	.text
	.align	2
	.global	read_register
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_register, %function
read_register:
	@ 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]
	and	r3, r3, #15
	str	r3, [fp, #-16]
	ldr	r2, .L80
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #15
	bne	.L77
	ldr	r3, [fp, #-8]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L78
	ldr	r3, .L80+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	ldr	r1, .L80+8
	mov	r0, r3
	bl	fprintf
.L78:
	ldr	r3, [fp, #-8]
	bic	r3, r3, #1
	str	r3, [fp, #-8]
.L77:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L81:
	.align	2
.L80:
	.word	reg_norm
	.word	stderr
	.word	.LC18
	.size	read_register, .-read_register
	.section	.rodata
	.align	2
.LC19:
	.ascii	" r%u\012\000"
	.text
	.align	2
	.global	write_register
	.syntax unified
	.arm
	.fpu softvfp
	.type	write_register, %function
write_register:
	@ 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]
	and	r3, r3, #15
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #15
	bne	.L83
	ldr	r3, [fp, #-20]
	bic	r3, r3, #1
	str	r3, [fp, #-20]
.L83:
	ldr	r1, .L90
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-20]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, .L90+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L89
	ldr	r3, .L90+8
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #98
	bl	fputc
	mov	r3, #-2147483648
	str	r3, [fp, #-8]
	b	.L85
.L88:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L86
	ldr	r3, .L90+8
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #49
	bl	fputc
	b	.L87
.L86:
	ldr	r3, .L90+8
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #48
	bl	fputc
.L87:
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #1
	str	r3, [fp, #-8]
.L85:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L88
	ldr	r3, .L90+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	ldr	r1, .L90+12
	mov	r0, r3
	bl	fprintf
.L89:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L91:
	.align	2
.L90:
	.word	reg_norm
	.word	output_vcd
	.word	fpvcd
	.word	.LC19
	.size	write_register, .-write_register
	.align	2
	.global	do_zflag
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_zflag, %function
do_zflag:
	@ 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	.L93
	ldr	r3, .L96
	ldr	r3, [r3]
	orr	r3, r3, #1073741824
	ldr	r2, .L96
	str	r3, [r2]
	b	.L95
.L93:
	ldr	r3, .L96
	ldr	r3, [r3]
	bic	r3, r3, #1073741824
	ldr	r2, .L96
	str	r3, [r2]
.L95:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L97:
	.align	2
.L96:
	.word	cpsr
	.size	do_zflag, .-do_zflag
	.align	2
	.global	do_nflag
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_nflag, %function
do_nflag:
	@ 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
	bge	.L99
	ldr	r3, .L102
	ldr	r3, [r3]
	orr	r3, r3, #-2147483648
	ldr	r2, .L102
	str	r3, [r2]
	b	.L101
.L99:
	ldr	r3, .L102
	ldr	r3, [r3]
	bic	r3, r3, #-2147483648
	ldr	r2, .L102
	str	r3, [r2]
.L101:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L103:
	.align	2
.L102:
	.word	cpsr
	.size	do_nflag, .-do_nflag
	.align	2
	.global	do_cflag
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_cflag, %function
do_cflag:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, .L107
	ldr	r3, [r3]
	bic	r3, r3, #536870912
	ldr	r2, .L107
	str	r3, [r2]
	ldr	r3, [fp, #-16]
	bic	r2, r3, #-2147483648
	ldr	r3, [fp, #-20]
	bic	r3, r3, #-2147483648
	add	r3, r2, r3
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r2, r3, #31
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #31
	add	r2, r2, r3
	ldr	r3, [fp, #-20]
	lsr	r3, r3, #31
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L106
	ldr	r3, .L107
	ldr	r3, [r3]
	orr	r3, r3, #536870912
	ldr	r2, .L107
	str	r3, [r2]
.L106:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L108:
	.align	2
.L107:
	.word	cpsr
	.size	do_cflag, .-do_cflag
	.align	2
	.global	do_vflag
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_vflag, %function
do_vflag:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, .L112
	ldr	r3, [r3]
	bic	r3, r3, #268435456
	ldr	r2, .L112
	str	r3, [r2]
	ldr	r3, [fp, #-16]
	bic	r2, r3, #-2147483648
	ldr	r3, [fp, #-20]
	bic	r3, r3, #-2147483648
	add	r3, r2, r3
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #31
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	and	r2, r3, #1
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #31
	add	r2, r2, r3
	ldr	r3, [fp, #-20]
	lsr	r3, r3, #31
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	eor	r3, r3, r2
	and	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L111
	ldr	r3, .L112
	ldr	r3, [r3]
	orr	r3, r3, #268435456
	ldr	r2, .L112
	str	r3, [r2]
.L111:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L113:
	.align	2
.L112:
	.word	cpsr
	.size	do_vflag, .-do_vflag
	.align	2
	.global	do_cflag_bit
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_cflag_bit, %function
do_cflag_bit:
	@ 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	.L115
	ldr	r3, .L118
	ldr	r3, [r3]
	orr	r3, r3, #536870912
	ldr	r2, .L118
	str	r3, [r2]
	b	.L117
.L115:
	ldr	r3, .L118
	ldr	r3, [r3]
	bic	r3, r3, #536870912
	ldr	r2, .L118
	str	r3, [r2]
.L117:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L119:
	.align	2
.L118:
	.word	cpsr
	.size	do_cflag_bit, .-do_cflag_bit
	.align	2
	.global	do_vflag_bit
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_vflag_bit, %function
do_vflag_bit:
	@ 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	.L121
	ldr	r3, .L124
	ldr	r3, [r3]
	orr	r3, r3, #268435456
	ldr	r2, .L124
	str	r3, [r2]
	b	.L123
.L121:
	ldr	r3, .L124
	ldr	r3, [r3]
	bic	r3, r3, #268435456
	ldr	r2, .L124
	str	r3, [r2]
.L123:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L125:
	.align	2
.L124:
	.word	cpsr
	.size	do_vflag_bit, .-do_vflag_bit
	.section	.rodata
	.align	2
.LC20:
	.ascii	" inst\012\000"
	.align	2
.LC21:
	.ascii	"add pc,... produced an arm address 0x%08X 0x%08X\012"
	.ascii	"\000"
	.align	2
.LC22:
	.ascii	"bkpt 0x%02X\012\000"
	.align	2
.LC23:
	.ascii	"hello\000"
	.align	2
.LC24:
	.ascii	"cannot branch to arm 0x%08X 0x%04X\012\000"
	.align	2
.LC25:
	.ascii	"pop {rc} with an ARM address pc 0x%08X popped 0x%08"
	.ascii	"X\012\000"
	.align	2
.LC26:
	.ascii	"push {lr} with an ARM address pc 0x%08X popped 0x%0"
	.ascii	"8X\012\000"
	.align	2
.LC27:
	.ascii	"setend not implemented\012\000"
	.align	2
.LC28:
	.ascii	"\012\012swi 0x%02X\012\000"
	.align	2
.LC29:
	.ascii	"invalid instruction 0x%08X 0x%04X\012\000"
	.text
	.align	2
	.global	execute
	.syntax unified
	.arm
	.fpu softvfp
	.type	execute, %function
execute:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #60
	mov	r0, #15
	bl	read_register
	str	r0, [fp, #-64]
	ldr	r3, .L334
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L127
	ldr	r3, [fp, #-64]
	and	r3, r3, #-268435456
	cmp	r3, #-268435456
	bne	.L127
	ldr	r3, .L334
	mov	r2, #0
	str	r2, [r3]
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	mov	r0, #0
	bl	write_register
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	mov	r0, #1
	bl	write_register
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	mov	r0, #2
	bl	write_register
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	mov	r0, #3
	bl	write_register
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	mov	r0, #12
	bl	write_register
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	mov	r0, #14
	bl	write_register
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r0, [fp, #-68]
	bl	read32
	mov	r3, r0
	ldr	r2, .L334+48
	str	r3, [r2]
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r1, [fp, #-68]
	mov	r0, #13
	bl	write_register
.L127:
	ldr	r3, .L334+4
	ldr	r3, [r3]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L128
	ldr	r3, .L334+8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L129
	ldr	r3, .L334+8
	ldr	r3, [r3]
	sub	r3, r3, #1
	ldr	r2, .L334+8
	str	r3, [r2]
	b	.L128
.L129:
	ldr	r3, .L334+12
	ldr	r3, [r3]
	ldr	r2, .L334+8
	str	r3, [r2]
	ldr	r3, .L334+4
	ldr	r3, [r3]
	orr	r3, r3, #65536
	ldr	r2, .L334+4
	str	r3, [r2]
.L128:
	ldr	r3, .L334+4
	ldr	r3, [r3]
	and	r3, r3, #3
	cmp	r3, #3
	bne	.L130
	ldr	r3, .L334+4
	ldr	r3, [r3]
	and	r3, r3, #65536
	cmp	r3, #0
	beq	.L130
	ldr	r3, .L334
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L130
	ldr	r3, .L334+16
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L334+16
	str	r3, [r2]
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, .L334+48
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	mov	r0, #14
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	mov	r0, #12
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	mov	r0, #3
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	mov	r0, #2
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	mov	r0, #1
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	mov	r0, #0
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	write32
	ldr	r1, [fp, #-36]
	mov	r0, #13
	bl	write_register
	mov	r0, #60
	bl	fetch32
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-64]
	add	r3, r3, #2
	str	r3, [fp, #-64]
	mvn	r1, #6
	mov	r0, #14
	bl	write_register
	ldr	r3, .L334
	mov	r2, #1
	str	r2, [r3]
.L130:
	ldr	r3, [fp, #-64]
	sub	r3, r3, #2
	mov	r0, r3
	bl	fetch16
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-64]
	add	r3, r3, #2
	str	r3, [fp, #-64]
	ldr	r1, [fp, #-64]
	mov	r0, #15
	bl	write_register
	ldr	r3, .L334+20
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L131
	ldr	r3, .L334+24
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #98
	bl	fputc
	mov	r3, #32768
	str	r3, [fp, #-60]
	b	.L132
.L135:
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-32]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L133
	ldr	r3, .L334+24
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #49
	bl	fputc
	b	.L134
.L133:
	ldr	r3, .L334+24
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #48
	bl	fputc
.L134:
	ldr	r3, [fp, #-60]
	lsr	r3, r3, #1
	str	r3, [fp, #-60]
.L132:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L135
	ldr	r3, .L334+24
	ldr	r3, [r3]
	mov	r2, #6
	mov	r1, #1
	ldr	r0, .L334+28
	bl	fwrite
.L131:
	ldr	r3, .L334+32
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L334+32
	str	r3, [r2]
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	ldr	r2, .L334+36
	cmp	r3, r2
	bne	.L136
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	beq	.L137
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L137:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	beq	.L138
	mov	r2, #1
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_cflag
	mov	r2, #1
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_vflag
	b	.L139
.L138:
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_cflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_vflag
.L139:
	mov	r3, #0
	b	.L140
.L136:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #7168
	bne	.L141
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L141
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_cflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L141:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #12288
	bne	.L142
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_cflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L142:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #6144
	bne	.L143
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_cflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L143:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65280
	cmp	r3, #17408
	bne	.L144
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #4
	and	r3, r3, #8
	ldr	r2, [fp, #-56]
	orr	r3, r2, r3
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #15
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-56]
	cmp	r3, #15
	bne	.L145
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L146
	ldr	r3, .L334+76
	ldr	r0, [r3]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	ldr	r1, .L334+40
	bl	fprintf
	mov	r0, #1
	bl	exit
.L146:
	ldr	r3, [fp, #-52]
	bic	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	add	r3, r3, #2
	str	r3, [fp, #-52]
.L145:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L144:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #40960
	bne	.L147
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #15
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	bic	r3, r3, #3
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L147:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #43008
	bne	.L148
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L148:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+44
	and	r3, r3, r2
	cmp	r3, #45056
	bne	.L149
	ldr	r3, [fp, #-32]
	and	r3, r3, #127
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	mov	r0, #13
	bl	write_register
	mov	r3, #0
	b	.L140
.L149:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	cmp	r3, #16384
	bne	.L150
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L150:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #4096
	bne	.L151
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L152
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bge	.L153
	mov	r0, #1
	bl	do_cflag_bit
	mvn	r3, #0
	str	r3, [fp, #-52]
	b	.L154
.L153:
	mov	r0, #0
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L154
.L152:
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r3, [fp, #-52]
	and	r3, r3, #-2147483648
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	lsr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L154
	ldr	r3, [fp, #-48]
	rsb	r3, r3, #32
	mvn	r2, #0
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	orr	r3, r3, r2
	str	r3, [fp, #-52]
.L154:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L151:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	cmp	r3, #16640
	bne	.L155
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-16]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-16]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L156
	ldr	r3, [fp, #-48]
	cmp	r3, #31
	bhi	.L157
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r3, [fp, #-52]
	and	r3, r3, #-2147483648
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	lsr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L156
	ldr	r3, [fp, #-48]
	rsb	r3, r3, #32
	mvn	r2, #0
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	orr	r3, r3, r2
	str	r3, [fp, #-52]
	b	.L156
.L157:
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bge	.L158
	mov	r0, #1
	bl	do_cflag_bit
	mvn	r3, #0
	str	r3, [fp, #-52]
	b	.L156
.L158:
	mov	r0, #0
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
.L156:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L155:
	ldr	r3, [fp, #-32]
	and	r3, r3, #61440
	cmp	r3, #53248
	bne	.L333
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	and	r3, r3, #128
	cmp	r3, #0
	beq	.L160
	ldr	r3, [fp, #-48]
	mvn	r3, r3, lsl #24
	mvn	r3, r3, lsr #24
	str	r3, [fp, #-48]
.L160:
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #15
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-64]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-24]
	cmp	r3, #15
	ldrls	pc, [pc, r3, asl #2]
	b	.L159
.L162:
	.word	.L319
	.word	.L320
	.word	.L321
	.word	.L322
	.word	.L323
	.word	.L324
	.word	.L325
	.word	.L326
	.word	.L327
	.word	.L328
	.word	.L329
	.word	.L330
	.word	.L331
	.word	.L332
	.word	.L159
	.word	.L159
.L319:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #1073741824
	cmp	r3, #0
	beq	.L178
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L178:
	mov	r3, #0
	b	.L140
.L320:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #1073741824
	cmp	r3, #0
	bne	.L179
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L179:
	mov	r3, #0
	b	.L140
.L321:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	beq	.L180
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L180:
	mov	r3, #0
	b	.L140
.L322:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	bne	.L181
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L181:
	mov	r3, #0
	b	.L140
.L323:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L182
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L182:
	mov	r3, #0
	b	.L140
.L324:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	blt	.L183
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L183:
	mov	r3, #0
	b	.L140
.L325:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	beq	.L184
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L184:
	mov	r3, #0
	b	.L140
.L326:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	bne	.L185
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L185:
	mov	r3, #0
	b	.L140
.L327:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	beq	.L186
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #1073741824
	cmp	r3, #0
	bne	.L186
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L186:
	mov	r3, #0
	b	.L140
.L328:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #1073741824
	cmp	r3, #0
	bne	.L187
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	bne	.L188
.L187:
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L188:
	mov	r3, #0
	b	.L140
.L329:
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L189
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	beq	.L189
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L189:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	blt	.L190
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	bne	.L190
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L190:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L191
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L191:
	mov	r3, #0
	b	.L140
.L330:
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	blt	.L192
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	beq	.L192
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L192:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	bne	.L193
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L193
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L193:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L194
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L194:
	mov	r3, #0
	b	.L140
.L331:
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L195
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	beq	.L195
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L195:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	blt	.L196
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	bne	.L196
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L196:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #1073741824
	cmp	r3, #0
	beq	.L197
	mov	r3, #0
	str	r3, [fp, #-44]
.L197:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L198
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L198:
	mov	r3, #0
	b	.L140
.L335:
	.align	2
.L334:
	.word	handler_mode
	.word	systick_ctrl
	.word	systick_count
	.word	systick_reload
	.word	systick_ints
	.word	output_vcd
	.word	fpvcd
	.word	.LC20
	.word	instructions
	.word	16704
	.word	.LC21
	.word	65408
	.word	cpsr
	.word	17280
	.word	.LC22
	.word	4094
	.word	.LC23
	.word	18304
	.word	65415
	.word	stderr
	.word	.LC24
	.word	17088
	.word	17024
	.word	65512
	.word	46688
	.word	16448
	.word	65472
	.word	16512
.L332:
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	blt	.L199
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	beq	.L199
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L199:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #268435456
	cmp	r3, #0
	bne	.L200
	ldr	r3, .L334+48
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L200
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L200:
	ldr	r3, .L334+48
	ldr	r3, [r3]
	and	r3, r3, #1073741824
	cmp	r3, #0
	beq	.L201
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L201:
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L202
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
.L202:
	mov	r3, #0
	b	.L140
.L333:
	nop
.L159:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #57344
	bne	.L203
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #21
	lsr	r3, r3, #21
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1024
	cmp	r3, #0
	beq	.L204
	ldr	r3, [fp, #-48]
	mvn	r3, r3, lsl #21
	mvn	r3, r3, lsr #21
	str	r3, [fp, #-48]
.L204:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-64]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
	mov	r3, #0
	b	.L140
.L203:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	ldr	r2, .L334+52
	cmp	r3, r2
	bne	.L205
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	ldr	r2, [fp, #-44]
	and	r3, r3, r2
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L205:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65280
	cmp	r3, #48640
	bne	.L206
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, .L334+76
	ldr	r3, [r3]
	ldr	r2, [fp, #-48]
	ldr	r1, .L334+56
	mov	r0, r3
	bl	fprintf
	mov	r3, #1
	b	.L140
.L206:
	ldr	r3, [fp, #-32]
	and	r3, r3, #57344
	cmp	r3, #57344
	bne	.L207
	ldr	r3, [fp, #-32]
	and	r3, r3, #6144
	cmp	r3, #4096
	bne	.L208
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #21
	lsr	r3, r3, #21
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1024
	cmp	r3, #0
	beq	.L209
	ldr	r3, [fp, #-48]
	mvn	r3, r3, lsl #21
	mvn	r3, r3, lsr #21
	str	r3, [fp, #-48]
.L209:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #12
	str	r3, [fp, #-48]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-64]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r1, [fp, #-48]
	mov	r0, #14
	bl	write_register
	mov	r3, #0
	b	.L140
.L208:
	ldr	r3, [fp, #-32]
	and	r3, r3, #6144
	cmp	r3, #6144
	bne	.L210
	mov	r0, #14
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsl	r2, r3, #1
	ldr	r3, .L334+60
	and	r3, r3, r2
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-64]
	sub	r3, r3, #2
	orr	r3, r3, #1
	mov	r1, r3
	mov	r0, #14
	bl	write_register
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
	mov	r3, #0
	b	.L140
.L210:
	ldr	r3, [fp, #-32]
	and	r3, r3, #6144
	cmp	r3, #2048
	bne	.L207
	mov	r0, #14
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsl	r2, r3, #1
	ldr	r3, .L334+60
	and	r3, r3, r2
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	bic	r3, r3, #3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r0, .L334+64
	bl	puts
	ldr	r3, [fp, #-64]
	sub	r3, r3, #2
	orr	r3, r3, #1
	mov	r1, r3
	mov	r0, #14
	bl	write_register
	ldr	r1, [fp, #-48]
	mov	r0, #15
	bl	write_register
	mov	r3, #0
	b	.L140
.L207:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+72
	and	r3, r3, r2
	ldr	r2, .L334+68
	cmp	r3, r2
	bne	.L211
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #15
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	add	r3, r3, #2
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L212
	ldr	r3, [fp, #-64]
	sub	r3, r3, #2
	orr	r3, r3, #1
	mov	r1, r3
	mov	r0, #14
	bl	write_register
	ldr	r3, [fp, #-52]
	bic	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	mov	r0, #15
	bl	write_register
	mov	r3, #0
	b	.L140
.L212:
	ldr	r3, .L334+76
	ldr	r0, [r3]
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-64]
	ldr	r1, .L334+80
	bl	fprintf
	mov	r3, #1
	b	.L140
.L211:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+72
	and	r3, r3, r2
	cmp	r3, #18176
	bne	.L213
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #15
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	add	r3, r3, #2
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L214
	ldr	r3, [fp, #-52]
	bic	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	mov	r0, #15
	bl	write_register
	mov	r3, #0
	b	.L140
.L214:
	ldr	r3, .L334+76
	ldr	r0, [r3]
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-64]
	ldr	r1, .L334+80
	bl	fprintf
	mov	r3, #1
	b	.L140
.L213:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	ldr	r2, .L334+84
	cmp	r3, r2
	bne	.L215
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_cflag
	mov	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L215:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #10240
	bne	.L216
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L216:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	ldr	r2, .L334+88
	cmp	r3, r2
	bne	.L217
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L217:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65280
	cmp	r3, #17664
	bne	.L218
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #4
	and	r3, r3, #8
	ldr	r2, [fp, #-28]
	orr	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #15
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L218:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+92
	and	r3, r3, r2
	ldr	r2, .L334+96
	cmp	r3, r2
	bne	.L219
	mov	r3, #1
	b	.L140
.L219:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	cmp	r3, #17920
	bne	.L220
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L220:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	ldr	r2, .L334+100
	cmp	r3, r2
	bne	.L221
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	eor	r3, r3, r2
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L221:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #51200
	bne	.L222
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #1
	str	r3, [fp, #-48]
	b	.L223
.L225:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L224
	ldr	r0, [fp, #-40]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	write_register
	ldr	r3, [fp, #-40]
	add	r3, r3, #4
	str	r3, [fp, #-40]
.L224:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L223:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L225
	mov	r2, #1
	ldr	r3, [fp, #-28]
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	and	r3, r3, r2
	cmp	r3, #0
	bne	.L226
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-28]
	bl	write_register
.L226:
	mov	r3, #0
	b	.L140
.L222:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #26624
	bne	.L227
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read32
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L227:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #22528
	bne	.L228
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read32
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L228:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #18432
	bne	.L229
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #15
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	bic	r3, r3, #3
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read32
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L229:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #38912
	bne	.L230
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read32
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L230:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #30720
	bne	.L231
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	bic	r3, r3, #1
	mov	r0, r3
	bl	read16
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L232
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #8
	str	r3, [fp, #-52]
.L232:
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L231:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #23552
	bne	.L233
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	bic	r3, r3, #1
	mov	r0, r3
	bl	read16
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L234
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #8
	str	r3, [fp, #-52]
.L234:
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L233:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #34816
	bne	.L235
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read16
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L235:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #23040
	bne	.L236
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read16
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L236:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #22016
	bne	.L237
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	bic	r3, r3, #1
	mov	r0, r3
	bl	read16
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L238
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #8
	str	r3, [fp, #-52]
.L238:
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #128
	cmp	r3, #0
	beq	.L239
	ldr	r3, [fp, #-52]
	mvn	r3, r3, lsl #24
	mvn	r3, r3, lsr #24
	str	r3, [fp, #-52]
.L239:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L237:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #24064
	bne	.L240
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	read16
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #32768
	cmp	r3, #0
	beq	.L241
	ldr	r3, [fp, #-52]
	mvn	r3, r3, lsl #16
	mvn	r3, r3, lsr #16
	str	r3, [fp, #-52]
.L241:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L240:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #0
	bne	.L242
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L243
	ldr	r3, [fp, #-48]
	rsb	r3, r3, #32
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	lsl	r3, r2, r3
	str	r3, [fp, #-52]
.L243:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L242:
	ldr	r2, [fp, #-32]
	ldr	r3, .L334+104
	and	r3, r3, r2
	ldr	r2, .L334+108
	cmp	r3, r2
	bne	.L244
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-16]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-16]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L245
	ldr	r3, [fp, #-48]
	cmp	r3, #31
	bhi	.L246
	ldr	r3, [fp, #-48]
	rsb	r3, r3, #32
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	lsl	r3, r2, r3
	str	r3, [fp, #-52]
	b	.L245
.L246:
	ldr	r3, [fp, #-48]
	cmp	r3, #32
	bne	.L247
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	mov	r0, r3
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L245
.L247:
	mov	r0, #0
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
.L245:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L244:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #2048
	bne	.L248
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L249
	ldr	r3, [fp, #-52]
	and	r3, r3, #-2147483648
	mov	r0, r3
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L250
.L249:
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	lsr	r3, r2, r3
	str	r3, [fp, #-52]
.L250:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L248:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336
	cmp	r3, r2
	bne	.L251
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-16]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-16]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L252
	ldr	r3, [fp, #-48]
	cmp	r3, #31
	bhi	.L253
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	lsr	r3, r2, r3
	str	r3, [fp, #-52]
	b	.L252
.L253:
	ldr	r3, [fp, #-48]
	cmp	r3, #32
	bne	.L254
	ldr	r3, [fp, #-52]
	and	r3, r3, #-2147483648
	mov	r0, r3
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L252
.L254:
	mov	r0, #0
	bl	do_cflag_bit
	mov	r3, #0
	str	r3, [fp, #-52]
.L252:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L251:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #8192
	bne	.L255
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-48]
	bl	do_nflag
	ldr	r0, [fp, #-48]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L255:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	cmp	r3, #7168
	bne	.L256
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r0, #0
	bl	do_cflag_bit
	mov	r0, #0
	bl	do_vflag_bit
	mov	r3, #0
	b	.L140
.L256:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65280
	cmp	r3, #17920
	bne	.L257
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #4
	and	r3, r3, #8
	ldr	r2, [fp, #-56]
	orr	r3, r2, r3
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #15
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-56]
	cmp	r3, #15
	bne	.L258
	ldr	r3, [fp, #-52]
	bic	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	add	r3, r3, #2
	str	r3, [fp, #-52]
.L258:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L257:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+4
	cmp	r3, r2
	bne	.L259
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	mul	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L259:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+8
	cmp	r3, r2
	bne	.L260
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	mvn	r3, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L260:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+12
	cmp	r3, r2
	bne	.L261
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	rsb	r3, r3, #0
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-44]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	do_cflag
	ldr	r3, [fp, #-44]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	mov	r0, #0
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L261:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	cmp	r3, #17152
	bne	.L262
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L262:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #48128
	bne	.L263
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #1
	str	r3, [fp, #-48]
	b	.L264
.L266:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L265
	ldr	r0, [fp, #-40]
	bl	read32
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	write_register
	ldr	r3, [fp, #-40]
	add	r3, r3, #4
	str	r3, [fp, #-40]
.L265:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L264:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L266
	ldr	r3, [fp, #-32]
	and	r3, r3, #256
	cmp	r3, #0
	beq	.L267
	ldr	r0, [fp, #-40]
	bl	read32
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L268
	ldr	r3, .L336+84
	ldr	r0, [r3]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	ldr	r1, .L336+16
	bl	fprintf
	ldr	r3, [fp, #-52]
	bic	r3, r3, #1
	str	r3, [fp, #-52]
.L268:
	ldr	r3, [fp, #-52]
	add	r3, r3, #2
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	mov	r0, #15
	bl	write_register
	ldr	r3, [fp, #-40]
	add	r3, r3, #4
	str	r3, [fp, #-40]
.L267:
	ldr	r1, [fp, #-40]
	mov	r0, #13
	bl	write_register
	mov	r3, #0
	b	.L140
.L263:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #46080
	bne	.L269
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #1
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L270
.L272:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L271
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L271:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L270:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L272
	ldr	r3, [fp, #-32]
	and	r3, r3, #256
	cmp	r3, #0
	beq	.L273
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L273:
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #2
	str	r3, [fp, #-52]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-52]
	sub	r3, r2, r3
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #1
	str	r3, [fp, #-48]
	b	.L274
.L276:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L275
	ldr	r0, [fp, #-44]
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	write32
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
.L275:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L274:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L276
	ldr	r3, [fp, #-32]
	and	r3, r3, #256
	cmp	r3, #0
	beq	.L277
	mov	r0, #14
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write32
	ldr	r3, [fp, #-52]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L277
	ldr	r3, .L336+84
	ldr	r0, [r3]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	ldr	r1, .L336+20
	bl	fprintf
.L277:
	ldr	r1, [fp, #-40]
	mov	r0, #13
	bl	write_register
	mov	r3, #0
	b	.L140
.L269:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	cmp	r3, #47616
	bne	.L278
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #24
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #8
	lsl	r3, r3, #16
	and	r3, r3, #16711680
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #16
	lsl	r3, r3, #8
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #24
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L278:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+24
	cmp	r3, r2
	bne	.L279
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #8
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #16
	lsl	r3, r3, #24
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #24
	lsl	r3, r3, #16
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L279:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+28
	cmp	r3, r2
	bne	.L280
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #8
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r2, [fp, #-52]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #32768
	cmp	r3, #0
	beq	.L281
	ldr	r3, [fp, #-52]
	mvn	r3, r3, lsl #16
	mvn	r3, r3, lsr #16
	str	r3, [fp, #-52]
	b	.L282
.L281:
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-52]
.L282:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L280:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+32
	cmp	r3, r2
	bne	.L283
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-16]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-16]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L284
	ldr	r3, [fp, #-44]
	and	r3, r3, #31
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	bne	.L285
	ldr	r3, [fp, #-52]
	and	r3, r3, #-2147483648
	mov	r0, r3
	bl	do_cflag_bit
	b	.L284
.L285:
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	mov	r2, #1
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, r2
	mov	r0, r3
	bl	do_cflag_bit
	ldr	r3, [fp, #-44]
	rsb	r3, r3, #32
	ldr	r2, [fp, #-52]
	lsl	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-44]
	lsr	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-48]
	orr	r3, r2, r3
	str	r3, [fp, #-52]
.L284:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L283:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+36
	cmp	r3, r2
	bne	.L286
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, .L336+60
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	bne	.L287
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
.L287:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, .L336+60
	ldr	r3, [r3]
	and	r3, r3, #536870912
	cmp	r3, #0
	beq	.L288
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	b	.L289
.L288:
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
.L289:
	mov	r3, #0
	b	.L140
.L286:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+40
	and	r3, r3, r2
	ldr	r2, .L336+44
	cmp	r3, r2
	bne	.L290
	ldr	r3, .L336+84
	ldr	r3, [r3]
	mov	r2, #23
	mov	r1, #1
	ldr	r0, .L336+48
	bl	fwrite
	mov	r3, #1
	b	.L140
.L290:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #49152
	bne	.L291
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #1
	str	r3, [fp, #-48]
	b	.L292
.L294:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L293
	ldr	r0, [fp, #-44]
	bl	read_register
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	write32
	ldr	r3, [fp, #-40]
	add	r3, r3, #4
	str	r3, [fp, #-40]
.L293:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L292:
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L294
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-28]
	bl	write_register
	mov	r3, #0
	b	.L140
.L291:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #24576
	bne	.L295
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	write32
	mov	r3, #0
	b	.L140
.L295:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #20480
	bne	.L296
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	write32
	mov	r3, #0
	b	.L140
.L296:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #36864
	bne	.L297
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #13
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	write32
	mov	r3, #0
	b	.L140
.L297:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #28672
	bne	.L298
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	bic	r3, r3, #1
	mov	r0, r3
	bl	read16
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L299
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #8
	ldr	r2, [fp, #-44]
	orr	r3, r2, r3
	str	r3, [fp, #-44]
	b	.L300
.L299:
	ldr	r3, [fp, #-44]
	and	r3, r3, #65280
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	ldr	r2, [fp, #-44]
	orr	r3, r2, r3
	str	r3, [fp, #-44]
.L300:
	ldr	r3, [fp, #-48]
	bic	r2, r3, #1
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	mov	r0, r2
	bl	write16
	mov	r3, #0
	b	.L140
.L298:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #21504
	bne	.L301
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-48]
	bic	r3, r3, #1
	mov	r0, r3
	bl	read16
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-48]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L302
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #8
	ldr	r2, [fp, #-44]
	orr	r3, r2, r3
	str	r3, [fp, #-44]
	b	.L303
.L302:
	ldr	r3, [fp, #-44]
	and	r3, r3, #65280
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	ldr	r2, [fp, #-44]
	orr	r3, r2, r3
	str	r3, [fp, #-44]
.L303:
	ldr	r3, [fp, #-48]
	bic	r2, r3, #1
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	mov	r0, r2
	bl	write16
	mov	r3, #0
	b	.L140
.L337:
	.align	2
.L336:
	.word	16576
	.word	17216
	.word	17344
	.word	16960
	.word	.LC25
	.word	.LC26
	.word	47680
	.word	47808
	.word	16832
	.word	16768
	.word	65527
	.word	46672
	.word	.LC27
	.word	65408
	.word	45184
	.word	cpsr
	.word	.LC28
	.word	45632
	.word	45760
	.word	65472
	.word	45696
	.word	stderr
	.word	.LC29
.L301:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #32768
	bne	.L304
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #31
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r2, r0
	ldr	r3, [fp, #-48]
	add	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-48]
	bl	write16
	mov	r3, #0
	b	.L140
.L304:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #20992
	bne	.L305
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	mov	r4, r0
	ldr	r0, [fp, #-20]
	bl	read_register
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-48]
	bl	write16
	mov	r3, #0
	b	.L140
.L305:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #7680
	bne	.L306
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-48]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L306:
	ldr	r3, [fp, #-32]
	and	r3, r3, #63488
	cmp	r3, #14336
	bne	.L307
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #8
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r0, [fp, #-56]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L307:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65024
	cmp	r3, #6656
	bne	.L308
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #6
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_cflag
	ldr	r3, [fp, #-48]
	mvn	r3, r3
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	do_vflag
	mov	r3, #0
	b	.L140
.L308:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+52
	and	r3, r3, r2
	ldr	r2, .L336+56
	cmp	r3, r2
	bne	.L309
	ldr	r3, [fp, #-32]
	and	r3, r3, #127
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #2
	str	r3, [fp, #-48]
	mov	r0, #13
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-44]
	ldr	r1, [fp, #-44]
	mov	r0, #13
	bl	write_register
	mov	r3, #0
	b	.L140
.L309:
	ldr	r3, [fp, #-32]
	and	r3, r3, #65280
	cmp	r3, #57088
	bne	.L310
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	cmp	r3, #204
	bne	.L311
	ldr	r3, .L336+60
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #0
	bl	write_register
	mov	r3, #0
	b	.L140
.L311:
	ldr	r3, .L336+84
	ldr	r3, [r3]
	ldr	r2, [fp, #-48]
	ldr	r1, .L336+64
	mov	r0, r3
	bl	fprintf
	mov	r3, #1
	b	.L140
.L310:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+68
	cmp	r3, r2
	bne	.L312
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #128
	cmp	r3, #0
	beq	.L313
	ldr	r3, [fp, #-52]
	mvn	r3, r3, lsl #24
	mvn	r3, r3, lsr #24
	str	r3, [fp, #-52]
.L313:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L312:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	cmp	r3, #45568
	bne	.L314
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	and	r3, r3, #32768
	cmp	r3, #0
	beq	.L315
	ldr	r3, [fp, #-52]
	mvn	r3, r3, lsl #16
	mvn	r3, r3, lsr #16
	str	r3, [fp, #-52]
.L315:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L314:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	cmp	r3, #16896
	bne	.L316
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	str	r3, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	do_nflag
	ldr	r0, [fp, #-52]
	bl	do_zflag
	mov	r3, #0
	b	.L140
.L316:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+72
	cmp	r3, r2
	bne	.L317
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L317:
	ldr	r2, [fp, #-32]
	ldr	r3, .L336+76
	and	r3, r3, r2
	ldr	r2, .L336+80
	cmp	r3, r2
	bne	.L318
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-32]
	lsr	r3, r3, #3
	and	r3, r3, #7
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	read_register
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	str	r3, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-56]
	bl	write_register
	mov	r3, #0
	b	.L140
.L318:
	ldr	r3, .L336+84
	ldr	r0, [r3]
	ldr	r3, [fp, #-64]
	sub	r2, r3, #4
	ldr	r3, [fp, #-32]
	ldr	r1, .L336+88
	bl	fprintf
	mov	r3, #1
.L140:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	execute, .-execute
	.section	.rodata
	.align	2
.LC30:
	.ascii	"reset vector with an ARM address 0x%08X\012\000"
	.text
	.align	2
	.global	reset
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset, %function
reset:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r2, #1048576
	mov	r1, #255
	ldr	r0, .L341
	bl	memset
	ldr	r3, .L341+4
	mov	r2, #4
	str	r2, [r3]
	ldr	r3, .L341+8
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L341+12
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L341+16
	ldr	r2, .L341+20
	str	r2, [r3]
	ldr	r3, .L341+24
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L341+28
	mov	r2, #0
	str	r2, [r3]
	mov	r0, #0
	bl	fetch32
	mov	r3, r0
	ldr	r2, .L341+32
	str	r3, [r2, #52]
	ldr	r3, .L341+32
	mvn	r2, #0
	str	r2, [r3, #56]
	mov	r0, #4
	bl	fetch32
	mov	r3, r0
	ldr	r2, .L341+32
	str	r3, [r2, #60]
	ldr	r3, .L341+32
	ldr	r3, [r3, #60]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L339
	ldr	r3, .L341+36
	ldr	r3, [r3]
	ldr	r2, .L341+32
	ldr	r2, [r2, #60]
	ldr	r1, .L341+40
	mov	r0, r3
	bl	fprintf
	mov	r0, #1
	bl	exit
.L339:
	ldr	r3, .L341+32
	ldr	r3, [r3, #60]
	bic	r3, r3, #1
	ldr	r2, .L341+32
	str	r3, [r2, #60]
	ldr	r3, .L341+32
	ldr	r3, [r3, #60]
	add	r3, r3, #2
	ldr	r2, .L341+32
	str	r3, [r2, #60]
	ldr	r3, .L341+44
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L341+48
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L341+52
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L341+56
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
.L342:
	.align	2
.L341:
	.word	ram
	.word	systick_ctrl
	.word	systick_reload
	.word	systick_count
	.word	systick_calibrate
	.word	11259375
	.word	handler_mode
	.word	cpsr
	.word	reg_norm
	.word	stderr
	.word	.LC30
	.word	instructions
	.word	fetches
	.word	reads
	.word	writes
	.size	reset, .-reset
	.section	.rodata
	.align	2
.LC31:
	.ascii	"#%u\012\000"
	.text
	.align	2
	.global	run
	.syntax unified
	.arm
	.fpu softvfp
	.type	run, %function
run:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	reset
.L347:
	ldr	r3, .L351
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L344
	ldr	r3, .L351+4
	ldr	r0, [r3]
	ldr	r3, .L351+8
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r1, .L351+8
	str	r2, [r1]
	mov	r2, r3
	ldr	r1, .L351+12
	bl	fprintf
.L344:
	bl	execute
	mov	r3, r0
	cmp	r3, #0
	bne	.L350
	b	.L347
.L350:
	nop
	bl	dump_counters
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
.L352:
	.align	2
.L351:
	.word	output_vcd
	.word	fpvcd
	.word	vcdcount
	.word	.LC31
	.size	run, .-run
	.section	.rodata
	.align	2
.LC32:
	.ascii	"bin file not specified\012\000"
	.align	2
.LC33:
	.ascii	"--vcd\000"
	.align	2
.LC34:
	.ascii	"rb\000"
	.align	2
.LC35:
	.ascii	"Error opening file [%s]\012\000"
	.align	2
.LC36:
	.ascii	"output vcd enabled\012\000"
	.align	2
.LC37:
	.ascii	"wt\000"
	.align	2
.LC38:
	.ascii	"output.vcd\000"
	.align	2
.LC39:
	.ascii	"Error creating file output.vcd\012\000"
	.align	2
.LC40:
	.ascii	"$version Generated by thumbulator $end\012\000"
	.align	2
.LC41:
	.ascii	"$timescale 1ns $end\012\000"
	.align	2
.LC42:
	.ascii	"$scope module thumb $end\012\000"
	.align	2
.LC43:
	.ascii	"$var wire 32 r%u r%u $end\012\000"
	.align	2
.LC44:
	.ascii	"$var wire 16 inst inst $end\012\000"
	.align	2
.LC45:
	.ascii	"$upscope $end\012\000"
	.align	2
.LC46:
	.ascii	"$enddefinitions $end\012\000"
	.align	2
.LC47:
	.ascii	"b0 r%u\012\000"
	.align	2
.LC48:
	.ascii	"b0 inst\012\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	bgt	.L354
	ldr	r3, .L367
	ldr	r3, [r3]
	mov	r2, #23
	mov	r1, #1
	ldr	r0, .L367+4
	bl	fwrite
	mov	r3, #1
	b	.L355
.L354:
	ldr	r3, .L367+8
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #2
	str	r3, [fp, #-12]
	b	.L356
.L358:
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, .L367+12
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L357
	ldr	r3, .L367+8
	mov	r2, #1
	str	r2, [r3]
.L357:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L356:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L358
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r1, .L367+16
	mov	r0, r3
	bl	fopen
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L359
	ldr	r3, .L367
	ldr	r0, [r3]
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L367+20
	bl	fprintf
	mov	r3, #1
	b	.L355
.L359:
	mov	r2, #1048576
	mov	r1, #255
	ldr	r0, .L367+24
	bl	memset
	ldr	r3, [fp, #-8]
	mov	r2, #1048576
	mov	r1, #1
	ldr	r0, .L367+24
	bl	fread
	str	r0, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	fclose
	ldr	r3, .L367+8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L360
	ldr	r3, .L367
	ldr	r3, [r3]
	mov	r2, #19
	mov	r1, #1
	ldr	r0, .L367+28
	bl	fwrite
	ldr	r1, .L367+32
	ldr	r0, .L367+36
	bl	fopen
	mov	r3, r0
	ldr	r2, .L367+40
	str	r3, [r2]
	ldr	r3, .L367+40
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L361
	ldr	r3, .L367
	ldr	r3, [r3]
	mov	r2, #31
	mov	r1, #1
	ldr	r0, .L367+44
	bl	fwrite
	ldr	r3, .L367+8
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #1
	b	.L355
.L361:
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #39
	mov	r1, #1
	ldr	r0, .L367+48
	bl	fwrite
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #20
	mov	r1, #1
	ldr	r0, .L367+52
	bl	fwrite
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #25
	mov	r1, #1
	ldr	r0, .L367+56
	bl	fwrite
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L362
.L363:
	ldr	r3, .L367+40
	ldr	r0, [r3]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r1, .L367+60
	bl	fprintf
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L362:
	ldr	r3, [fp, #-12]
	cmp	r3, #15
	bls	.L363
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #28
	mov	r1, #1
	ldr	r0, .L367+64
	bl	fwrite
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #14
	mov	r1, #1
	ldr	r0, .L367+68
	bl	fwrite
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #21
	mov	r1, #1
	ldr	r0, .L367+72
	bl	fwrite
	ldr	r3, .L367+76
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L367+40
	ldr	r0, [r3]
	ldr	r3, .L367+76
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r1, .L367+76
	str	r2, [r1]
	mov	r2, r3
	ldr	r1, .L367+80
	bl	fprintf
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L364
.L365:
	ldr	r3, .L367+40
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, .L367+84
	mov	r0, r3
	bl	fprintf
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L364:
	ldr	r3, [fp, #-12]
	cmp	r3, #15
	bls	.L365
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r2, #8
	mov	r1, #1
	ldr	r0, .L367+88
	bl	fwrite
.L360:
	mov	r2, #1048576
	mov	r1, #0
	ldr	r0, .L367+92
	bl	memset
	bl	run
	ldr	r3, .L367+8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L366
	ldr	r3, .L367+40
	ldr	r3, [r3]
	mov	r0, r3
	bl	fclose
.L366:
	mov	r3, #0
.L355:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L368:
	.align	2
.L367:
	.word	stderr
	.word	.LC32
	.word	output_vcd
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	rom
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	fpvcd
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	.LC46
	.word	vcdcount
	.word	.LC31
	.word	.LC47
	.word	.LC48
	.word	ram
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
