/* $Id$ */
.section .text
	aaa
	aad
	aad	$0x42
	aam
	aam	$0x42
	aas
	/* ADC */
	adc	[%ecx], %dh			/* 10 31		*/
	adc	[%ecx+$0x50], %dh		/* 10 71 50		*/
	adc	%bl, %bh			/* 10 fb		*/
	adc	%eax, %eax			/* 11 c0		*/
	adc	[%eax], %eax			/* 11 00		*/
#if 1 /* FIXME doesn't work at the moment */
	adc	%dh, [%ecx]			/* 12			*/
	adc	%bl, %bh			/* 12			*/
	adc	%edx, [%ecx]			/* 13			*/
	adc	%ebx, %ebx			/* 13			*/
#endif
	adc	%al, $0x40			/* 14 40		*/
	adc	%eax, $0x41424344		/* 15 44 43 42 41	*/
	adc	[%edx], $0x46			/* 80 12 46		*/
	adc	[%ebx + $0x15], $0x47		/* 80 53 15 47		*/
	adc	[%ebx + $0x16171819], $0x48	/* 80 93 19 18 17 16 48	*/
	adc	%cl, $0x45			/* 80 d1 45		*/
	adc	[%edx], $0x46474849		/* 81 12 46 47 48 49	*/
	adc	[%ebx + $0x14], $0x4748494a	/* 81 53 14 47 48 49 4a	*/
	adc	[%ebx + $0x16171819], $0x48494a4b
						/* 81 93 19 18 17 16 4b	*/
						/* 4a 49 48		*/
	adc	%ecx, $0x45464748		/* 81 d1 45 46 47 48	*/
	adc	[%eax], -$0x02			/* 83 10 fe		*/
	/* ADD */
	add	%al, $0x40			/* 04 40		*/
	add	%eax, $0x41424344		/* 05 44 43 42 41	*/
	add	[%edx], $0x46			/* 80 02 46		*/
	add	[%ebx + $0x15], $0x47		/* 80 43 15 47		*/
	add	[%ebx + $0x16171819], $0x48	/* 80 83 19 18 17 16 48	*/
	add	%cl, $0x45			/* 80 c1 45		*/
	add	[%edx], $0x46474849		/* 81 02 46 47 48 49	*/
	add	[%ebx + $0x14], $0x4748494a	/* 81 43 14 47 48 49 4a	*/
	add	[%ebx + $0x16171819], $0x48494a4b
						/* 81 83 19 18 17 16 4b	*/
						/* 4a 49 48		*/
	add	%ecx, $0x45464748		/* 81 c1 45 46 47 48	*/
	/* AND */
	and	%ecx, $0x45464748		/* 81 e1 45 46 47 48	*/
	/* BSF */
#if 1 /* FIXME doesn't work at the moment */
	bsf	%eax, [%eax]			/* 0f bc		*/
#endif
	/* BSR */
#if 1 /* FIXME doesn't work at the moment */
	bsr	%eax, [%eax]			/* 0f bd		*/
