AssembleComFindInstr:
	move.l	a0,$98(a6)
	lea	AssemblerCodes+$20(pc),a1
AssembleComFindInstr1:
	cmp.l	#AssemblerCodesEnd,a1
	beq	AssembleComFindInstrError
	move.l	$a0(a6),a2
	move.w	(a1)+,d2
	move.w	(a1)+,d1
	move.l	(a1)+,d3
	move.b	(a1)+,d0
	ext.w	d0
	move.l	a1,a4
	add.w	d0,a4
AssembleComFindInstr2:
	move.b	(a2)+,d0
	beq.s	AssembleComFindInstr8
	cmp.b	(a1)+,d0
	beq.s	AssembleComFindInstr2
	move.b	-1(a1),d4
	cmp.b	#'c',d4
	beq.s	AssembleComFindInstr5
AssembleComFindInstr3:
	move.l	a4,a1
	bra.s	AssembleComFindInstr1
AssembleComFindInstr5:
	lea	Assemblerconditions(pc),a3
	moveq	#-1,d4
	move.b	(a2)+,d5
	move.b	(a2)+,d6
	subq.l	#3,a3
AssembleComFindInstr6:
	addq.l	#1,d4
	cmp.b	#$10,d4
	beq.s	AssembleComFindInstr3
	addq.l	#3,a3
	cmp.b	(a3),d0
	bne.s	AssembleComFindInstr6
	cmp.b	1(a3),d5
	bne.s	AssembleComFindInstr6
	tst.b	d5
	beq.s	AssembleComFindInstr7
	tst.b	d6
	bne.s	AssembleComFindInstr6
AssembleComFindInstr7:
	move.w	d4,$b2(a6)
	addq.l	#1,a1
AssembleComFindInstr8:
	cmp.l	a1,a4
	beq.s	AssembleComFindInstr9
	move.b	(a1),d0
	beq.s	AssembleComFindInstr9
	bmi.s	AssembleComFindInstr9
	addq.l	#1,a1
	cmp.b	#'A',d0
	beq.s	AssembleComFindInstr8
	cmp.b	#'I',d0
	beq.s	AssembleComFindInstr8
	cmp.b	#'.',d0
	bne.s	AssembleComFindInstr3	
	move.b	(a1)+,d0
	moveq	#$08,d4
	cmp.b	#'B',d0
	beq.s	AssembleComFindInstr8a
	moveq	#$10,d4
	cmp.b	#'W',d0
	beq.s	AssembleComFindInstr8a
	moveq	#$20,d4
	cmp.b	#'L',d0
	bne.s	AssembleComFindInstr8
AssembleComFindInstr8a:
	cmp.w	$a4(a6),d4
	bne.s	AssembleComFindInstr3
	bra.s	AssembleComFindInstr8

AssembleComFindInstr9:
	move.w	d3,d4
	swap	d3
	move.w	$a6(a6),d5
	cmp.w	#$0800,d5
	bne.s	AssembleComFindInstr9a
	or.w	#$1000,d5
AssembleComFindInstr9a:
	move.w	$ac(a6),d6
	cmp.w	#$8002,d5
	bne.s	AssembleComFindInstr9b
	cmp.w	d3,d5
	bne	AssembleComFindInstr3
AssembleComFindInstr9b:
	cmp.w	#$8002,d6
	bne.s	AssembleComFindInstr9c
	cmp.w	d4,d6
	bne	AssembleComFindInstr3
AssembleComFindInstr9c:
	and.w	d3,d5
	and.w	d4,d6
	moveq	#-1,d7			;- no quickword in d7
	tst.w	d3
	beq.s	AssembleComFindInstr9d
	tst.w	d5
	beq	AssembleComFindInstr3
	tst.w	d4
	beq.s	AssembleComFindInstr9d
	tst.w	d6
	beq	AssembleComFindInstr3
AssembleComFindInstr9d:
	move.w	d5,$a6(a6)
	move.w	d6,$ac(a6)
