	.text
	.code 16
.foo:	
	lsl	r2, r1, #3
	lsr	r3, r4, #31
wibble/data:	
	asr	r7, r0, #5

	lsl	r1, r2, #0
	lsr	r3, r4, #0
	asr	r4, r5, #0

	lsr	r6, r7, #32
	asr	r0, r1, #32

	add	r1, r2, r3
	add	r2, r4, #2
	sub	r3, r5, r7
	sub	r2, r4, #7

	mov	r4, #255
	cmp	r3, #250
	add	r6, #123
	sub	r5, #128

	and	r3, r5
	eor	r4, r6
	lsl	r1, r0
	lsr	r2, r3
	asr	r4, r6
	adc	r5, r7
	sbc	r0, r4
	ror	r1, r4
	tst	r2, r5
	neg	r1, r1
	cmp	r2, r3
	cmn	r1, r4
	orr	r0, r3
	mul	r4, r5
	bic	r5, r7
	mvn	r5, r5

	add	r1, r13
	add	r12, r2
	add	r9, r9
	cmp	r1, r14
	cmp	r8, r0
	cmp	r12, r14
	mov	r0, r9
	mov	r9, r4
	mov	r8, r8
	bx	r7
	bx	r8
	.align 0
	bx	pc

	ldr	r3, [pc, #128]
	ldr	r4, bar

	str	r0, [r1, r2]
	strb	r1, [r2, r4]
	ldr	r5, [r6, r7]
	ldrb	r2, [r4, r5]
	
	.align 0
bar:	
	strh	r1, [r2, r3]
	ldrh	r3, [r4, r0]
	ldsb	r1, [r6, r7]
	ldsh	r2, [r0, r5]

	str	r3, [r3, #124]
	ldr	r1, [r4, #124]
	ldr	r5, [r5]
	strb	r1, [r5, #31]
	strb	r1, [r4, #5]
	strb	r2, [r6]

	strh	r4, [r5, #62]
	ldrh	r5, [r0, #4]
	ldrh	r3, [r2]

	str	r3, [r13, #1020]
	ldr	r1, [r13, #44]
	ldr	r2, [r13]

	add	r7, r15, #1020
	add	r4, r13, #512

	add	r13, #268
	add	r13, #-104
	sub	r13, #268
	sub	r13, #-108

	push	{r0, r1, r2, r4}
	push	{r0, r3-r7, lr}
	pop	{r3, r4, r7}
	pop	{r0-r7, r15}

	stmia	r3!, {r0, r1, r4-r7}
	ldmia	r0!, {r1-r7}

	beq	bar
	bne	bar
	bcs	bar
	bcc	bar
	bmi	bar
	bpl	bar
	bvs	bar
	bvc	bar
	bhi	bar
	bls	bar
	bge	bar
	bgt	bar
	blt	bar
	bgt	bar
	ble	bar
	bhi	bar
	blo	bar
	bul	bar
	bal	bar

close:
	lsl	r4, r5, #near - close
near:
	add	r2, r3, #near - close

	add	sp, sp, #127 << 2
	sub	sp, sp, #127 << 2
	add	r0, sp, #255 << 2
	add	r0, pc, #255 << 2

	add	sp, sp, #bar - .foo
	sub	sp, sp, #bar - .foo
	add	r0, sp, #bar - .foo
	add	r0, pc, #bar - .foo

	add	r1, #bar - .foo
	mov	r6, #bar - .foo
	cmp	r7, #bar - .foo

	nop
	nop

	.arm
.localbar:
	b	.localbar
	b	.back
	bl	.localbar
	bl	.back

	bx	r0
	swi	0x123456

	.thumb
	@ The following will be disassembled incorrectly if we do not
	@ have a Thumb symbol defined before the first Thumb instruction:
morethumb:
	adr	r0, forwardonly

	b	.foo
	b	.back
	bl	.foo
	bl	.back

	bx	r0

	swi	0xff
	.align	0
forwardonly:
	beq	.back
	bne	.back
	bcs	.back
	bcc	.back
	bmi	.back
	bpl	.back
	bvs	.back
	bvc	.back
	bhi	.back
	bls	.back
	bge	.back
	bgt	.back
	blt	.back
	bgt	.back
	ble	.back
	bhi	.back
	blo	.back
	bul	.back

.back:
	bl	.local
	.space	(1 << 11)	@ leave space to force long offsets
.local:
	bl	.back

	ldr	r0, .target
	ldr	r0, .target
	ldr	r0, [pc, #4]
	ldr	r0, [pc, #4]
.target:
baz:
	mov	r0, r1
	nop