#endif
	/* BT */
	bt	%eax, %ecx			/* 0f a3 c8		*/
	bt	[%eax], %ecx			/* 0f a3 08		*/
	bt	%eax, $0x42			/* 0f ba e0 42		*/
	bt	[%eax], $0x42			/* 0f ba 20 42		*/
	/* BTC */
	btc	%eax, %ecx			/* 0f bb c8		*/
	btc	[%eax], %ecx			/* 0f bb 08		*/
	btc	%eax, $0x42			/* 0f ba f8 42		*/
	btc	[%eax], $0x42			/* 0f ba 38 42		*/
	/* BTR */
	btr	%eax, %ecx			/* 0f b3 c8		*/
	btr	[%eax], %ecx			/* 0f b3 08		*/
	btr	%eax, $0x42			/* 0f ba f0 42		*/
	btr	[%eax], $0x42			/* 0f ba 30 42		*/
	/* BTS */
	bts	%eax, %ecx			/* 0f ab c8		*/
	bts	[%eax], %ecx			/* 0f ab 08		*/
	bts	%eax, $0x42			/* 0f ba e8 42		*/
	bts	[%eax], $0x42			/* 0f ba 28 42		*/
	cwde					/* 98			*/
	clc					/* f8			*/
	cld					/* fc			*/
	cli					/* fa			*/
	clts					/* 0f 06		*/
	cmc					/* f5			*/
	cdq					/* 99			*/
	daa					/* 27			*/
	das					/* 2f			*/
	/* DEC */
	dec	%eax				/* 48			*/
	dec	%ecx				/* 49			*/
	dec	%edx				/* 4a			*/
	dec	%ebx				/* 4b			*/
	dec	%esp				/* 4c			*/
	dec	%ebp				/* 4d			*/
	dec	%esi				/* 4e			*/
	dec	%edi				/* 4f			*/
	decb	[%eax]				/* fe 08		*/
	decb	[%ecx]				/* fe 09		*/
	decb	[%edx]				/* fe 0a		*/
	decb	[%ebx]				/* fe 0b		*/
	dec	[%eax]				/* ff 08		*/
	dec	[%ecx]				/* ff 09		*/
	dec	[%edx]				/* ff 0a		*/
	dec	[%ebx]				/* ff 0b		*/
	/* DIV */
	divb	[%ecx]				/* f6 31		*/
	divb	[%eax + $0x02]			/* f6 70 02		*/
	divb	[%ebx + $0x4012]		/* f6 b3 12 40 00 00	*/
	div	%dl				/* f6 f2		*/
	div	[%ecx]				/* f7 31		*/
	div	[%eax + $0x02]			/* f7 70 02		*/
	div	[%ebx + $0x4012]		/* f7 b3 12 40 00 00	*/
	div	%edx				/* f7 f2		*/
	/* ENTER */
	enter	$0xabcd, $0x0			/* c8 cd ab 00		*/
	enter	$0xdcef, $0x1			/* c8 ef dc 01		*/
	enter	$0xfacd, $0x42			/* c8 cd fa 42		*/
	f2xm1
	fabs
	/* FADD */
	fadd	%st0, %st0
	fadd	%st0, %st1
	fadd	%st0, %st2
	fadd	%st0, %st3
	fadd	%st0, %st4
	fadd	%st0, %st5
	fadd	%st0, %st6
	fadd	%st0, %st7
	fadd	%st1, %st0
	fadd	%st2, %st0
	fadd	%st3, %st0
	fadd	%st4, %st0
	fadd	%st5, %st0
	fadd	%st6, %st0
	fadd	%st7, %st0
	/* FADDP */
	faddp	%st0, %st0
	faddp
	faddp	%st2, %st0
	faddp	%st3, %st0
	faddp	%st4, %st0
	faddp	%st5, %st0
	faddp	%st6, %st0
	faddp	%st7, %st0
	fchs
	fclex
	fcom					/* de d9		*/
	fcom	%st0
	fcom	%st1
	fcom	%st2
	fcom	%st3
	fcom	%st4
	fcom	%st5
	fcom	%st6
	fcom	%st7
	fcomp					/* de d9		*/
	fcomp	%st0
	fcomp	%st1
	fcomp	%st2
	fcomp	%st3
	fcomp	%st4
	fcomp	%st5
	fcomp	%st6
	fcomp	%st7
	fcompp					/* de d9		*/
	fcos
	fdecstp
	fdiv	%st0, %st0
	fdiv	%st0, %st1
	fdiv	%st0, %st2
	fdiv	%st0, %st3
	fdiv	%st0, %st4
	fdiv	%st0, %st5
	fdiv	%st0, %st6
	fdiv	%st0, %st7
	fdiv	%st0, %st0
	fdiv	%st1, %st0
	fdiv	%st2, %st0
	fdiv	%st3, %st0
	fdiv	%st4, %st0
	fdiv	%st5, %st0
	fdiv	%st6, %st0
	fdiv	%st7, %st0
	fdivp
	fdivp	%st0, %st0
	fdivp	%st1, %st0
	fdivp	%st2, %st0
	fdivp	%st3, %st0
	fdivp	%st4, %st0
	fdivp	%st5, %st0
	fdivp	%st6, %st0
	fdivp	%st7, %st0
	fdivr	%st0, %st0
	fdivr	%st0, %st1
	fdivr	%st0, %st2
	fdivr	%st0, %st3
	fdivr	%st0, %st4
	fdivr	%st0, %st5
	fdivr	%st0, %st6
	fdivr	%st0, %st7
	fdivr	%st0, %st0
	fdivr	%st1, %st0
	fdivr	%st2, %st0
	fdivr	%st3, %st0
	fdivr	%st4, %st0
	fdivr	%st5, %st0
	fdivr	%st6, %st0
	fdivr	%st7, %st0
	fdivrp
	fdivrp	%st0, %st0
	fdivrp	%st1, %st0
	fdivrp	%st2, %st0
	fdivrp	%st3, %st0
	fdivrp	%st4, %st0
	fdivrp	%st5, %st0
	fdivrp	%st6, %st0
	fdivrp	%st7, %st0
	ffree	%st0				/* dd c0		*/
	ffree	%st1				/* dd c1		*/
	ffree	%st2				/* dd c2		*/
	ffree	%st3				/* dd c3		*/
	ffree	%st4				/* dd c4		*/
	ffree	%st5				/* dd c5		*/
	ffree	%st6				/* dd c6		*/
	ffree	%st7				/* dd c7		*/
	finit
	fld	%st0				/* d9 c0		*/
	fld	%st1
	fld	%st2
	fld	%st3
	fld	%st4
	fld	%st5
	fld	%st6
	fld	%st7
	fld1					/* d9 e8		*/
	fld2e
	fld2t
	fldg2
	fldn2
	fldpi
	fldz
	fnclex
	fninit
	fwait
	fyl2xp1					/* d9 f9		*/
	hlt					/* f4			*/
	/* IN */
	in	%al, $0x43			/* e4 43		*/
	in	%eax, $0x44			/* e5 44		*/
	in	%al, %dx			/* ec			*/
	in	%eax, %dx			/* ed			*/
	/* INC */
	inc	%eax				/* 40			*/
	inc	%ecx				/* 41			*/
	inc	%edx				/* 42			*/
	inc	%ebx				/* 43			*/
	inc	%esp				/* 44			*/
	inc	%ebp				/* 45			*/
	inc	%esi				/* 46			*/
	inc	%edi				/* 47			*/
	incb	[%eax]				/* fe 00		*/
	incb	[%ecx]				/* fe 01		*/
	incb	[%edx]				/* fe 02		*/
	incb	[%ebx]				/* fe 03		*/
	inc	[%eax]				/* ff 00		*/
	inc	[%ecx]				/* ff 01		*/
	inc	[%edx]				/* ff 02		*/
	inc	[%ebx]				/* ff 03		*/
	insb
	insd
	int	$0x3				/* cd 03		*/
	int3					/* cc			*/
	int	$0x4				/* cd 04		*/
	int	$0x42				/* cd 42		*/
	into					/* ce			*/
	invd
	iret
	iretd
	lahf
	leave
	lock
	lodsb					/* ac			*/
	lodsd					/* ad			*/
	loop	$0x41
	loope	$0x41
	loopne	$0x41
	loopnz	$0x41
	loopz	$0x41
	nop					/* 90			*/
	movsb
	movsd
	mulb	[%eax]
	mulb	[%eax + $0x42]
	mulb	[%eax + $0x11223344]
	mul	%ch
	mul	[%eax]
	mul	[%eax + $0x42]
	mul	[%eax + $0x11223344]
	mul	%eax
	negb	[%eax]
	negb	[%eax + $0x42]
	negb	[%eax + $0x11223344]
	neg	%ch
	neg	[%eax]
	neg	[%eax + $0x42]
	neg	[%eax + $0x11223344]
	neg	%eax
	notb	[%eax]
	notb	[%eax + $0x42]
	notb	[%eax + $0x11223344]
	not	%ch
	not	[%eax]
	not	[%eax + $0x42]
	not	[%eax + $0x11223344]
	not	%eax
	/* OR */
	or	[%ecx], %dh
	or	[%ecx+$0x50], %dh
	or	%bl, %bh
	or	%eax, %eax
	or	[%eax], %eax