AssembleComFindInstr10:
	cmp.l	a1,a4
	beq	AssembleComFindInstr38
	move.b	(a1)+,d0
	beq	AssembleComFindInstr38
	cmp.b	#$8c,d0
	beq	AssembleComFindInstr30
	cmp.b	#$8d,d0
	beq	AssembleComFindInstr31
	cmp.b	#$8e,d0
	beq	AssembleComFindInstr32
	cmp.b	#$8f,d0
	beq	AssembleComFindInstr33
	cmp.b	#$90,d0
	beq	AssembleComFindInstr34
	cmp.b	#$9a,d0
	beq	AssembleComFindInstr35
	cmp.b	#$9b,d0
	beq	AssembleComFindInstr37
	tst.w	d2
	bpl.s	AssembleComFindInstr12
AssembleComFindInstr11:
	rol.w	#1,d1
	rol.w	#1,d2
	bmi.s	AssembleComFindInstr11
AssembleComFindInstr12:
	cmp.b	#$80,d0
	beq	AssembleComFindInstr13
	cmp.b	#$81,d0
	beq	AssembleComFindInstr14
	cmp.b	#$82,d0
	beq	AssembleComFindInstr15
	cmp.b	#$83,d0
	beq	AssembleComFindInstr16
	cmp.b	#$84,d0
	beq	AssembleComFindInstr19
	cmp.b	#$85,d0
	beq	AssembleComFindInstr20
	cmp.b	#$86,d0
	beq	AssembleComFindInstr22
	cmp.b	#$87,d0
	beq	AssembleComFindInstr23
	cmp.b	#$88,d0
	beq	AssembleComFindInstr22
	cmp.b	#$89,d0
	beq	AssembleComFindInstr23
	cmp.b	#$94,d0
	beq	AssembleComFindInstr24
	cmp.b	#$95,d0
	beq	AssembleComFindInstr25
	cmp.b	#$96,d0
	beq	AssembleComFindInstr26
	cmp.b	#$99,d0
	beq	AssembleComFindInstr28
	cmp.b	#$9d,d0
	beq	AssembleComFindInstr29
	bra	ComError
	
AssembleComFindInstr13:		;Sz
	rol.w	#2,d1
	rol.w	#2,d2
	move.w	$a4(a6),d0		;Size
	lsr.w	#4,d0
	and.w	#$0003,d0
	or.w	d0,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr14:		;S
	rol.w	#1,d1
	rol.w	#1,d2
	move.w	$a4(a6),d0			;Size
	lsr.w	#5,d0
	and.w	#$0001,d0
	or.w	d0,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr15:		;Inv. S
	rol.w	#1,d1
	rol.w	#1,d2
	move.w	$a4(a6),d0		;Size
	lsr.w	#5,d0
	eor.w	#$0001,d0
	and.w	#$0001,d0
	or.w	d0,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr16:		;Source
	move.w	$a6(a6),d0		;mod
	move.w	$a8(a6),d5		;rrr
	moveq	#-1,d4
AssembleComFindInstr17:
	addq.l	#1,d4
	lsr.w	#1,d0
	bne.s	AssembleComFindInstr17
	cmp.w	#$0006,d4
	bls.s	AssembleComFindInstr18
	move.w	d4,d5
	moveq	#$07,d4
	sub.w	d4,d5
AssembleComFindInstr18:
	rol.w	#3,d1
	rol.w	#3,d2
	and.w	#$0007,d4
	or.w	d4,d1
	rol.w	#3,d1
	rol.w	#3,d2
	and.w	#$0007,d5
	or.w	d5,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr19:		;Destin
	move.w	$ac(a6),d0		;mod
	move.w	$ae(a6),d5		;rrr
	moveq	#-1,d4
	bra.s	AssembleComFindInstr17

AssembleComFindInstr20:		;Tindes
	move.w	$ac(a6),d0		;mod
	move.w	$ae(a6),d4		;rrr
	moveq	#-1,d5
