	.file	"keypad.c"
	.data
	.align	2
	.type	lastkey, %object
	.size	lastkey, 4
lastkey:
	.word	-1
	.type	keys, %object
	.size	keys, 16
keys:
	.byte	49
	.byte	50
	.byte	51
	.byte	65
	.byte	52
	.byte	53
	.byte	54
	.byte	66
	.byte	55
	.byte	56
	.byte	57
	.byte	67
	.byte	42
	.byte	48
	.byte	35
	.byte	68
	.section	.rodata
	.align	2
.LC0:
	.ascii	"%c\000"
	.text
	.align	2
	.global	main
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 28
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-28]
	bl	keypad_init
	ldr	r3, .L11
	ldr	r0, [r3, #0]
	mov	r1, #0
	mov	r2, #2
	mov	r3, #0
	bl	setvbuf
.L2:
	bl	get_keys
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-24]
	eor	r3, r2, r3
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L5
	ldr	r0, [fp, #-40]
	bl	debounce
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-24]
	eor	r2, r2, r3
	ldr	r3, [fp, #-40]
	and	r3, r3, r2
	str	r3, [fp, #-40]
.L5:
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L6
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	and	r1, r2, r3
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	and	r3, r2, r3
	mov	r0, r1
	mov	r1, r3
	bl	keypad_event
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	and	r3, r2, r3
	mvn	r2, r3
	ldr	r3, [fp, #-28]
	and	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	and	r2, r2, r3
	ldr	r3, [fp, #-28]
	orr	r3, r3, r2
	str	r3, [fp, #-28]
.L6:
	ldr	r3, .L11+4
	ldr	r3, [r3, #0]
	cmn	r3, #1
	beq	.L7
	sub	r3, fp, #36
	mov	r0, r3
	mov	r1, #0
	bl	gettimeofday
	mvn	r3, #23
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, .L11+8
	ldr	r1, [r3, #0]
	ldr	r3, [r2, #0]
	cmp	r1, r3
	bgt	.L9
	mvn	r3, #23
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, .L11+8
	ldr	r1, [r3, #0]
	ldr	r3, [r2, #0]
	cmp	r1, r3
	bne	.L7
	mvn	r3, #23
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, .L11+8
	ldr	r1, [r3, #4]
	ldr	r3, [r2, #4]
	cmp	r1, r3
	bge	.L9
	b	.L7
.L9:
	ldr	r3, .L11+4
	ldr	r0, .L11+12
	ldr	r1, [r3, #0]
	bl	printf
	ldr	r2, .L11+8
	ldr	r3, .L11+8
	ldr	r3, [r3, #4]
	str	r3, [r2, #4]
	ldr	ip, .L11+8
	ldr	r0, .L11+8
	ldr	r3, .L11+8
	ldr	r1, [r3, #4]
	ldr	r3, .L11+16
	smull	r2, r3, r1, r3
	mov	r2, r3, asr #18
	mov	r3, r1, asr #31
	rsb	r2, r3, r2
	ldr	r3, [r0, #0]
	add	r3, r3, r2
	str	r3, [ip, #0]
	ldr	ip, .L11+8
	ldr	r3, .L11+8
	ldr	r0, [r3, #4]
	ldr	r3, .L11+16
	smull	r2, r3, r0, r3
	mov	r2, r3, asr #18
	mov	r3, r0, asr #31
	rsb	r1, r3, r2
	mov	r2, r1
	mov	r2, r2, asl #5
	rsb	r2, r1, r2
	mov	r3, r2, asl #6
	rsb	r3, r2, r3
	mov	r3, r3, asl #3
	add	r3, r3, r1
	mov	r3, r3, asl #6
	rsb	r3, r3, r0
	str	r3, [ip, #4]
.L7:
	ldr	r0, .L11+20
	bl	usleep
	b	.L2
.L12:
	.align	2
.L11:
	.word	stdout
	.word	lastkey
	.word	repeat_time
	.word	.LC0
	.word	1125899907
	.word	33333
	.size	main, .-main
	.section	.rodata
	.align	2
.LC1:
	.ascii	"/dev/mem\000"
	.text
	.align	2
	.global	keypad_init
	.type	keypad_init, %function
keypad_init:
	@ args = 0, pretend = 0, frame = 4
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {r4, fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #12
	ldr	r0, .L16
	ldr	r1, .L16+4
	bl	open
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmn	r3, #1
	bne	.L14
	ldr	r0, .L16
	bl	perror
	mov	r0, #2
	bl	exit
.L14:
	ldr	r4, .L16+8
	bl	getpagesize
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-20]
	str	r3, [sp, #0]
	ldr	r3, .L16+12
	str	r3, [sp, #4]
	mov	r0, #0
	mov	r1, r2
	mov	r2, #3
	mov	r3, #1
	bl	mmap
	str	r0, [r4, #0]
	ldr	r4, .L16+16
	bl	getpagesize
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-20]
	str	r3, [sp, #0]
	mov	r3, #570425344
	str	r3, [sp, #4]
	mov	r0, #0
	mov	r1, r2
	mov	r2, #3
	mov	r3, #1
	bl	mmap
	str	r0, [r4, #0]
	ldr	r2, .L16+20
	ldr	r3, .L16+16
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	and	r3, r3, #3
	str	r3, [r2, #0]
	ldr	r2, .L16+24
	ldr	r3, .L16+8
	ldr	r3, [r3, #0]
	add	r3, r3, #4
	str	r3, [r2, #0]
	ldr	r2, .L16+28
	ldr	r3, .L16+8
	ldr	r3, [r3, #0]
	add	r3, r3, #20
	str	r3, [r2, #0]
	ldr	r3, .L16+20
	ldr	r3, [r3, #0]
	cmp	r3, #3
	bne	.L15
	ldr	r2, .L16+32
	ldr	r3, .L16+8
	ldr	r3, [r3, #0]
	add	r3, r3, #48
	str	r3, [r2, #0]
	ldr	r2, .L16+36
	ldr	r3, .L16+8
	ldr	r3, [r3, #0]
	add	r3, r3, #52
	str	r3, [r2, #0]
	ldr	r3, .L16+36
	ldr	r2, [r3, #0]
	ldr	r3, .L16+36
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	orr	r3, r3, #2
	str	r3, [r2, #0]
.L15:
	ldr	r3, .L16+28
	ldr	r2, [r3, #0]
	mov	r3, #255
	str	r3, [r2, #0]
	ldmea	fp, {r4, fp, sp, pc}
.L17:
	.align	2
.L16:
	.word	.LC1
	.word	4098
	.word	gpio
	.word	-2138832896
	.word	model_ptr
	.word	model
	.word	pbdr
	.word	pbddr
	.word	pfdr
	.word	pfddr
	.size	keypad_init, .-keypad_init
	.align	2
	.global	keypad_event
	.type	keypad_event, %function
keypad_event:
	@ args = 0, pretend = 0, frame = 12
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #12
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L25
	mvn	r2, #0
	str	r2, [r3, #0]
	mov	r3, #0
	str	r3, [fp, #-24]
.L19:
	ldr	r3, [fp, #-24]
	cmp	r3, #15
	bls	.L22
	b	.L20
.L22:
	mov	r2, #1
	ldr	r3, [fp, #-24]
	mov	r2, r2, asl r3
	ldr	r3, [fp, #-16]
	and	r3, r2, r3
	cmp	r3, #0
	beq	.L21
	ldr	r2, .L25+4
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3, #0]	@ zero_extendqisi2
	ldr	r0, .L25+8
	mov	r1, r3
	bl	printf
	ldr	r1, .L25
	ldr	r2, .L25+4
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3, #0]	@ zero_extendqisi2
	str	r3, [r1, #0]
.L21:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L19
.L20:
	ldr	r3, .L25
	ldr	r3, [r3, #0]
	cmn	r3, #1
	beq	.L18
	ldr	r0, .L25+12
	mov	r1, #0
	bl	gettimeofday
	ldr	r2, .L25+12
	ldr	r3, .L25+12
	ldr	r3, [r3, #4]
	add	r3, r3, #499712
	add	r3, r3, #288
	str	r3, [r2, #4]
	ldr	ip, .L25+12
	ldr	r0, .L25+12
	ldr	r3, .L25+12
	ldr	r1, [r3, #4]
	ldr	r3, .L25+16
	smull	r2, r3, r1, r3
	mov	r2, r3, asr #18
	mov	r3, r1, asr #31
	rsb	r2, r3, r2
	ldr	r3, [r0, #0]
	add	r3, r3, r2
	str	r3, [ip, #0]
	ldr	ip, .L25+12
	ldr	r3, .L25+12
	ldr	r0, [r3, #4]
	ldr	r3, .L25+16
	smull	r2, r3, r0, r3
	mov	r2, r3, asr #18
	mov	r3, r0, asr #31
	rsb	r1, r3, r2
	mov	r2, r1
	mov	r2, r2, asl #5
	rsb	r2, r1, r2
	mov	r3, r2, asl #6
	rsb	r3, r2, r3
	mov	r3, r3, asl #3
	add	r3, r3, r1
	mov	r3, r3, asl #6
	rsb	r3, r3, r0
	str	r3, [ip, #4]
.L18:
	ldmea	fp, {fp, sp, pc}
.L26:
	.align	2
.L25:
	.word	lastkey
	.word	keys
	.word	.LC0
	.word	repeat_time
	.word	1125899907
	.size	keypad_event, .-keypad_event
	.align	2
	.global	get_keys
	.type	get_keys, %function
get_keys:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #8
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r3, .L40
	ldr	r3, [r3, #0]
	cmp	r3, #3
	bne	.L28
	mov	r3, #0
	str	r3, [fp, #-16]
.L29:
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	bls	.L32
	b	.L35
.L32:
	ldr	r3, [fp, #-16]
	cmp	r3, #2
	bne	.L33
	ldr	r3, .L40+4
	ldr	r2, [r3, #0]
	ldr	r3, .L40+4
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	bic	r3, r3, #251
	str	r3, [r2, #0]
	ldr	r3, .L40+8
	ldr	r2, [r3, #0]
	ldr	r3, .L40+8
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	orr	r3, r3, #2
	str	r3, [r2, #0]
	ldr	r3, .L40+12
	ldr	r2, [r3, #0]
	ldr	r3, .L40+12
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	bic	r3, r3, #2
	str	r3, [r2, #0]
	b	.L34
.L33:
	ldr	r3, .L40+8
	ldr	r2, [r3, #0]
	ldr	r3, .L40+8
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	bic	r3, r3, #2
	str	r3, [r2, #0]
	ldr	r3, .L40+4
	ldr	r2, [r3, #0]
	ldr	r3, .L40+4
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	bic	r3, r3, #251
	str	r3, [r2, #0]
	ldr	r3, .L40+4
	ldr	r0, [r3, #0]
	ldr	r3, .L40+4
	ldr	r1, [r3, #0]
	mov	r2, #1
	ldr	r3, [fp, #-16]
	mov	r2, r2, asl r3
	ldr	r3, [r1, #0]
	orr	r3, r3, r2
	str	r3, [r0, #0]
	ldr	r3, .L40+16
	ldr	r2, [r3, #0]
	ldr	r3, .L40+16
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	orr	r3, r3, #251
	str	r3, [r2, #0]
	ldr	r3, .L40+16
	ldr	r0, [r3, #0]
	ldr	r3, .L40+16
	ldr	r1, [r3, #0]
	mov	r2, #1
	ldr	r3, [fp, #-16]
	mov	r3, r2, asl r3
	mvn	r2, r3
	ldr	r3, [r1, #0]
	and	r3, r3, r2
	str	r3, [r0, #0]
.L34:
	ldr	r3, .L40+16
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	mov	r3, r3, lsr #4
	mvn	r3, r3
	and	r2, r3, #15
	ldr	r3, [fp, #-16]
	mov	r3, r3, asl #2
	mov	r2, r2, asl r3
	ldr	r3, [fp, #-20]
	orr	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	b	.L29
.L28:
	mov	r3, #0
	str	r3, [fp, #-16]
.L36:
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	bls	.L39
	b	.L35
.L39:
	ldr	r3, .L40+4
	ldr	r1, [r3, #0]
	mov	r2, #1
	ldr	r3, [fp, #-16]
	mov	r3, r2, asl r3
	str	r3, [r1, #0]
	ldr	r3, .L40+16
	ldr	r1, [r3, #0]
	mov	r2, #1
	ldr	r3, [fp, #-16]
	mov	r3, r2, asl r3
	mvn	r3, r3
	str	r3, [r1, #0]
	ldr	r3, .L40+16
	ldr	r3, [r3, #0]
	ldr	r3, [r3, #0]
	mov	r3, r3, lsr #4
	mvn	r3, r3
	and	r2, r3, #15
	ldr	r3, [fp, #-16]
	mov	r3, r3, asl #2
	mov	r2, r2, asl r3
	ldr	r3, [fp, #-20]
	orr	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	b	.L36
.L35:
	ldr	r3, [fp, #-20]
	mov	r0, r3
	ldmea	fp, {fp, sp, pc}
.L41:
	.align	2
.L40:
	.word	model
	.word	pbddr
	.word	pfddr
	.word	pfdr
	.word	pbdr
	.size	get_keys, .-get_keys
	.align	2
	.global	debounce
	.type	debounce, %function
debounce:
	@ args = 0, pretend = 0, frame = 28
	@ frame_needed = 1, uses_anonymous_args = 0
	mov	ip, sp
	stmfd	sp!, {fp, ip, lr, pc}
	sub	fp, ip, #4
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	bl	get_keys
	mov	r3, r0
	str	r3, [fp, #-36]
	sub	r3, fp, #24
	mov	r0, r3
	mov	r1, #0
	bl	gettimeofday
.L43:
	bl	get_keys
	mov	r3, r0
	str	r3, [fp, #-40]
	sub	r3, fp, #32
	mov	r0, r3
	mov	r1, #0
	bl	gettimeofday
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-36]
	eor	r2, r2, r3
	ldr	r3, [fp, #-16]
	and	r3, r2, r3
	cmp	r3, #0
	beq	.L46
	sub	r3, fp, #24
	sub	r2, fp, #32
	mov	r0, r3
	mov	r1, r2
	mov	r2, #8
	bl	memcpy
.L46:
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-36]
	ldr	r0, .L49
	bl	usleep
	mvn	r3, #19
	sub	r0, fp, #12
	add	r2, r0, r3
	mvn	r3, #11
	sub	r1, fp, #12
	add	r3, r1, r3
	ldr	r2, [r2, #0]
	ldr	r3, [r3, #0]
	rsb	r1, r3, r2
	mov	r2, r1
	mov	r2, r2, asl #5
	rsb	r2, r1, r2
	mov	r3, r2, asl #6
	rsb	r3, r2, r3
	mov	r3, r3, asl #3
	add	r3, r3, r1
	mov	r1, r3, asl #6
	mvn	r3, #19
	sub	r0, fp, #12
	add	r2, r0, r3
	mvn	r3, #11
	sub	r0, fp, #12
	add	r3, r0, r3
	ldr	r2, [r2, #4]
	ldr	r3, [r3, #4]
	rsb	r3, r3, r2
	add	r1, r1, r3
	ldr	r3, .L49+4
	smull	r2, r3, r1, r3
	mov	r2, r3, asr #6
	mov	r3, r1, asr #31
	rsb	r3, r3, r2
	cmp	r3, #15
	ble	.L43
	ldr	r3, [fp, #-40]
	mov	r0, r3
	ldmea	fp, {fp, sp, pc}
.L50:
	.align	2
.L49:
	.word	3906
	.word	274877907
	.size	debounce, .-debounce
	.bss
	.align	2
repeat_time:
	.space	8
	.comm	model_ptr, 4, 32
	.comm	model, 4, 32
	.comm	gpio, 4, 32
	.comm	pfdr, 4, 32
	.comm	pfddr, 4, 32
	.comm	pbdr, 4, 32
	.comm	pbddr, 4, 32
	.ident	"GCC: (GNU) 3.3.2"