#if 1 /* FIXME doesn't work at the moment */
	or	%dh, [%ecx]
	or	%bl, %bh
	or	%edx, [%ecx]
	or	%ebx, %ebx
#endif
	or	%al, $0x40
	or	%eax, $0x41424344
	or	[%edx], $0x46
	or	[%ebx + $0x15], $0x47
	or	[%ebx + $0x16171819], $0x48
	or	%cl, $0x45
	or	[%edx], $0x46474849
	or	[%ebx + $0x14], $0x4748494a
	or	[%ebx + $0x16171819], $0x48494a4b
	or	%ecx, $0x45464748
	or	[%eax], -$0x02
	out	$0xa8, %al
	out	$0xa8, %eax
	out	%dx, %al
	out	%dx, %eax
	outsb					/* 6e			*/
	outsd					/* 6f			*/
	pop	%ds				/* 1f			*/
	pop	%es				/* 07			*/
	pop	%ss				/* 17			*/
	pop	%fs				/* 0f a1		*/
	pop	%gs				/* 0f a9		*/
	pop	%eax
	pop	%ecx
	pop	%edx
	pop	%ebx
	pop	%esp
	pop	%ebp
	pop	%esi
	pop	%edi
	pop	[%ecx]
	pop	[%edx + $0x42]
	pop	[%ebx + $0x43424140]
	popa					/* 61			*/
	popad					/* 61			*/
	popf					/* 9d			*/
	popfd					/* 9d			*/
	push	%cs				/* 0e			*/
	push	%ss				/* 16			*/
	push	%ds				/* 1e			*/
	push	%es				/* 06			*/
	push	%fs				/* 0f a0		*/
	push	%gs				/* 0f a8		*/
	push	%eax
	push	%ecx
	push	%edx
	push	%ebx
	push	%esp
	push	%ebp
	push	%esi
	push	%edi
	push	$0x42
	push	$0x42424242
	push	[%eax]
	push	[%eax + $0x42]
	push	[%eax + $0x43424140]
	pusha					/* 60			*/
	pushad					/* 60			*/
	pushf					/* 9c			*/
	pushfd					/* 9c			*/
	rep stosb
	ret
	ret	$0x3412
	rsm					/* 0f aa		*/
	sahf					/* 9e			*/
	scasb
	scasd
	sgdt	[%ecx]
	sidt	[%edx - $0x79]
	shld	%ecx, %edx, $0x31
	shld	%eax, %eax, %cl
	shrd	%eax, %eax, $0x31
	shrd	%eax, %eax, %cl
	stc
	std
	sti
	stosb
	stosd
	/* TEST */
	test	%al, $0xaa
	test	%eax, $0xccddeeff
	testb	[%ecx], $0x04
	testb	[%ecx + $0x12], $0x04
	testb	[%ecx + $0x2212], $0x04
	test	%bl, $0x04
	test	[%ecx], $0x04002000
	test	[%ecx + $0x22], $0x04002000
	test	[%ecx + $0x2221], $0x04002000
	test	%ebx, $0x04002000