AssembleComFindInstr21:
	addq.l	#1,d5
	lsr.w	#1,d0
	bne.s	AssembleComFindInstr21
	cmp.w	#$0006,d5
	bls.s	AssembleComFindInstr18
	move.w	d5,d4
	moveq	#$07,d5
	sub.w	d5,d4
	bra.s	AssembleComFindInstr18

AssembleComFindInstr22:		;Sar,Sdr
	move.w	$a8(a6),d4
	rol.w	#3,d1
	rol.w	#3,d2
	and.w	#$0007,d4
	or.w	d4,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr23:		;Dar,Ddr
	move.w	$ae(a6),d4
	rol.w	#3,d1
	rol.w	#3,d2
	and.w	#$0007,d4
	or.w	d4,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr24:		;Imm
	move.l	$a8(a6),d4
	rol.w	#3,d1
	rol.w	#3,d2
	and.w	#$0007,d4
	or.w	d4,d1
	move.w	#$1000,$a6(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr25:		;Immediate
	move.l	$a8(a6),d4
	rol.w	#8,d1
	rol.w	#8,d2
	and.w	#$00ff,d4
	or.w	d4,d1
	move.w	#$1000,$a6(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr26:		;Displace
	move.l	$a8(a6),d4
	sub.l	$98(a6),d4
	subq.l	#2,d4
	move.w	d4,d5
	ext.w	d5
	cmp.w	d4,d5
	beq.s	AssembleComFindInstr27
	clr.l	d7
	move.w	d4,d7
	moveq	#$00,d4
AssembleComFindInstr27:
	rol.w	#8,d1
	rol.w	#8,d2
	and.w	#$00ff,d4
	or.w	d4,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr28:		;Vect
	move.l	$a8(a6),d4
	rol.w	#4,d1
	rol.w	#4,d2
	and.w	#$000f,d4
	or.w	d4,d1
	move.w	#$1000,$a6(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr29:		;Cond
	move.w	$b2(a6),d4
	rol.w	#4,d1
	rol.w	#4,d2
	and.w	#$000f,d4
	or.w	d4,d1
	bra	AssembleComFindInstr10

AssembleComFindInstr30:		;Imm Byte
	move.w	#$0008,$a4(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr31:		;Imm Word
	move.w	#$0010,$a4(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr32:		;Displace word
	move.l	$ae(a6),d4
	sub.l	$98(a6),d4
	subq.l	#2,d4
	clr.l	d7
	move.w	d4,d7
	bra	AssembleComFindInstr10

AssembleComFindInstr33:		;Imm Long
	move.w	#$0020,$a4(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr34:		;Imm 5bits
	move.w	#$0005,$a4(a6)
	bra	AssembleComFindInstr10

AssembleComFindInstr35:		;Reglistmask source
	move.w	$a8(a6),d0
	clr.l	d7
	move.w	d0,d7
	cmp.w	#$0010,$ac(a6)
	bne	AssembleComFindInstr10
	move.w	d7,d0
	moveq	#$0f,d4
AssembleComFindInstr36:
	lsr.w	#1,d0
	roxl.w	#1,d7
	dbf	d4,AssembleComFindInstr36
	bra	AssembleComFindInstr10

AssembleComFindInstr37:		;Reglistmask dest
	move.w	$ae(a6),d0
	clr.l	d7
	move.w	d0,d7
	bra	AssembleComFindInstr10

AssembleComFindInstr38:
	move.w	d1,d0
	jsr	_WriteMemWord(a6)
	tst.l	d7
	bmi.s	AssembleComFindInstr39
	move.w	d7,d0
	jsr	_WriteMemWord(a6)
AssembleComFindInstr39:
	move.w	$a6(a6),d0
	cmp.w	#$0020,d0
	beq.s	AssembleComFindInstr42
	cmp.w	#$0040,d0
	beq.s	AssembleComFindInstr42
	cmp.w	#$0080,d0
	beq.s	AssembleComFindInstr43
	cmp.w	#$0100,d0
	beq.s	AssembleComFindInstr44
	cmp.w	#$0200,d0
	beq.s	AssembleComFindInstr42
	cmp.w	#$0400,d0
	beq.s	AssembleComFindInstr42
	cmp.w	#$0800,d0
	beq.s	AssembleComFindInstr45