#if 0 /* FIXME doesn't work */
	testb	[%ecx], %dh
	testb	[%ecx + $0x12], %ch
	testb	[%ecx + $0x2212], %dh
	test	%bl, %bh
	test	[%ecx], %eax
	test	[%ecx + $0x22], %ecx
	test	[%ecx + $0x2221], %edx
#endif
	test	%ebx, %ebx			/* 85 c3		*/
	ud2
	wait
	wbinvd
	wrmsr
	/* XADD */
	xadd	%eax, %ecx			/* 0f c1 c8		*/
	xadd	%ecx, %eax			/* 0f c1 c1		*/
	xadd	[%eax], %ebx			/* 0f c1 18		*/
	/* XCHG */
	xchg	%eax, %ecx			/* 91			*/
	xchg	%ecx, %eax			/* 91			*/
	xchg	[%eax], %ebx			/* 87 18		*/
	xchg	%eax, [%ebx]
	xlatb
	/* XOR */
	xor	[%ecx], %dh			/* 30 31		*/
	xor	[%ecx+$0x50], %dh		/* 30 71 50		*/
	xor	%bl, %bh			/* 30 fb		*/
	xor	%eax, %eax			/* 31 c0		*/
	xor	[%eax], %eax			/* 31 00		*/
#if 1 /* FIXME doesn't work at the moment */
	xor	%dh, [%ecx]			/* 32			*/
	xor	%bl, %bh			/* 32			*/
	xor	%edx, [%ecx]			/* 33			*/
	xor	%ebx, %ebx			/* 33			*/
#endif
	xor	%al, $0x40			/* 34 40		*/
	xor	%eax, $0x41424344		/* 35 44 43 42 41	*/
	xor	[%edx], $0x46			/* 80 32 46		*/
	xor	[%ebx + $0x15], $0x47		/* 80 73 15 47		*/
	xor	[%ebx + $0x16171819], $0x48	/* 80 b3 19 18 17 16 48	*/
	xor	%cl, $0x45			/* 80 f1 45		*/
	xor	[%edx], $0x46474849		/* 81 32 46 47 48 49	*/
	xor	[%ebx + $0x14], $0x4748494a	/* 81 73 14 47 48 49 4a	*/
	xor	[%ebx + $0x16171819], $0x48494a4b
						/* 81 b3 19 18 17 16 4b	*/
						/* 4a 49 48		*/
	xor	%ecx, $0x45464748		/* 81 f1 45 46 47 48	*/
	xor	[%eax], -$0x02			/* 83 30 fe		*/