AssembleComFindInstr40:
	move.w	$ac(a6),d0
	cmp.w	#$0020,d0
	beq	AssembleComFindInstr50
	cmp.w	#$0040,d0
	beq	AssembleComFindInstr50
	cmp.w	#$0080,d0
	beq	AssembleComFindInstr51
	cmp.w	#$0100,d0
	beq	AssembleComFindInstr52
	cmp.w	#$0200,d0
	beq.s	AssembleComFindInstr50
	cmp.w	#$0400,d0
	beq.s	AssembleComFindInstr50
	cmp.w	#$0800,d0
	beq	AssembleComFindInstr53
AssembleComFindInstr41:
	move.l	a0,$9c(a6)
	moveq	#$00,d0
	rts

AssembleComFindInstr42:	;d(An),d(An,Xi),d(PC),d(PC,Xi)
	move.w	$aa(a6),d0
	jsr	_WriteMemWord(a6)
	bra.s	AssembleComFindInstr40

AssembleComFindInstr43:			;Abs.W
	move.l	$a8(a6),d0
	jsr	_WriteMemWord(a6)
	bra.s	AssembleComFindInstr40

AssembleComFindInstr44:			;Abs.L
	move.l	$a8(a6),d0
	swap	d0
	jsr	_WriteMemWord(a6)
	swap	d0
	jsr	_WriteMemWord(a6)
	bra.s	AssembleComFindInstr40

AssembleComFindInstr45:			;Immediate
	move.l	$a8(a6),d0
	move.w	$a4(a6),d1
	cmp.w	#$0005,d1
	beq.s	AssembleComFindInstr47
	cmp.w	#$0008,d1
	beq.s	AssembleComFindInstr48
	cmp.w	#$0010,d1
	beq.s	AssembleComFindInstr49
	swap	d0
	jsr	_WriteMemWord(a6)
	swap	d0
AssembleComFindInstr46:		
	jsr	_WriteMemWord(a6)
	bra	AssembleComFindInstr40
AssembleComFindInstr47:
	and.w	#$001f,d0
AssembleComFindInstr48:
	and.w	#$00ff,d0
AssembleComFindInstr49:
	bra.s	AssembleComFindInstr46

AssembleComFindInstr50:	;d(An),d(An,Xi),d(PC),d(PC,Xi)
	move.w	$b0(a6),d0
	jsr	_WriteMemWord(a6)
	bra.s	AssembleComFindInstr41

AssembleComFindInstr51:			;Abs.W
	move.l	$ae(a6),d0
	jsr	_WriteMemWord(a6)
	bra.s	AssembleComFindInstr41

AssembleComFindInstr52:			;Abs.L
	move.l	$ae(a6),d0
	swap	d0
	jsr	_WriteMemWord(a6)
	swap	d0
	jsr	_WriteMemWord(a6)
	bra	AssembleComFindInstr41

AssembleComFindInstr53:			;Immediate
	move.l	$ae(a6),d0
	move.w	$a4(a6),d1
	cmp.w	#$0005,d1
	beq.s	AssembleComFindInstr55
	cmp.w	#$0008,d1
	beq.s	AssembleComFindInstr56
	cmp.w	#$0010,d1
	beq.s	AssembleComFindInstr57
	swap	d0
	jsr	_WriteMemWord(a6)
	swap	d0
AssembleComFindInstr54:		
	jsr	_WriteMemWord(a6)
	bra	AssembleComFindInstr41
AssembleComFindInstr55:
	and.w	#$001f,d0
AssembleComFindInstr56:
	and.w	#$00ff,d0
AssembleComFindInstr57:
	bra.s	AssembleComFindInstr54

AssembleComFindInstrError:
	moveq	#-1,d0
	rts

