;	This file is tricky. Along with the file immediately before it,
;	Interrupts.s, it emulates unsupported PowerPC instructions.
;	This mechanism is heavily optimized, and the jumping between
;	tables (which I have tried to describe as well as I can) is
;	very confusing.

;	It is called 'FDP' because of a long-ago confusion about what it did.

;	Some of the mnemonics might look a bit odd, because I used MPW
;	to disassemble instead of ppcdisasm.py or gas.

;	The init code puts a pointer to 'FDP' in the part of the KDP that is
;	mostly shared with NKv1. Therefore this is probably deep Davidianian
;	magic. The tables here contain relative references to other tables
;	in Interrupts.s. What a mess.


		align	11


FDP


FDP_panic
		bl		panic


FDP_0004
		b		FDP_024C


;	This stuff is for emulating float storage instructions

FDP_0008	;	stfs(x)
		rlwinm	r17, r17, 0, 16, 10


FDP_000c	;	stfsu(x)
		crclr	cr7_SO
		b		FDP_001C


FDP_0014	;	stfd(x), stfiwx
		rlwinm	r17, r17, 0, 16, 10


FDP_0018	;	stfdu(x)
		crset	cr7_SO


FDP_001c	;	called from above
		clrrwi	r19, r25, 10
		rlwimi	r19, r17, 14, 24, 28
		addi	r19, r19, FloatSaveJumpTable - FDP
		mtlr	r19
		rlwimi	r14, r11, 0, 18, 18
		mtmsr	r14
		isync
		blr


FDP_003c	;	Called by the jump table in the previous file
		ori		r11, r11, 0x2000
		lwz		r20, -0x02E0(r1)
		lwz		r21, -0x02DC(r1)
		bso		cr7, FDP_00E8
		extrwi	r23, r20, 11, 1
		cmpwi	r23, 896
		insrwi	r20, r20, 27, 2
		inslwi	r20, r21, 3, 29
		mr		r21, r20
		bgt		FDP_00E8
		cmpwi	r23, 874
		clrrwi	r21, r20, 31
		blt		FDP_00E8
		oris	r20, r20, 0x0080
		neg		r23, r23
		clrlwi	r20, r20, 8
		srw		r20, r20, r23
		rlwimi	r21, r20, 31, 9, 31
		b		FDP_00E8


FDP_0088	;	stwbrx
		rlwinm	r28, r17, 13, 25, 29
		lwbrx	r21, r1, r28
		b		FDP_00E4


FDP_0094	;	sthbrx
		rlwinm	r28, r17, 13, 25, 29
		addi	r21, r1, 2
		lhbrx	r21, r21, r28
		b		FDP_00E4


FDP_00a4	;	sthu(x)
		rlwinm	r28, r17, 13, 25, 29
		lwzx	r21, r1, r28
		b		FDP_00E8


FDP_00b0	;	stwcx.
		rlwinm	r28, r17, 13, 25, 29
		lwzx	r21, r1, r28


FDP_00b8	;	lwarx
		crset	cr5_SO
		b		FDP_00E4


FDP_00c0	;	lbzu(x), stbu(x), lhau(x), stmw
		clrrwi	r18, r18, 4
		rlwimi	r15, r11, 0, 6, 6
		b		FDP_00E4


FDP_00cc	;	lwzu(x)
		clrrwi	r18, r18, 1
		b		FDP_00E4


FDP_00d4	;	lbz(x)
		clrrwi	r18, r18, 2
		b		FDP_00E4


FDP_00dc	;	ecowx, sth(x)
		rlwinm	r28, r17, 13, 25, 29
		lwzx	r21, r1, r28


FDP_00e4	;	eciwx, lwz(x), lbz(x), lhz(x), lha(x), lfs(x), lfd(x)
		rlwinm	r17, r17, 0, 16, 10


FDP_00e8	;	lwbrx, lhbrx, lmw, lhzu(x), lhfsu(x), lfdu(x)
		extrwi.	r22, r17, 5, 26
		add		r19, r18, r22
		b		FDP_03AC


FDP_00f4
		srwi	r23, r21, 16
		sth		r23, -0x0004(r19)
		subi	r17, r17, 4
		sth		r21, -0x0002(r19)
		b		FDP_011C


FDP_0108
		lhz		r23, -0x0004(r19)
		subi	r17, r17, 4
		insrwi	r21, r23, 16, 0


FDP_0114
		lhz		r23, -0x0002(r19)
		insrwi	r21, r23, 16, 16


FDP_011c	;	exported, r25 = address of routine in MixedTable
		li		r0, -3
		sc
		bl		major_0x03548
		rlwinm.	r28, r17, 18, 25, 29
		mtlr	r25
		mfsprg	r1, 0
		cror	cr0_EQ, cr0_EQ, cr3_EQ
		mtsprg	3, r24
		beqlr
		crset	cr3_SO
		stwx	r18, r1, r28
		blr


FDP_014C
		extsh	r21, r21


FDP_0150
		rlwinm	r28, r17, 13, 25, 29
		crset	cr3_SO
		stwx	r21, r1, r28


FDP_015C
		b		FDP_0dA0


FDP_0160
		slwi	r21, r21, 16


FDP_0164
		rlwinm	r28, r17, 13, 25, 29
		crset	cr3_SO
		stwbrx	r21, r1, r28
		b		FDP_0dA0


FDP_0174
		b		FDP_0fA8

FDP_0178
		clrrwi	r23, r25, 10
		rlwimi	r23, r17, 14, 24, 28
		addi	r23, r23, FloatLoadJumpTable - FDP
		mtlr	r23
		stw		r20, -0x02E0(r1)
		stw		r21, -0x02DC(r1)
		rlwimi	r14, r11, 0, 18, 18
		mtmsr	r14
		isync
		ori		r11, r11, 0x2000
		blr


FDP_01a4
		rlwinm.	r28, r17, 13, 25, 29
		rlwinm	r23, r17, 18, 25, 29
		cmpw	cr7, r28, r23
		addis	r17, r17, 32
		beq		FDP_01BC
		beq		cr7, FDP_01C0


FDP_01bc
		stwx	r21, r1, r28


FDP_01c0
		cmpwi	r28, 124
		li		r22, 9
		insrwi	r17, r22, 6, 26
		addi	r19, r19, 4
		bne		FDP_03AC
		b		FDP_0dA0


FDP_01d8
		addis	r17, r17, 32
		rlwinm.	r28, r17, 13, 25, 29
		beq		FDP_0dA0
		lwzx	r21, r1, r28
		li		r22, 8
		insrwi	r17, r22, 6, 26
		addi	r19, r19, 4
		b		FDP_03AC


FDP_01f8	;	dcbz
		lwz		r21, -0x0004(r1)
		lhz		r21, 0x0F4A(r21)
		neg		r21, r21
		and		r19, r18, r21
		b		FDP_0224


FDP_020c
		lwz		r21, -0x0004(r1)
		lhz		r21, 0x0F4A(r21)
		subi	r21, r21, 8
		and.	r22, r19, r21
		clrrwi	r19, r19, 3
		beq		FDP_0dA0


FDP_0224
		li		r22, 16
		insrwi.	r17, r22, 6, 26
		addi	r19, r19, 8
		li		r20, 0
		li		r21, 0
		b		FDP_03AC


FDP_023c
		rlwinm	r16, r16, 0, 28, 25
		subi	r10, r10, 4
		stw		r16, -0x0010(r1)
		b		FDP_0dA0


FDP_024c
		li		r8, 18
		b		DataLikeException


FDP_0254	;	stswi
		subi	r22, r27, 2048
		extrwi	r22, r22, 5, 16
		b		FDP_0270


FDP_0260	;	stswx
		mfxer	r22
		andi.	r22, r22, 0x007F
		subi	r22, r22, 1
		beq		FDP_0dA0


FDP_0270
		rlwimi	r17, r22, 4, 21, 25
		not		r22, r22
		insrwi	r17, r22, 2, 4
		mr		r19, r18
		b		FDP_0e60


FDP_0284
		andi.	r22, r17, 0x07C0
		addis	r28, r17, 32
		rlwimi	r17, r28, 0, 6, 10
		subi	r17, r17, 64
		bne		FDP_0e60
		b		FDP_0dA0


FDP_029c	;	lswi
		subi	r22, r27, 2048
		extrwi	r22, r22, 5, 16
		addis	r28, r27, 992
		rlwimi	r17, r28, 22, 16, 20
		b		FDP_02C4


FDP_02b0	;	lswx
		mfxer	r22
		andi.	r22, r22, 0x007F
		rlwimi	r17, r27, 0, 16, 20
		subi	r22, r22, 1
		beq		FDP_0dA0


FDP_02c4
		andis.	r23, r17, 0x001F
		rlwimi	r17, r22, 4, 21, 25
		not		r22, r22
		insrwi	r17, r22, 2, 4
		mr		r19, r18
		bne		FDP_0eC8
		rlwimi	r17, r17, 5, 11, 15
		b		FDP_0eC8


FDP_02e4
		andi.	r22, r17, 0x07C0
		rlwinm	r28, r17, 13, 25, 29
		bne		FDP_0e9C
		rlwinm	r22, r17, 9, 27, 28
		slw		r21, r21, r22
		b		FDP_0e9C


FDP_02fc
		rlwinm.	r22, r17, 28, 25, 29
		rlwinm	r28, r17, 13, 25, 29
		bne		FDP_0eF4
		rlwinm	r23, r17, 9, 27, 28
		slw		r21, r21, r23
		b		FDP_0eF4


FDP_0314	;	unknown table entries
		mfxer	r22


FDP_0318
		andi.	r22, r22, 0x007F
		rlwimi	r17, r27, 0, 16, 20
		insrwi	r17, r27, 1, 3
		cmpw	cr7, r27, r22
		beq		FDP_0f80
		subi	r22, r22, 1
		andis.	r23, r17, 0x001F
		rlwimi	r17, r22, 4, 21, 25
		not		r22, r22
		insrwi	r17, r22, 2, 4
		mr		r19, r18
		bne		FDP_0eC8
		rlwimi	r17, r17, 5, 11, 15
		b		FDP_0eC8


FDP_0350	;	stw(x)
		li		r20, 11040
		b		FDP_1024


FDP_0358	;	stwu(x)
		clrrwi	r18, r18, 1
		li		r20, 11296
		b		FDP_1024


FDP_0364	;	stb(x)
		clrrwi	r18, r18, 2
		li		r20, 11552
		b		FDP_1024


FDP_0370
		subi	r23, r1, 736
		li		r20, 10016
		insrwi	r23, r18, 4, 28
		stb		r21, 0x0000(r23)
		b		FDP_1000


FDP_0384
		subi	r23, r1, 736
		li		r20, 10272
		insrwi	r23, r18, 4, 28
		sth		r21, 0x0000(r23)
		b		FDP_1000


FDP_0398
		subi	r23, r1, 736
		li		r20, 10528
		insrwi	r23, r18, 4, 28
		stw		r21, 0x0000(r23)
		b		FDP_1000


FDP_03ac
		lwz		r1, -0x0004(r1)
		clrrwi	r25, r25, 10
		insrwi	r25, r19, 3, 28
		insrwi	r25, r17, 5, 23
		lha		r22, 0x0C00(r25)
		addi	r23, r1, 1248
		add		r22, r22, r25
		mfsprg	r1, 0
		mtlr	r22
		ori		r15, r15, 0x4000
		mtsprg	3, r23
		mtmsr	r15
		isync
		insrwi	r25, r26, 8, 22
		bnelr
		b		FDP_011C


FDP_03ec
		lbz		r23, -0x0008(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 0


FDP_03f8
		lhz		r23, -0x0007(r19)
		subi	r17, r17, 4
		insrwi	r20, r23, 16, 8
		b		FDP_0414


FDP_0408
		lbz		r23, -0x0006(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 16


FDP_0414
		lwz		r23, -0x0005(r19)
		subi	r17, r17, 8
		inslwi	r20, r23, 8, 24
		insrwi	r21, r23, 24, 0
		b		FDP_0490


FDP_0428
		lbz		r23, -0x0008(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 0

FDP_0434
		lwz		r23, -0x0007(r19)
		subi	r17, r17, 8
		inslwi	r20, r23, 24, 8
		insrwi	r21, r23, 8, 0
		b		FDP_0474


FDP_0448
		lbz		r23, -0x0006(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 16


FDP_0454
		lhz		r23, -0x0005(r19)
		subi	r17, r17, 4
		rlwimi	r20, r23, 24, 24, 31
		insrwi	r21, r23, 8, 0
		b		FDP_0474


FDP_0468
		lbz		r23, -0x0004(r19)
		subi	r17, r17, 2
		insrwi	r21, r23, 8, 0


FDP_0474
		lhz		r23, -0x0003(r19)
		subi	r17, r17, 4
		insrwi	r21, r23, 16, 8
		b		FDP_0490


FDP_0484
		lbz		r23, -0x0002(r19)
		subi	r17, r17, 2
		insrwi	r21, r23, 8, 16


FDP_0490
		lbz		r23, -0x0001(r19)
		insrwi	r21, r23, 8, 24
		b		FDP_011C


FDP_049c
		lhz		r23, -0x0008(r19)
		subi	r17, r17, 4
		insrwi	r20, r23, 16, 0
		b		FDP_04B8


FDP_04ac
		lbz		r23, -0x0007(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 8


FDP_04b8
		lwz		r23, -0x0006(r19)
		subi	r17, r17, 8
		inslwi	r20, r23, 16, 16
		insrwi	r21, r23, 16, 0
		b		FDP_0114


FDP_04cc
		lbz		r23, -0x0005(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 24
		b		FDP_0108


FDP_04dc
		lbz		r23, -0x0003(r19)
		subi	r17, r17, 2
		insrwi	r21, r23, 8, 8
		b		FDP_0114


FDP_04ec
		lwz		r20, -0x0008(r19)
		subi	r17, r17, 8
		lwz		r21, -0x0004(r19)
		b		FDP_011C


FDP_04fc
		lbz		r23, -0x0007(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 8


FDP_0508
		lhz		r23, -0x0006(r19)
		subi	r17, r17, 4
		insrwi	r20, r23, 16, 16
		lwz		r21, -0x0004(r19)
		b		FDP_011C


FDP_051c
		lbz		r23, -0x0005(r19)
		subi	r17, r17, 2
		insrwi	r20, r23, 8, 24
		lwz		r21, -0x0004(r19)
		b		FDP_011C


FDP_0530
		bso		cr5, FDP_053C
		lwz		r21, -0x0004(r19)
		b		FDP_011C


FDP_053c
		li		r23, -4
		lwarx	r21, r23, r19
		b		FDP_011C


FDP_0548
		lwz		r20, -0x0008(r19)
		lwz		r21, -0x0004(r19)
		b		FDP_011C


FDP_0554
		clrrwi	r23, r25, 10
		rlwimi	r23, r17, 14, 24, 28
		addi	r23, r23, 9760
		mtlr	r23
		mr		r23, r18
		oris	r11, r11, 0x0200
		blr


FDP_0570
		srwi	r23, r20, 24
		stb		r23, -0x0008(r19)
		subi	r17, r17, 2


FDP_057c
		srwi	r23, r20, 8
		sth		r23, -0x0007(r19)
		subi	r17, r17, 4
		b		FDP_0598


FDP_058c
		srwi	r23, r20, 8
		stb		r23, -0x0006(r19)
		subi	r17, r17, 2


FDP_0598
		srwi	r23, r21, 8
		insrwi	r23, r20, 8, 0
		stw		r23, -0x0005(r19)
		subi	r17, r17, 8
		stb		r21, -0x0001(r19)
		b		FDP_011C


FDP_05b0
		srwi	r23, r20, 24
		stb		r23, -0x0008(r19)
		subi	r17, r17, 2


FDP_05bc
		srwi	r23, r21, 24
		insrwi	r23, r20, 24, 0
		stw		r23, -0x0007(r19)
		subi	r17, r17, 8
		b		FDP_05FC


FDP_05d0
		srwi	r23, r20, 8
		stb		r23, -0x0006(r19)
		subi	r17, r17, 2


FDP_05dc
		srwi	r23, r21, 24
		insrwi	r23, r20, 8, 16
		sth		r23, -0x0005(r19)
		subi	r17, r17, 4
		b		FDP_05FC


FDP_05f0
		srwi	r23, r21, 24
		stb		r23, -0x0004(r19)
		subi	r17, r17, 2


FDP_05fc
		srwi	r23, r21, 8
		sth		r23, -0x0003(r19)
		subi	r17, r17, 4
		stb		r21, -0x0001(r19)
		b		FDP_011C


FDP_0610
		srwi	r23, r21, 8
		stb		r23, -0x0002(r19)
		subi	r17, r17, 2


FDP_061c
		stb		r21, -0x0001(r19)
		b		FDP_011C


FDP_0624
		srwi	r23, r20, 16
		sth		r23, -0x0008(r19)
		subi	r17, r17, 4
		b		FDP_0640


FDP_0634
		srwi	r23, r20, 16
		stb		r23, -0x0007(r19)
		subi	r17, r17, 2


FDP_0640
		srwi	r23, r21, 16
		insrwi	r23, r20, 16, 0
		stw		r23, -0x0006(r19)
		subi	r17, r17, 8
		sth		r21, -0x0002(r19)
		b		FDP_011C


FDP_0658
		stb		r20, -0x0005(r19)
		subi	r17, r17, 2
		b		FDP_00F4


FDP_0664
		srwi	r23, r21, 16
		stb		r23, -0x0003(r19)
		subi	r17, r17, 2


FDP_0670
		sth		r21, -0x0002(r19)
		b		FDP_011C


FDP_0678
		stw		r20, -0x0008(r19)
		subi	r17, r17, 8
		stw		r21, -0x0004(r19)
		b		FDP_011C


FDP_0688
		srwi	r23, r20, 16
		stb		r23, -0x0007(r19)
		subi	r17, r17, 2


FDP_0694
		sth		r20, -0x0006(r19)
		subi	r17, r17, 4
		stw		r21, -0x0004(r19)
		b		FDP_011C


FDP_06a4
		stb		r20, -0x0005(r19)
		subi	r17, r17, 2
		stw		r21, -0x0004(r19)
		b		FDP_011C


FDP_06b4
		bso		cr5, FDP_06C0
		stw		r21, -0x0004(r19)
		b		FDP_011C


FDP_06c0
		li		r23, -4
		stwcx.	r21, r23, r19
		isync
		mfcr	r23
		rlwimi	r13, r23, 0, 0, 3
		b		FDP_011C


FDP_06d8
		stw		r20, -0x0008(r19)
		stw		r21, -0x0004(r19)
		b		FDP_011C


FDP_06e4
		clrrwi	r23, r25, 10
		rlwimi	r23, r17, 14, 24, 28
		addi	r23, r23, 10784
		mtlr	r23
		mr		r23, r18
		oris	r11, r11, 0x0200
		blr






;	                     major_0x05f00

	;	Which to use? Probably align.
		align	9
;	org		FDP + 0x800



		macro
		MisalignmentOpcodeTableEntry	&hihalf, &primaryfunc, &secondaryfunc

		dc.w	&hihalf
		dc.b	(&primaryfunc - FDP) >> 2
		dc.b	(&secondaryfunc - FDP) >> 2

		endm



		macro
		MisalignmentOpcodeTableMacro	&FirstTable


;	X-form extended opcodes:    0    4    8   12   16   20   24   28
;	                                                  lwarx

		MisalignmentOpcodeTableEntry	0x2540,		FDP_00b8,	FDP_0150


;	X-form extended opcodes:   64   68   72   76   80   84   88   92

		MisalignmentOpcodeTableEntry	0x4550,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  128  132  136  140  144  148  152  156

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  192  196  200  204  208  212  216  220

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  256  260  264  268  272  276  280  284

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  320  324  328  332  336  340  344  348

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  384  388  392  396  400  404  408  412

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  448  452  456  460  464  468  472  476

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  512  516  520  524  528  532  536  540

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  576  580  584  588  592  596  600  604

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  640  644  648  652  656  660  664  668

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  704  708  712  716  720  724  728  732

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  768  772  776  780  784  788  792  796

		MisalignmentOpcodeTableEntry	0x4430,		FDP_00e4,	FDP_0150


;	X-form extended opcodes:  832  836  840  844  848  852  856  860

		MisalignmentOpcodeTableEntry	0x2460,		FDP_00e4,	FDP_0150


;	X-form extended opcodes:  896  900  904  908  912  916  920  924

		MisalignmentOpcodeTableEntry	0x4130,		FDP_00dc,	FDP_015C


;	X-form extended opcodes:  960  964  968  972  976  980  984  988

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:   32   36   40   44   48   52   56   60

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:   96  100  104  108  112  116  120  124

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  160  164  168  172  176  180  184  188

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  224  228  232  236  240  244  248  252

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  288  292  296  300  304  308  312  316

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  352  356  360  364  368  372  376  380

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  416  420  424  428  432  436  440  444

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  480  484  488  492  496  500  504  508

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  544  548  552  556  560  564  568  572

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  608  612  616  620  624  628  632  636

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  672  676  680  684  688  692  696  700

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  736  740  744  748  752  756  760  764

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  800  804  808  812  816  820  824  828

		MisalignmentOpcodeTableEntry	0x4430,		FDP_00e8,	FDP_0150


;	X-form extended opcodes:  864  868  872  876  880  884  888  892

		MisalignmentOpcodeTableEntry	0x45b3,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  928  932  936  940  944  948  952  956

		MisalignmentOpcodeTableEntry	0x4130,		FDP_00a4,	FDP_015C


;	X-form extended opcodes:  992  996 1000 1004 1008 1012 1016 1020

		MisalignmentOpcodeTableEntry	0x41f2,		FDP_panic,	FDP_0004


;	X-form extended opcodes:    1    5    9   13   17   21   25   29

		MisalignmentOpcodeTableEntry	0x4430,		FDP_00e4,	FDP_0150


;	X-form extended opcodes:   65   69   73   77   81   85   89   93

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  129  133  137  141  145  149  153  157

		MisalignmentOpcodeTableEntry	0x4130,		FDP_00dc,	FDP_015C


;	X-form extended opcodes:  193  197  201  205  209  213  217  221

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  257  261  265  269  273  277  281  285

		MisalignmentOpcodeTableEntry	0x268b,		FDP_0314,	FDP_02FC


;	X-form extended opcodes:  321  325  329  333  337  341  345  349

		MisalignmentOpcodeTableEntry	0x2460,		FDP_00e4,	FDP_0150


;	X-form extended opcodes:  385  389  393  397  401  405  409  413

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  449  453  457  461  465  469  473  477

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                  lswx
;	X-form extended opcodes:  513  517  521  525  529  533  537  541

		MisalignmentOpcodeTableEntry	0x260b,		FDP_02b0,	FDP_02E4


;	                                                  lswi
;	X-form extended opcodes:  577  581  585  589  593  597  601  605

		MisalignmentOpcodeTableEntry	0x260f,		FDP_029c,	FDP_02E4


;	                                                  stswx
;	X-form extended opcodes:  641  645  649  653  657  661  665  669

		MisalignmentOpcodeTableEntry	0x2242,		FDP_0260,	FDP_0284


;	                                                  stswi
;	X-form extended opcodes:  705  709  713  717  721  725  729  733

		MisalignmentOpcodeTableEntry	0x224e,		FDP_0254,	FDP_0284


;	X-form extended opcodes:  769  773  777  781  785  789  793  797

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  833  837  841  845  849  853  857  861

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  897  901  905  909  913  917  921  925

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  961  965  969  973  977  981  985  989

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:   33   37   41   45   49   53   57   61

		MisalignmentOpcodeTableEntry	0x4430,		FDP_00e8,	FDP_0150


;	X-form extended opcodes:   97  101  105  109  113  117  121  125

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  161  165  169  173  177  181  185  189

		MisalignmentOpcodeTableEntry	0x4130,		FDP_00a4,	FDP_015C


;	X-form extended opcodes:  225  229  233  237  241  245  249  253

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  289  293  297  301  305  309  313  317

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  353  357  361  365  369  373  377  381

		MisalignmentOpcodeTableEntry	0x2460,		FDP_00e8,	FDP_015C


;	X-form extended opcodes:  417  421  425  429  433  437  441  445

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  481  485  489  493  497  501  505  509

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  545  549  553  557  561  565  569  573

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  609  613  617  621  625  629  633  637

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  673  677  681  685  689  693  697  701

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  737  741  745  749  753  757  761  765

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  801  805  809  813  817  821  825  829

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  865  869  873  877  881  885  889  893

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  929  933  937  941  945  949  953  957

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  993  997 1001 1005 1009 1013 1017 1021

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:    2    6   10   14   18   22   26   30

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:   66   70   74   78   82   86   90   94

		MisalignmentOpcodeTableEntry	0x0fe2,		FDP_00e8,	FDP_023C


;	X-form extended opcodes:  130  134  138  142  146  150  154  158
;	                                                  stwcx.

		MisalignmentOpcodeTableEntry	0x2160,		FDP_00b0,	FDP_015C


;	X-form extended opcodes:  194  198  202  206  210  214  218  222

		MisalignmentOpcodeTableEntry	0x4170,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  258  262  266  270  274  278  282  286

		MisalignmentOpcodeTableEntry	0x0fe2,		FDP_00e8,	FDP_023C


;	X-form extended opcodes:  322  326  330  334  338  342  346  350

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  386  390  394  398  402  406  410  414

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  450  454  458  462  466  470  474  478

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                  lwbrx
;	X-form extended opcodes:  514  518  522  526  530  534  538  542

		MisalignmentOpcodeTableEntry	0x24a2,		FDP_00e8,	FDP_0164


;	X-form extended opcodes:  578  582  586  590  594  598  602  606

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                 stwbrx
;	X-form extended opcodes:  642  646  650  654  658  662  666  670

		MisalignmentOpcodeTableEntry	0x2120,		FDP_0088,	FDP_015C


;	X-form extended opcodes:  706  710  714  718  722  726  730  734

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                  lhbrx
;	X-form extended opcodes:  770  774  778  782  786  790  794  798

		MisalignmentOpcodeTableEntry	0x1492,		FDP_00e8,	FDP_0160


;	X-form extended opcodes:  834  838  842  846  850  854  858  862

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                 sthbrx
;	X-form extended opcodes:  898  902  906  910  914  918  922  926

		MisalignmentOpcodeTableEntry	0x1110,		FDP_0094,	FDP_015C


;	X-form extended opcodes:  962  966  970  974  978  982  986  990

		MisalignmentOpcodeTableEntry	0x0fe2,		FDP_00e8,	FDP_023C


;	X-form extended opcodes:   34   38   42   46   50   54   58   62

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004
	else
		MisalignmentOpcodeTableEntry	0x0fe2,		FDP_00e8,	FDP_023C
	endif


;	X-form extended opcodes:   98  102  106  110  114  118  122  126

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  162  166  170  174  178  182  186  190

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  226  230  234  238  242  246  250  254

		MisalignmentOpcodeTableEntry	0x0fe2,		FDP_00e8,	FDP_023C


;	                                                  eciwx
;	X-form extended opcodes:  290  294  298  302  306  310  314  318

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_00e4,	FDP_024C


;	X-form extended opcodes:  354  358  362  366  370  374  378  382

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                  ecowx
;	X-form extended opcodes:  418  422  426  430  434  438  442  446

		MisalignmentOpcodeTableEntry	0x03f0,		FDP_00dc,	FDP_024C


;	X-form extended opcodes:  482  486  490  494  498  502  506  510

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  546  550  554  558  562  566  570  574

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  610  614  618  622  626  630  634  638

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  674  678  682  686  690  694  698  702

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  738  742  746  750  754  758  762  766

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  802  806  810  814  818  822  826  830

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  866  870  874  878  882  886  890  894

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  930  934  938  942  946  950  954  958

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                  dcbz
;	X-form extended opcodes:  994  998 1002 1006 1010 1014 1018 1022

		MisalignmentOpcodeTableEntry	0x4302,		FDP_01f8,	FDP_020C


;	                                                  lwzx
;	X-form extended opcodes:    3    7   11   15   19   23   27   31
;	D-form opcodes:             0   32
;	                               lwz

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x0f50,		FDP_00e4,	FDP_0370
	else
		MisalignmentOpcodeTableEntry	0x2420,		FDP_00e4,	FDP_0150
	endif


;	                                                  lbzx
;	X-form extended opcodes:   67   71   75   79   83   87   91   95
;	D-form opcodes:             2   34
;	                               lbz

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x2770,		FDP_00d4,	FDP_0398
	else
		MisalignmentOpcodeTableEntry	0x0c00,		FDP_00e4,	FDP_0150
	endif


;	                                                  stwx
;	X-form extended opcodes:  131  135  139  143  147  151  155  159
;	D-form opcodes:             4   36
;	                               stw

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x0b90,		FDP_0350,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x2120,		FDP_00dc,	FDP_015C
	endif


;	                                                  stbx
;	X-form extended opcodes:  195  199  203  207  211  215  219  223
;	D-form opcodes:             6   38
;	                               stb

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x23b0,		FDP_0364,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x0900,		FDP_00dc,	FDP_015C
	endif


;	                                                  lhzx
;	X-form extended opcodes:  259  263  267  271  275  279  283  287
;	D-form opcodes:             8   40
;	                               lhz

		MisalignmentOpcodeTableEntry	0x1410,		FDP_00e4,	FDP_0150

;	                                                  lhax
;	X-form extended opcodes:  323  327  331  335  339  343  347  351
;	D-form opcodes:            10   42
;	                               lha      

		MisalignmentOpcodeTableEntry	0x1450,		FDP_00e4,	FDP_014C


;	                                                  sthx
;	X-form extended opcodes:  387  391  395  399  403  407  411  415
;	D-form opcodes:            12   44
;	                               sth

		MisalignmentOpcodeTableEntry	0x1110,		FDP_00dc,	FDP_015C


;	X-form extended opcodes:  451  455  459  463  467  471  475  479
;	D-form opcodes:            14   46
;	                               lmw

		MisalignmentOpcodeTableEntry	0x25a3,		FDP_00e8,	FDP_01A4


;	                                                  lfsx
;	X-form extended opcodes:  515  519  523  527  531  535  539  543
;	D-form opcodes:            16   48
;	                               lfs

		MisalignmentOpcodeTableEntry	0x24e0,		FDP_00e4,	FDP_0174


;	                                                  lfdx
;	X-form extended opcodes:  579  583  587  591  595  599  603  607
;	D-form opcodes:            18   50
;	                               lfd

		MisalignmentOpcodeTableEntry	0x44f0,		FDP_00e4,	FDP_0178


;	                                                  stfsx
;	X-form extended opcodes:  643  647  651  655  659  663  667  671
;	D-form opcodes:            20   52
;	                               stfs

		MisalignmentOpcodeTableEntry	0x2120,		FDP_0008,	FDP_015C


;	                                                  stfdx
;	X-form extended opcodes:  707  711  715  719  723  727  731  735
;	D-form opcodes:            22   54
;	                               stfd

		MisalignmentOpcodeTableEntry	0x4130,		FDP_0014,	FDP_015C


;	X-form extended opcodes:  771  775  779  783  787  791  795  799
;	D-form opcodes:            24   56

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  835  839  843  847  851  855  859  863
;	D-form opcodes:            26   58

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  899  903  907  911  915  919  923  927
;	D-form opcodes:            28   60

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	                                                 stfiwx
;	X-form extended opcodes:  963  967  971  975  979  983  987  991
;	D-form opcodes:            30   62

		MisalignmentOpcodeTableEntry	0x2120,		FDP_0014,	FDP_015C


;	                                                  lwzux
;	X-form extended opcodes:   35   39   43   47   51   55   59   63
;	D-form opcodes:             1   33
;	                               lwzu

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x1760,		FDP_00cc,	FDP_0384
	else
		MisalignmentOpcodeTableEntry	0x2420,		FDP_00e8,	FDP_0150
	endif


;	                                                  lbzux
;	X-form extended opcodes:   99  103  107  111  115  119  123  127
;	D-form opcodes:             3   35
;	                               lbzu

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x8740,		FDP_00c0,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x0c00,		FDP_00e8,	FDP_0150
	endif


;	                                                  stwux
;	X-form extended opcodes:  163  167  171  175  179  183  187  191
;	D-form opcodes:             5   37
;	                               stwu

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x23a0,		FDP_0358,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x2120,		FDP_00a4,	FDP_015C
	endif


;	                                                  stbux
;	X-form extended opcodes:  227  231  235  239  243  247  251  255
;	D-form opcodes:             7   39
;	                               stbu

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x8380,		FDP_00c0,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x0900,		FDP_00a4,	FDP_015C
	endif


;	                                                  lhzux
;	X-form extended opcodes:  291  295  299  303  307  311  315  319
;	D-form opcodes:             9   41
;	                               lhzu

		MisalignmentOpcodeTableEntry	0x1410,		FDP_00e8,	FDP_0150


;	                                                  lhaux
;	X-form extended opcodes:  355  359  363  367  371  375  379  383
;	D-form opcodes:            11   43
;	                               lhau

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x8740,		FDP_00c0,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x1450,		FDP_00e8,	FDP_014C
	endif


;	                                                  sthux
;	X-form extended opcodes:  419  423  427  431  435  439  443  447
;	D-form opcodes:            13   45
;	                               sthu

		MisalignmentOpcodeTableEntry	0x1110,		FDP_00a4,	FDP_015C


;	X-form extended opcodes:  483  487  491  495  499  503  507  511
;	D-form opcodes:            15   47
;	                               stmw

	if	&FirstTable
		MisalignmentOpcodeTableEntry	0x8380,		FDP_00c0,	FDP_015C
	else
		MisalignmentOpcodeTableEntry	0x21e2,		FDP_00a4,	FDP_01D8
	endif


;	                                                  lfsux
;	X-form extended opcodes:  547  551  555  559  563  567  571  575
;	D-form opcodes:            17   49
;	                               lfsu

		MisalignmentOpcodeTableEntry	0x24e0,		FDP_00e8,	FDP_0174


;	                                                  lfdux
;	X-form extended opcodes:  611  615  619  623  627  631  635  639
;	D-form opcodes:            19   51
;	                               lfdu

		MisalignmentOpcodeTableEntry	0x44f0,		FDP_00e8,	FDP_0178


;	                                                 stfsux
;	X-form extended opcodes:  675  679  683  687  691  695  699  703
;	D-form opcodes:            21   53
;	                              stfsu

		MisalignmentOpcodeTableEntry	0x2120,		FDP_000c,	FDP_015C


;	                                                 stfdux
;	X-form extended opcodes:  739  743  747  751  755  759  763  767
;	D-form opcodes:            23   55
;	                              stfdu

		MisalignmentOpcodeTableEntry	0x4130,		FDP_0018,	FDP_015C


;	X-form extended opcodes:  803  807  811  815  819  823  827  831
;	D-form opcodes:            25   57

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  867  871  875  879  883  887  891  895
;	D-form opcodes:            27   59

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  931  935  939  943  947  951  955  959
;	D-form opcodes:            29   61

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004


;	X-form extended opcodes:  995  999 1003 1007 1011 1015 1019 1023
;	D-form opcodes:            31   63

		MisalignmentOpcodeTableEntry	0x07f0,		FDP_panic,	FDP_0004

		endm



		MisalignmentOpcodeTableMacro	1
		MisalignmentOpcodeTableMacro	0







		macro
		HalfWordTableEntry		&n, &target

@flashback
		org		HalfWordTable + 2*&n
		dc.w	&target - FDP - 2*&n
		org		@flashback

		endm

HalfWordTable										;	FDP + 0xc00
		dcb.w	144, 0xcafe;(FDP_panic - FDP) - (* - HalfWordTable)


		HalfWordTableEntry		  0,	FDP_06e4
		HalfWordTableEntry		  1,	FDP_06e4
		HalfWordTableEntry		  2,	FDP_06e4
		HalfWordTableEntry		  3,	FDP_06e4
		HalfWordTableEntry		  4,	FDP_06e4
		HalfWordTableEntry		  5,	FDP_06e4
		HalfWordTableEntry		  6,	FDP_06e4
		HalfWordTableEntry		  7,	FDP_06e4

		HalfWordTableEntry		  8,	FDP_0554
		HalfWordTableEntry		  9,	FDP_0554
		HalfWordTableEntry		 10,	FDP_0554
		HalfWordTableEntry		 11,	FDP_0554
		HalfWordTableEntry		 12,	FDP_0554
		HalfWordTableEntry		 13,	FDP_0554
		HalfWordTableEntry		 14,	FDP_0554
		HalfWordTableEntry		 15,	FDP_0554

		HalfWordTableEntry		 16,	FDP_061c
		HalfWordTableEntry		 17,	FDP_061c
		HalfWordTableEntry		 18,	FDP_061c
		HalfWordTableEntry		 19,	FDP_061c
		HalfWordTableEntry		 20,	FDP_061c
		HalfWordTableEntry		 21,	FDP_061c
		HalfWordTableEntry		 22,	FDP_061c
		HalfWordTableEntry		 23,	FDP_061c

		HalfWordTableEntry		 24,	FDP_0490
		HalfWordTableEntry		 25,	FDP_0490
		HalfWordTableEntry		 26,	FDP_0490
		HalfWordTableEntry		 27,	FDP_0490
		HalfWordTableEntry		 28,	FDP_0490
		HalfWordTableEntry		 29,	FDP_0490
		HalfWordTableEntry		 30,	FDP_0490
		HalfWordTableEntry		 31,	FDP_0490

		HalfWordTableEntry		 32,	FDP_0670
		HalfWordTableEntry		 33,	FDP_0610
		HalfWordTableEntry		 34,	FDP_0670
		HalfWordTableEntry		 35,	FDP_0610
		HalfWordTableEntry		 36,	FDP_0670
		HalfWordTableEntry		 37,	FDP_0610
		HalfWordTableEntry		 38,	FDP_0670
		HalfWordTableEntry		 39,	FDP_0610

		HalfWordTableEntry		 40,	FDP_0114
		HalfWordTableEntry		 41,	FDP_0484
		HalfWordTableEntry		 42,	FDP_0114
		HalfWordTableEntry		 43,	FDP_0484
		HalfWordTableEntry		 44,	FDP_0114
		HalfWordTableEntry		 45,	FDP_0484
		HalfWordTableEntry		 46,	FDP_0114
		HalfWordTableEntry		 47,	FDP_0484

		HalfWordTableEntry		 48,	FDP_0664
		HalfWordTableEntry		 49,	FDP_05fc
		HalfWordTableEntry		 50,	FDP_0664
		HalfWordTableEntry		 51,	FDP_05fc
		HalfWordTableEntry		 52,	FDP_0664
		HalfWordTableEntry		 53,	FDP_05fc
		HalfWordTableEntry		 54,	FDP_0664
		HalfWordTableEntry		 55,	FDP_05fc

		HalfWordTableEntry		 56,	FDP_04dc
		HalfWordTableEntry		 57,	FDP_0474
		HalfWordTableEntry		 58,	FDP_04dc
		HalfWordTableEntry		 59,	FDP_0474
		HalfWordTableEntry		 60,	FDP_04dc
		HalfWordTableEntry		 61,	FDP_0474
		HalfWordTableEntry		 62,	FDP_04dc
		HalfWordTableEntry		 63,	FDP_0474

		HalfWordTableEntry		 64,	FDP_06b4
		HalfWordTableEntry		 65,	FDP_05f0
		HalfWordTableEntry		 66,	FDP_00f4
		HalfWordTableEntry		 67,	FDP_05f0
		HalfWordTableEntry		 68,	FDP_06b4
		HalfWordTableEntry		 69,	FDP_05f0
		HalfWordTableEntry		 70,	FDP_00f4
		HalfWordTableEntry		 71,	FDP_05f0

		HalfWordTableEntry		 72,	FDP_0530
		HalfWordTableEntry		 73,	FDP_0468
		HalfWordTableEntry		 74,	FDP_0108
		HalfWordTableEntry		 75,	FDP_0468
		HalfWordTableEntry		 76,	FDP_0530
		HalfWordTableEntry		 77,	FDP_0468
		HalfWordTableEntry		 78,	FDP_0108
		HalfWordTableEntry		 79,	FDP_0468

		HalfWordTableEntry		 80,	FDP_06a4
		HalfWordTableEntry		 81,	FDP_0598
		HalfWordTableEntry		 82,	FDP_0658
		HalfWordTableEntry		 83,	FDP_05dc
		HalfWordTableEntry		 84,	FDP_06a4
		HalfWordTableEntry		 85,	FDP_0598
		HalfWordTableEntry		 86,	FDP_0658
		HalfWordTableEntry		 87,	FDP_05dc

		HalfWordTableEntry		 88,	FDP_051c
		HalfWordTableEntry		 89,	FDP_0414
		HalfWordTableEntry		 90,	FDP_04cc
		HalfWordTableEntry		 91,	FDP_0454
		HalfWordTableEntry		 92,	FDP_051c
		HalfWordTableEntry		 93,	FDP_0414
		HalfWordTableEntry		 94,	FDP_04cc
		HalfWordTableEntry		 95,	FDP_0454

		HalfWordTableEntry		 96,	FDP_0694
		HalfWordTableEntry		 97,	FDP_058c
		HalfWordTableEntry		 98,	FDP_0640
		HalfWordTableEntry		 99,	FDP_05d0
		HalfWordTableEntry		100,	FDP_0694
		HalfWordTableEntry		101,	FDP_058c
		HalfWordTableEntry		102,	FDP_0640
		HalfWordTableEntry		103,	FDP_05d0

		HalfWordTableEntry		104,	FDP_0508
		HalfWordTableEntry		105,	FDP_0408
		HalfWordTableEntry		106,	FDP_04b8
		HalfWordTableEntry		107,	FDP_0448
		HalfWordTableEntry		108,	FDP_0508
		HalfWordTableEntry		109,	FDP_0408
		HalfWordTableEntry		110,	FDP_04b8
		HalfWordTableEntry		111,	FDP_0448

		HalfWordTableEntry		112,	FDP_0688
		HalfWordTableEntry		113,	FDP_057c
		HalfWordTableEntry		114,	FDP_0634
		HalfWordTableEntry		115,	FDP_05bc
		HalfWordTableEntry		116,	FDP_0688
		HalfWordTableEntry		117,	FDP_057c
		HalfWordTableEntry		118,	FDP_0634
		HalfWordTableEntry		119,	FDP_05bc

		HalfWordTableEntry		120,	FDP_04fc
		HalfWordTableEntry		121,	FDP_03f8
		HalfWordTableEntry		122,	FDP_04ac
		HalfWordTableEntry		123,	FDP_0434
		HalfWordTableEntry		124,	FDP_04fc
		HalfWordTableEntry		125,	FDP_03f8
		HalfWordTableEntry		126,	FDP_04ac
		HalfWordTableEntry		127,	FDP_0434

		HalfWordTableEntry		128,	FDP_06d8
		HalfWordTableEntry		129,	FDP_0570
		HalfWordTableEntry		130,	FDP_0624
		HalfWordTableEntry		131,	FDP_05b0
		HalfWordTableEntry		132,	FDP_0678
		HalfWordTableEntry		133,	FDP_0570
		HalfWordTableEntry		134,	FDP_0624
		HalfWordTableEntry		135,	FDP_05b0

		HalfWordTableEntry		136,	FDP_0548
		HalfWordTableEntry		137,	FDP_03ec
		HalfWordTableEntry		138,	FDP_049c
		HalfWordTableEntry		139,	FDP_0428
		HalfWordTableEntry		140,	FDP_04ec
		HalfWordTableEntry		141,	FDP_03ec
		HalfWordTableEntry		142,	FDP_049c
		HalfWordTableEntry		143,	FDP_0428




		macro
		MixedTableEntry		&flags, &target

		dc.b	&flags
		dc.b	(&target - FDP) >> 2

		endm

;	this is the d20 table
MixedTable
		MixedTableEntry		%01,	FDP_0150
		MixedTableEntry		%01,	FDP_0150
		MixedTableEntry		%01,	FDP_0150
		MixedTableEntry		%01,	FDP_0150
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_014C
		MixedTableEntry		%01,	FDP_0150
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%11,	FDP_0160
		MixedTableEntry		%11,	FDP_0164
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0174
		MixedTableEntry		%01,	FDP_0178
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_0150
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%11,	FDP_01A4
		MixedTableEntry		%11,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%11,	FDP_01D8
		MixedTableEntry		%11,	FDP_0004
		MixedTableEntry		%11,	FDP_02E4
		MixedTableEntry		%11,	FDP_02E4
		MixedTableEntry		%11,	FDP_02E4
		MixedTableEntry		%11,	FDP_02E4
		MixedTableEntry		%11,	FDP_0284
		MixedTableEntry		%11,	FDP_0284
		MixedTableEntry		%11,	FDP_0284
		MixedTableEntry		%11,	FDP_0284
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_02FC
		MixedTableEntry		%11,	FDP_020C
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_0370
		MixedTableEntry		%01,	FDP_0384
		MixedTableEntry		%01,	FDP_0398
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_015C
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%01,	FDP_0004
		MixedTableEntry		%11,	FDP_023C
		MixedTableEntry		%01,	FDP_024C



FDP_0DA0
		li		r0, -3
		sc
		andi.	r23, r16, 0x0020
		addi	r10, r10, 4
		mfsprg	SP, 0
		mtsrr0	r10
		mtsrr1	r11
		bne		FDP_0E30
		mtlr	r12
		bns		cr3, FDP_0DFC


FDP_0DC8
		mtcrf	255, r13
		lmw		r2, 0x0008(SP)
		lwz		r0, 0x0000(SP)
		lwz		SP, 0x0004(SP)
		rfi
		dcb.b	32, 0


FDP_0DFC
		mtcrf	255, r13
		lmw		r10, 0x0028(SP)
		lwz		r0, 0x0000(SP)
		lwz		SP, 0x0004(SP)
		rfi
		dcb.b	32, 0


FDP_0E30
		mfsprg	r24, 3
		mtsprg	2, r12
		rlwinm	r16, r16, 0, 27, 25
		lwz		r12, 0x0034(r24)
		stw		r16, -0x0010(SP)
		mtcrf	255, r13
		mtlr	r12
		lmw		r2, 0x0008(SP)
		lwz		r0, 0x0000(SP)
		lwz		SP, 0x0004(SP)
		mtsprg	1, SP
		blrl


FDP_0E60
		andi.	r23, r17, 0x07C0
		rlwinm	r28, r17, 13, 25, 29
		lwzx	r21, SP, r28
		li		r22, 8
		insrwi	r17, r22, 6, 26
		addi	r19, r19, 4
		bne		FDP_03AC
		rlwinm	r22, r17, 9, 27, 28
		srw		r21, r21, r22
		extrwi	r22, r17, 2, 4
		neg		r22, r22
		add		r19, r19, r22
		addi	r22, r22, 4
		insrwi.	r17, r22, 5, 26
		b		FDP_03AC


FDP_0E9C
		rlwinm	r23, r17, 18, 25, 29
		cmpw	cr7, r28, r23
		rlwinm	r23, r17, 23, 25, 29
		cmpw	cr6, r28, r23
		beq		cr7, FDP_0EB8
		beq		cr6, FDP_0EB8
		stwx	r21, SP, r28


FDP_0EB8
		addis	r28, r17, 32
		rlwimi	r17, r28, 0, 6, 10
		subi	r17, r17, 64
		beq		FDP_0DA0


FDP_0EC8
		andi.	r23, r17, 0x07C0
		li		r22, 9
		insrwi	r17, r22, 6, 26
		addi	r19, r19, 4
		bne		FDP_03AC
		extrwi	r22, r17, 2, 4
		neg		r22, r22
		add		r19, r19, r22
		addi	r22, r22, 4
		insrwi.	r17, r22, 5, 26
		b		FDP_03AC


FDP_0EF4
		rlwinm	r23, r17, 18, 25, 29
		cmpw	cr7, r28, r23
		rlwinm	r23, r17, 23, 25, 29
		cmpw	cr6, r28, r23
		beq		cr7, FDP_0F10
		beq		cr6, FDP_0F10
		stwx	r21, SP, r28


FDP_0F10
		addis	r28, r17, 32
		rlwimi	r17, r28, 0, 6, 10
		subi	r17, r17, 64
		not		r22, r22
		rlwimi	r22, r17, 6, 30, 31
		li		r28, 1
		mfxer	r23
		extrwi	r23, r23, 8, 16
		srwi	r20, r21, 24
		cmpw	cr7, r20, r23
		add.	r22, r22, r28
		beq		cr7, FDP_0F80
		beq		FDP_0F80
		extrwi	r20, r21, 8, 8
		cmpw	cr7, r20, r23
		add.	r22, r22, r28
		beq		cr7, FDP_0F80
		beq		FDP_0F80
		extrwi	r20, r21, 8, 16
		cmpw	cr7, r20, r23
		add.	r22, r22, r28
		beq		cr7, FDP_0F80
		beq		FDP_0F80
		clrlwi	r20, r21, 24
		cmpw	cr7, r20, r23
		add.	r22, r22, r28
		beq		cr7, FDP_0F80
		bne		FDP_0EC8


FDP_0F80
		rlwinm.	r28, r17, 0, 3, 3
		mfxer	r23
		add		r22, r22, r23
		insrwi	r23, r22, 7, 25
		mtxer	r23
		beq		FDP_0DA0
		mfcr	r23
		clrlwi	r23, r23, 30
		insrwi	r13, r23, 4, 0
		b		FDP_0DA0


FDP_0FA8
		clrrwi	r20, r21, 31
		xor.	r21, r20, r21
		beq		FDP_0178
		rlwinm.	r23, r21, 16, 17, 24
		addi	r23, r23, 128
		rlwimi	r20, r21, 29, 5, 31
		extsh	r23, r23
		rlwimi	r20, r21, 0, 1, 1
		slwi	r21, r21, 29
		subi	r23, r23, 16512
		rlwimi	r20, r23, 0, 2, 4
		bne		FDP_0178
		srwi	r21, r21, 20
		insrwi	r21, r20, 20, 0
		cntlzw	r23, r21
		slw		r21, r21, r23
		neg		r23, r23
		rlwimi	r20, r21, 21, 12, 31
		addi	r23, r23, 896
		slwi	r21, r21, 21
		insrwi	r20, r23, 11, 1
		b		FDP_0178


FDP_1000
		clrrwi	r21, r25, 10
		rlwimi	r21, r17, 14, 24, 28
		rlwimi	r14, r11, 0, 6, 6
		add		r21, r21, r20
		mtmsr	r14
		mtlr	r21
		isync
		oris	r11, r11, 0x0200
		blr


FDP_1024
		clrrwi	r19, r25, 10
		rlwimi	r19, r17, 14, 24, 28
		add		r19, r19, r20
		mtlr	r19
		rlwimi	r14, r11, 0, 6, 6
		subi	r23, SP, 736
		mtmsr	r14
		insrwi	r23, r18, 4, 28
		isync
		blr


FDP_104c
		oris	r11, r11, 0x0200
		lbz		r21, 0x0000(r23)
		b		FDP_00E4


FDP_1058
		oris	r11, r11, 0x0200
		lhz		r21, 0x0000(r23)
		b		FDP_00E4


FDP_1064
		oris	r11, r11, 0x0200
		lwz		r21, 0x0000(r23)
		b		FDP_00E4









;	Called by setup. QEMU naturally complains.

;	SPRs:
;MMCR0		equ		952		;	monitor control register 0
MMCR1		equ		956		;	monitor control register 1
MMCR2		equ		944		;	monitor control register 2
;PMC1		equ		953		;	performance counter 1
;PMC2		equ		954		;	performance counter 2
PMC3		equ		957		;	performance counter 3
PMC4		equ		958		;	performance counter 4
BAMR		equ		951		;	breakpoint address mask register 1
;SIA		equ		955		;	sampled instruction address 1
;SDA		equ		959		;	sampled data address (604 only?)


		macro
		TestSPR		&dest, &goodgpr, &badgpr, &spr

		mtspr		&spr, &goodgpr
		not			&badgpr, &goodgpr
		mfspr		&badgpr, &spr
		xor&dot		&dest, &goodgpr, &badgpr

		endm



ProbePerfMonitor	;	OUTSIDE REFERER

	;	We will populate r23 with bit fields describing perf monitor capabilities
		li			r23, 0


	;	Temporarily disable program interrupts (leave old handler in r20)
		lwz			r21, KDP.PA_NanoKernelCode(r1)
		lwz			r20, KDP.VecBaseSystem + VecTable.ProgramIntVector(r1)
		llabel		r18, IgnoreSoftwareInt
		add			r21, r18, r21
		stw			r21, KDP.VecBaseSystem + VecTable.ProgramIntVector(r1)



	;	SET BIT 31 if all the 604 perf monitor registers work

		li			r18, 0

		TestSPR		r17, r18, r19, MMCR0
		TestSPR		r19, r18, r19, PMC1
		or			r17, r17, r19
		TestSPR		r19, r18, r19, PMC2
		or			r17, r17, r19
		TestSPR		r19, r18, r19, SIA
		or.			r17, r17, r19

		bne			@dont_set_bit_31
		_bset		r23, r23, 31
@dont_set_bit_31

	;	ONLY test for bits 28-30 if bit 31 was just set...

		mr.			r23, r23
		beq			@stop_testing_perf_monitor

		;	SET BIT 30 if all the 750 perf monitor registers work

			TestSPR		r17, r18, r19, MMCR1
			TestSPR		r19, r18, r19, PMC3
			or			r17, r17, r19
			TestSPR		r19, r18, r19, PMC4
			or.			r17, r17, r19

			bne			@dont_set_bit_30
			_bset		r23, r23, 30
@dont_set_bit_30

		;	SET BIT 29 if SDA (604 but not 750) works

			li			r18, 0xaaa0
			TestSPR.	r17, r18, r19, SDA

			beq			@dont_set_bit_29
			_bset		r23, r23, 29
@dont_set_bit_29

		;	SET BIT 28 if EVEN MORE perf monitor registers work

			li			r18,  0x00
			TestSPR		r17, r18, r19, MMCR2

			li			r18,  0x00
			TestSPR		r19, r18, r19, BAMR

			or.			r17, r17, r19

			bne			@dont_set_bit_28
			_bset		r23, r23, 28
@dont_set_bit_28

@stop_testing_perf_monitor


	;	Restore program interrupts
		stw			r20,  KDP.VecBaseSystem + VecTable.ProgramIntVector(r1)


	;	Test r23 and save
		mr.			r23, r23
		stw			r23, KDP.PerfMonitorBits(r1)


	;	Set HiLevelPerfMonitorBits
		li			r23, 0
		_bset		r23, r23, 14
		_bset		r23, r23, 15


	;	SET BIT 18 if any perf monitor features present
		beq			* + 8
			_bset	r23, r23, 18


	;	And save
		stw			r23, KDP.HiLevelPerfMonitorBits(r1)


	;	Now do some insane arithmetic with the decrementer clock. TBE.

		lisori		r20, 0x80587ff3
		lisori		r21, 0xd62611e3

	;	Left-justify the decrementer clock rate
		lwz			r19, KDP.ProcessorInfo + NKProcessorInfo.DecClockRateHz(r1)
		cntlzw		r23, r19
		slw			r19, r19, r23

		cmpw		cr1, r20, r19
		addi		r23, r23,  0x02
		xor.		r24, r24, r24
		bge			cr1, ProbePerfMonitor_0x180
		addi		r23, r23, -0x01

ProbePerfMonitor_0x160
		cmpwi		cr1, r20,  0x00
		slwi		r20, r20,  1
		rlwimi		r20, r21,  1, 31, 31
		cmplw		cr2, r20, r19
		rlwinm.		r24, r24,  1,  0, 30
		slwi		r21, r21,  1
		blt			cr1, ProbePerfMonitor_0x180
		blt			cr2, ProbePerfMonitor_0x188

ProbePerfMonitor_0x180
		subf		r20, r19, r20
		ori			r24, r24,  0x01

ProbePerfMonitor_0x188
		bge			ProbePerfMonitor_0x160
		stw			r24,  0x05bc(r1)
		stb			r23,  0x05b8(r1)
		li			r21,  0x20
		subf		r21, r23, r21
		stb			r21,  0x05bb(r1)
		blr



FDPEmulateInstruction

		mfsprg	r1, 0
		lwz		r8,  0x0104(r6)
		stw		r8,  0x0000(r1)
		stw		r2,  0x0008(r1)
		stw		r3,  0x000c(r1)
		stw		r4,  0x0010(r1)
		stw		r5,  0x0014(r1)
		stmw	r14,  0x0038(r1)
		mr		r16, r7
		lwz		r7,  0x013c(r6)
		stw		r7,  0x001c(r1)
		lwz		r8,  0x0144(r6)
		stw		r8,  0x0020(r1)
		lwz		r9,  0x014c(r6)
		stw		r9,  0x0024(r1)
		lwz		r23,  0x0154(r6)
		stw		r23,  0x0028(r1)
		lwz		r23,  0x015c(r6)
		stw		r23,  0x002c(r1)
		lwz		r23,  0x0164(r6)
		stw		r23,  0x0030(r1)
		lwz		r23,  0x016c(r6)
		stw		r23,  0x0034(r1)
		lwz		r1, -0x0004(r1)
		addi	r22, r6,  0xc4
		lwz		r23,  0x0ea0(r1)
		lwz		r25,  0x0650(r1)
		addi	r23, r23,  0x01
		stw		r23,  0x0ea0(r1)
		mfsprg	r24, 3
		addi	r23, r1,  0x4e0
		mfmsr	r14
		ori		r15, r14,  0x10
		mtsprg	3, r23
		mtmsr	r15
		isync
		lwz		r27,  0x0000(r10)
		mtmsr	r14
		isync
		mtsprg	3, r24
		srwi	r23, r27, 26
		cmpwi	cr6, r23,  0x09
		cmpwi	r23,  0x16
		cmpwi	cr1, r23,  0x1f
		lwz		r20,  0x05b8(r1)
		rlwinm	r21, r16, 15, 14, 14
		neg		r21, r21
		rlwimi	r21, r16, 14, 16, 16
		or		r21, r21, r20
		rlwimi	r21, r27,  0, 21, 31
		rlwimi	r16, r16, 27, 26, 26
		mfsprg	r1, 0
		rlwinm	r17, r27, 13, 25, 29
		rlwinm	r18, r27, 18, 25, 29
		beq		cr6, FDP_1214_0x2b4
		mtcrf	0x3f, r21
		rlwinm	r19, r27, 23, 25, 29
		beq		FDP_1bd0
		bne		cr1, FDP_1324
		rlwinm	r21, r27,  2, 24, 28
		add		r21, r21, r25
		lwz		r20,  0x1374(r21)
		rlwinm	r23, r27, 26, 27, 31
		lwz		r21,  0x1378(r21)
		rotlw.	r20, r20, r23
		add		r21, r21, r25
		mtlr	r21
		bltlr

FDP_1324
		ble		cr1, FDP_1338
		lis		r20,  0x5556
		ori		r20, r20,  0x5500
		rotlw.	r20, r20, r23
		blt		FDP_1c18

FDP_1338
		mtcrf	 0x70, r11
		li		r8,  0x04
		ble		cr3, FDP_1354


FDP_1344
		mtcrf	 0x0f, r11
		li		r8,  0x04
		ble		cr4, FDP_1354
		li		r8,  0x05

FDP_1354
		lwz		r6, -0x0004(r1)
		lwz		r9,  0x0ea0(r6)
		lmw		r14,  0x0038(r1)
		addi	r9, r9, -0x01
		stw		r9,  0x0ea0(r6)
		lwz		r6, -0x0014(r1)
		lwz		r7, -0x0010(r1)
		b		CodeLikeException



;	What the hell is this?
ProgramIntTable
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00910091, FDP_148c - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x10301030, 0x0000151c
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00328000, 0x000016d0
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x0080a000, 0x00001c18
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x55545502, 0x00001c20
		dc.l	0x0f000f0c, 0x00001ad0
		dc.l	0x0a008a08, 0x00001aa8
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x80008000, 0x00001b8c
		dc.l	0x00000000, FDP_1338 - FDP
		dc.l	0x00000000, FDP_1338 - FDP

FDP_1474
		stw		r20, 0(r22)


FDP_1478
		bns		cr7, FDP_1484
		mfcr	r23
		rlwimi	r13, r23, 0, 0, 3

FDP_1484
		stwx	r21, r1, r17
		b		FDP_0da0

FDP_148c
		bns		cr2, FDP_1338
		lwzx	r18, SP, r18
		bge		cr6, FDP_14EC
		bgt		cr5, FDP_14B0
		mr.		r21, r18
		crxor	cr5_SO, cr5_SO, cr0_LT
		bns		cr5, FDP_1478
		neg.	r21, r18
		b		FDP_1478

FDP_14b0
		li		r21, 0
		addo.	r21, r18, r21
		crxor	cr5_SO, cr5_SO, cr0_LT
		bns		cr5, FDP_1478
		nego.	r21, r18
		b		FDP_1478

FDP_1214_0x2b4
		mtcrf	0x3f, r21
		bns		cr2, FDP_1338
		lwzx	r18, r1, r18
		extsh	r19, r27
		cmpw	cr1, r19, r18
		subf	r21, r21, r21
		blt		cr1, FDP_1484
		subf	r21, r18, r19
		b		FDP_1484

FDP_14ec
		lwzx	r19, SP, r19
		bgt		cr5, FDP_1508
		cmpw	cr1, r19, r18
		sub.	r21, r21, r21
		blt		cr1, FDP_1478
		sub.	r21, r19, r18
		b		FDP_1478


FDP_1508
		cmpw	cr1, r19, r18
		subo.	r21, r21, r21
		blt		cr1, FDP_1478
		subo.	r21, r19, r18
		b		FDP_1478
		bge		cr2, FDP_1338
		lwzx	r19, SP, r19
		lwzx	r18, SP, r18
		bne		cr5, FDP_16B8
		cmpwi	cr1, r19, 0
		bgt		cr6, FDP_1548
		lwz		r24, 0(r22)
		srwi	r21, r24, 31
		add.	r21, r21, r18
		bne		FDP_1590
		mr		r18, r24


FDP_1548
		cmpwi	r19, -1
		bgt		cr5, FDP_1574
		beq		FDP_1568
		beq		cr1, FDP_1580
		divw	r21, r18, r19


FDP_155c
		mullw	r20, r21, r19
		sub.	r20, r18, r20
		b		FDP_1474


FDP_1568
		neg		r21, r18
		sub.	r20, r18, r18
		b		FDP_1474


FDP_1574
		divwo	r21, r18, r19
		beq		FDP_1568
		bne		cr1, FDP_155C


FDP_1580
		rlwinm	r23, r18, 2, 30, 30
		subi	r21, r23, 1
		mr.		r20, r18
		b		FDP_1474


FDP_1590
		mfxer	r26			; XER = 1
		beq		cr1, FDP_1698
		cmpwi	r19, 0
		cmpwi	cr1, r18, 0
		crxor	cr1_SO, cr0_LT, cr1_LT
		bge		FDP_15AC
		neg		r19, r19


FDP_15ac
		bge		cr1, FDP_15B8
		subfic	r24, r24, 0
		subfze	r18, r18


FDP_15b8
		cmplw	r18, r19
		bge		FDP_1698
		cntlzw	r21, r19
		xor		r18, r18, r24
		slw		r19, r19, r21
		rotlw	r18, r18, r21
		slw		r24, r24, r21
		xor		r18, r18, r24
		srwi	r23, r19, 16
		divwu	r20, r18, r23
		mullw	r23, r20, r23
		sub		r18, r18, r23
		slwi	r18, r18, 16
		inslwi	r18, r24, 16, 16
		slwi	r24, r24, 16
		clrlwi	r23, r19, 16
		mullw	r23, r20, r23
		subc	r18, r18, r23
		subfe.	r23, r23, r23
		add		r24, r24, r20
		bge		FDP_161C


FDP_160c
		addc	r18, r18, r19
		addze.	r23, r23
		subi	r24, r24, 1
		blt		FDP_160C


FDP_161c
		srwi	r23, r19, 16
		divwu	r20, r18, r23
		mullw	r23, r20, r23
		sub		r18, r18, r23
		slwi	r18, r18, 16
		inslwi	r18, r24, 16, 16
		slwi	r24, r24, 16
		clrlwi	r23, r19, 16
		mullw	r23, r20, r23
		subc	r18, r18, r23
		subfe.	r23, r23, r23
		add		r24, r24, r20
		bge		FDP_1660


FDP_1650
		addc	r18, r18, r19
		addze.	r23, r23
		subi	r24, r24, 1
		blt		FDP_1650


FDP_1660
		srw		r20, r18, r21
		mr.		r21, r24
		bge		cr1, FDP_1670
		neg		r20, r20


FDP_1670
		bns		cr1, FDP_1678
		neg.	r21, r21


FDP_1678
		ble		cr5, FDP_168C
		crxor	cr0_LT, cr0_LT, cr1_SO
		rlwinm	r26, r26, 0, 2, 0
		bge		FDP_168C
		oris	r26, r26, 0xC000


FDP_168c
		mtxer	r26			; XER = 1
		mr.		r20, r20
		b		FDP_1474


FDP_1698
		ble		cr5, FDP_16A0
		oris	r26, r26, 0xC000


FDP_16a0
		mtxer	r26			; XER = 1
		not		r21, r18
		srwi	r23, r18, 31
		mr.		r20, r24
		add		r21, r23, r21
		b		FDP_1474


FDP_16b8
		mulhw	r21, r18, r19
		bgt		cr5, FDP_16C8
		mullw.	r20, r18, r19
		b		FDP_1474


FDP_16c8
		mullwo.	r20, r18, r19
		b		FDP_1474
		bgt		cr6, FDP_18D8
		bgt		cr5, FDP_1A64
		cmpwi	r18, 64
		cmpwi	cr1, r18, 0
		cmpwi	cr6, r18, 4
		bso		cr5, FDP_1938
		bge		FDP_17F8
		crclr	cr0_LT
		beq		cr1, FDP_1734
		beq		cr6, FDP_1740
		cmpwi	cr1, r18, 20
		cmpwi	cr6, r18, 24
		beq		cr1, FDP_1750
		beq		cr6, FDP_17C8
		cmpwi	cr1, r18, 32
		cmpwi	cr6, r18, 36
		beq		cr1, FDP_17D4
		beq		cr6, FDP_17E8
		cmpwi	cr6, r18, 16
		lwzx	r18, SP, r18
		lwzx	r19, SP, r19
		add.	r21, r18, r19
		beq		cr6, FDP_1750
		bne		cr3, FDP_1338
		b		FDP_1B54


FDP_1734
		bge		cr2, FDP_1338
		lwz		r21, 0(r22)
		b		FDP_1478


FDP_1740
		bne		cr3, FDP_1338
		mtcrf	%10000000, r13
		dc.l	0x7EA102A7		; mfxer r21 | bit 31
		b		FDP_1478


FDP_1750
		ble		cr2, FDP_1338
		lwz		r22, -0x0004(SP)


FDP_1758
		mftbu	r20
		mftb	r21
		mftbu	r23
		cmplw	cr1, r23, r20
		bne-	cr1, FDP_1758
		lwz		r23, 0x05BC(r22)
		lbz		r18, 0x05B8(r22)
		lbz		r19, 0x05BB(r22)
		mullw	r22, r20, r23
		mulhwu	r24, r21, r23
		add		r22, r22, r24
		bne		cr6, FDP_17A8
		cmplw	cr1, r22, r24
		srw		r22, r22, r19
		mulhwu	r21, r20, r23
		bge+	cr1, FDP_179C
		addi	r21, r21, 1


FDP_179c
		slw		r21, r21, r18
		add		r21, r21, r22
		b		FDP_1478


FDP_17a8
		mullw	r21, r21, r23
		srw		r21, r21, r19
		slw		r22, r22, r18
		add		r21, r21, r22
		lis		r23, 15258
		ori		r23, r23, 0xCA00
		mulhwu	r21, r21, r23
		b		FDP_1478


FDP_17c8
		bne		cr2, FDP_1338
		mfdec	r21			; DEC = 22
		b		FDP_1478


FDP_17d4
		bne		cr3, FDP_1338
		mtcrf	%10000000, r13
		mtlr	r12			; LR = 8
		dc.l	0x7EA802A7		; mflr r21 | bit 31
		b		FDP_1478


FDP_17e8
		bne		cr3, FDP_1338
		mtcrf	%10000000, r13
		dc.l	0x7EA902A7		; mfctr r21 | bit 31
		b		FDP_1478


FDP_17f8
		lwz		r23, -0x0004(SP)
		mtcrf	%10000000, r13
		lwz		r23, 0x05C0(r23)
		extrwi	r19, r27, 10, 11
		cmplwi	cr1, r19, 0x03E8
		beq		cr1, FDP_187C
		clrlslwi	r23, r23, 28, 20
		bne		cr4, FDP_1344
		mtcrf	32, r23
		cmplwi	cr1, r19, 0x031D
		beq		cr1, FDP_1898
		cmplwi	cr1, r19, 0x033D
		beq		cr1, FDP_18A0
		cmplwi	cr1, r19, 0x035D
		beq		cr1, FDP_18A8
		cmplwi	cr1, r19, 0x037D
		beq		cr1, FDP_18B0
		bgt		cr2, FDP_1848
		cmplwi	cr1, r19, 0x03FD
		beq		cr1, FDP_18D0


FDP_1848
		bne		cr2, FDP_1344
		cmplwi	cr1, r19, 0x039D
		beq		cr1, FDP_18B8
		cmplwi	cr1, r19, 0x03BD
		beq		cr1, FDP_18C0
		cmplwi	cr1, r19, 0x03DD
		beq		cr1, FDP_18C8
		bge		cr2, FDP_1344
		cmplwi	cr1, r19, 0x021D
		beq		cr1, FDP_1888
		cmplwi	cr1, r19, 0x02FD
		beq		cr1, FDP_1890
		b		FDP_1344


FDP_187c
		ble		cr4, FDP_1344
		dc.l	0x7EBF42A7		; mfpvr r21 | bit 31
		b		FDP_1478


FDP_1888
		dc.l	0x7EB0EAA7		; mfspr	r21, MMCR2 | bit 31
		b		FDP_1478


FDP_1890
		dc.l	0x7EB7EAA7		; mfspr	r21, BAMR | bit 31
		b		FDP_1478


FDP_1898
		dc.l	0x7EB8EAA7		; mfspr	r21, MMCR0 | bit 31
		b		FDP_1478


FDP_18a0
		dc.l	0x7EB9EAA7		; mfspr	r21, PMC1 | bit 31
		b		FDP_1478


FDP_18a8
		dc.l	0x7EBAEAA7		; mfspr	r21, PMC2 | bit 31
		b		FDP_1478


FDP_18b0
		dc.l	0x7EBBEAA7		; mfspr	r21, SIA | bit 31
		b		FDP_1478


FDP_18b8
		dc.l	0x7EBCEAA7		; mfspr	r21, MMCR1 | bit 31
		b		FDP_1478


FDP_18c0
		dc.l	0x7EBDEAA7		; mfspr	r21, PMC3 | bit 31
		b		FDP_1478


FDP_18c8
		dc.l	0x7EBEEAA7		; mfspr	r21, PMC4 | bit 31
		b		FDP_1478


FDP_18d0
		dc.l	0x7EBFEAA7		; mfspr	r21, SDA | bit 31
		b		FDP_1478


FDP_18d8
		extrwi	r23, r27, 10, 11
		cmplwi	cr1, r23, 0x0188
		cmplwi	cr6, r23, 0x01A8
		cror	cr0_EQ, cr1_EQ, cr6_EQ
		bne		FDP_1338


FDP_18ec
		DIALECT	POWER
		mfrtcu	r20			; RTCU = 4
		mfrtcl	r21			; RTCL = 5
		mfrtcu	r23			; RTCU = 4
		DIALECT	PowerPC

		xor.	r23, r23, r20
		lis		r23, 15258
		ori		r23, r23, 0xCA00
		bne-	FDP_18EC
		mfspr	r24, MQ			; 0
		crset	cr3_SO
		mullw	r19, r20, r23
		mtspr	MQ, r24			; 0
		add		r21, r21, r19
		beq		cr1, FDP_1484
		cmplw	r21, r19
		mulhwu	r21, r20, r23
		mtspr	MQ, r24			; 0
		bge		FDP_1484
		addi	r21, r21, 1
		b		FDP_1484


FDP_1938
		lwzx	r17, SP, r17
		bge		FDP_1998
		mr.		r17, r17
		beq		cr1, FDP_1964
		bne		cr3, FDP_1338
		beq		cr6, FDP_1970
		cmpwi	cr1, r18, 32
		cmpwi	cr6, r18, 36
		beq		cr1, FDP_197C
		beq		cr6, FDP_198C
		b		FDP_1B54


FDP_1964
		bge		cr2, FDP_1338
		stw		r17, 0(r22)
		b		FDP_1B54


FDP_1970
		mtcrf	%10000000, r13
		dc.l	0x7E2103A7		; mtxer r17 | bit 31
		b		FDP_1B54


FDP_197c
		mtcrf	%10000000, r13
		mr		r12, r17
		dc.l	0x7E2803A7		; mtlr r17 | bit 31
		b		FDP_1B54


FDP_198c
		mtcrf	%10000000, r13
		dc.l	0x7E2903A7		; mtctr r17 | bit 31
		b		FDP_1B54


FDP_1998
		lwz		r23, -0x0004(SP)
		bne		cr4, FDP_1344
		lwz		r23, 0x05C0(r23)
		mtcrf	%10000000, r13
		clrlslwi	r23, r23, 28, 20
		extrwi	r19, r27, 10, 11
		mtcrf	32, r23
		cmplwi	cr1, r19, 0x031D
		beq		cr1, FDP_1A24
		cmplwi	cr1, r19, 0x033D
		beq		cr1, FDP_1A2C
		cmplwi	cr1, r19, 0x035D
		beq		cr1, FDP_1A34
		cmplwi	cr1, r19, 0x037D
		beq		cr1, FDP_1A3C
		bgt		cr2, FDP_19E0
		cmplwi	cr1, r19, 0x03FD
		beq		cr1, FDP_1A5C


FDP_19e0
		bne		cr2, FDP_1344
		cmplwi	cr1, r19, 0x039D
		beq		cr1, FDP_1A44
		cmplwi	cr1, r19, 0x03BD
		beq		cr1, FDP_1A4C
		cmplwi	cr1, r19, 0x03DD
		beq		cr1, FDP_1A54
		bge		cr2, FDP_1344
		cmplwi	cr1, r19, 0x021D
		beq		cr1, FDP_1A14
		cmplwi	cr1, r19, 0x02FD
		beq		cr1, FDP_1A1C
		b		FDP_1344


FDP_1a14
		dc.l	0x7E30EBA7		; mtspr r17, MMCR2 | bit 31
		b		FDP_1B54


FDP_1a1c
		dc.l	0x7E37EBA7		; mtspr r17, BAMR | bit 31
		b		FDP_1B54


FDP_1a24
		dc.l	0x7E38EBA7		; mtspr r17, MMCR0 | bit 31
		b		FDP_1B54


FDP_1a2c
		dc.l	0x7E39EBA7		; mtspr r17, PMC1 | bit 31
		b		FDP_1B54


FDP_1a34
		dc.l	0x7E3AEBA7		; mtspr r17, PMC2 | bit 31
		b		FDP_1B54


FDP_1a3c
		dc.l	0x7E3BEBA7		; mtspr r17, SIA | bit 31
		b		FDP_1B54


FDP_1a44
		dc.l	0x7E3CEBA7		; mtspr r17, MMCR1 | bit 31
		b		FDP_1B54


FDP_1a4c
		dc.l	0x7E3DEBA7		; mtspr r17, PMC3 | bit 31
		b		FDP_1B54


FDP_1a54
		dc.l	0x7E3EEBA7		; mtspr r17, PMC4 | bit 31
		b		FDP_1B54


FDP_1a5c
		dc.l	0x7E3FEBA7		; mtspr r17, SDA | bit 31
		b		FDP_1B54


FDP_1a64
		lwz		r23, -0x0004(SP)
		bge		cr3, FDP_1338
		extrwi.	r18, r27, 4, 12
		rlwinm	r21, r27, 16, 28, 30
		cmpwi	cr1, r21, 10
		addi	r18, r18, 6808
		lbzx	r18, r25, r18
		addi	r21, r23, 3872
		beq		cr1, FDP_1A90
		lhzx	r21, r21, r18
		b		FDP_1478


FDP_1a90
		lwzx	r21, r21, r18
		b		FDP_1478

		DIALECT	POWER
		dozi	SP, r4, 9252
		dozi	r17, r8, 10784
		dc.l	0x2c2e1814		; cmpdi r14, 6164
		DIALECT	PowerPC

		subfic	r17, r4, 9252
		lwzx	r19, SP, r19
		clrlwi	r19, r19, 27
		bso		cr5, FDP_1B1C
		bns		cr2, FDP_1338
		lwzx	r17, SP, r17
		lis		r23, -32768
		lwzx	r21, SP, r18
		srw		r23, r23, r19
		srw		r17, r17, r19
		b		FDP_1C08
		bgt		cr6, FDP_1B18
		lwzx	r19, SP, r19
		clrlwi	r19, r19, 26
		bge		cr6, FDP_1B1C
		cmpwi	r19, 31
		crnot	cr5_SO, cr5_SO
		ble		FDP_1B1C
		bge		cr2, FDP_1338
		lwz		r20, 0(r22)
		li		r23, -1
		clrlwi	r19, r19, 27
		bgt		cr5, FDP_1B0C
		slw		r23, r23, r19
		and.	r21, r20, r23
		b		FDP_1B50


FDP_1b0c
		srw		r23, r23, r19
		and.	r21, r20, r23
		b		FDP_1B50


FDP_1b18
		extrwi	r19, r27, 5, 16


FDP_1b1c
		bge		cr2, FDP_1338
		lwzx	r17, SP, r17
		bgt		cr5, FDP_1B64
		slw.	r21, r17, r19
		rotlw	r20, r17, r19
		bge		cr6, FDP_1B4C
		li		r23, -1
		slw		r23, r23, r19


FDP_1b3c
		lwz		r19, 0(r22)
		andc	r23, r19, r23
		or.		r21, r21, r23
		bns		cr5, FDP_1B50


FDP_1b4c
		stw		r20, 0(r22)


FDP_1b50
		stwx	r21, r1, r18


FDP_1b54
		bns		cr7, FDP_0da0
		mfcr	r23
		rlwimi	r13, r23,  0,  0,  3
		b		FDP_0da0


FDP_1b64
		neg		r20, r19
		rotlw	r20, r17, r20
		beq		cr5, FDP_1B84
		srw.	r21, r17, r19
		bge		cr6, FDP_1B4C
		li		r23, -1
		srw		r23, r23, r19
		b		FDP_1B3C


FDP_1b84
		sraw.	r21, r17, r19
		b		FDP_1B4C
		bns		cr2, FDP_1338
		lwzx	r19, SP, r19
		lwzx	r17, SP, r17
		bgt		cr5, FDP_1BBC
		li		r21, -1
		sub		r19, r19, r17
		not		r19, r19
		clrlwi	r19, r19, 27
		neg		r17, r17
		slw		r21, r21, r19
		rotlw.	r21, r21, r17
		b		FDP_1B50


FDP_1bbc
		lwzx	r21, SP, r18
		and		r17, r17, r19
		andc	r21, r21, r19
		or.		r21, r21, r17
		b		FDP_1B50


FDP_1bd0
		bns		cr2, FDP_1338
		lwzx	r17, r1, r17
		rlwinm	r20, r27, 26, 27, 31
		lwzx	r19, r1, r19
		rlwinm	r21, r27, 31, 27, 31
		li		r23, -0x01
		subf	r21, r20, r21
		not		r21, r21
		clrlwi	r21, r21,  0x1b
		neg		r20, r20
		slw		r23, r23, r21
		lwzx	r21, r1, r18
		rotlw	r23, r23, r20
		rotlw	r17, r17, r19


FDP_1c08
		and		r17, r17, r23
		andc	r21, r21, r23
		or.		r21, r21, r17
		b		FDP_1b50


FDP_1c18
		ble		cr3, FDP_1338
		b		major_0x03324
		bgt		cr6, FDP_1C18
		bge		cr4, FDP_1338
		b		major_0x03324



		align	5

FDP_1c40	;	OUTSIDE REFERER
;	r6 = saved at *(ewa + 0x18)
;	sprg1 = saved at *(ewa + 4)
;	rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N)
		bl		LoadInterruptRegisters
;	r0 = 0
;	r1 = *(ewa - 4)
;	r6 = kdp
;	r7 = *(ewa - 0x10) # flags?
;	r8 = ewa
;	r10 = srr0
;	r11 = srr1
;	r12 = sprg2
;	r13 = cr

		mfsprg	r1, 0
		lwz		r8,  0x0104(r6)
		stw		r8,  0x0000(r1)
		stw		r2,  0x0008(r1)
		stw		r3,  0x000c(r1)
		stw		r4,  0x0010(r1)
		stw		r5,  0x0014(r1)
		stmw	r14,  0x0038(r1)
		mr		r16, r7
		lwz		r7,  0x013c(r6)
		stw		r7,  0x001c(r1)
		lwz		r8,  0x0144(r6)
		stw		r8,  0x0020(r1)
		lwz		r9,  0x014c(r6)
		stw		r9,  0x0024(r1)
		lwz		r23,  0x0154(r6)
		stw		r23,  0x0028(r1)
		lwz		r23,  0x015c(r6)
		stw		r23,  0x002c(r1)
		lwz		r23,  0x0164(r6)
		stw		r23,  0x0030(r1)
		lwz		r23,  0x016c(r6)
		stw		r23,  0x0034(r1)
		lwz		r1, -0x0004(r1)
		addi	r22, r6,  0xc4
		mfsprg	r24, 3
		addi	r23, r1,  0x4e0
		mfmsr	r14
		oris	r14, r14,  0x200
		ori		r15, r14,  0x10
		mtsprg	3, r23
		mtmsr	r15
		isync
		lwz		r27,  0x0000(r10)
		mtmsr	r14
		isync
		mtsprg	3, r24
		lwz		r24,  0x00d8(r6)
		addi	r24, r24,  0x00
		li		r8,  0x00
		stvx	v0, r24, r8
		li		r9,  0x10
		stvx	v1, r24, r9
		li		r8,  0x20
		stvx	v2, r24, r8
		li		r9,  0x30
		stvx	v3, r24, r9
		li		r8,  0x40
		stvx	v4, r24, r8
		li		r9,  0x50
		stvx	v5, r24, r9
		li		r8,  0x60
		stvx	v6, r24, r8
		li		r9,  0x70
		stvx	v7, r24, r9
		li		r8,  0x80
		stvx	v8, r24, r8
		li		r9,  0x90
		stvx	v9, r24, r9
		li		r8, 160
		stvx	v10, r24, r8
		li		r9,  0xb0
		stvx	v11, r24, r9
		li		r8,  0xc0
		stvx	v12, r24, r8
		li		r9,  0xd0
		stvx	v13, r24, r9
		li		r8,  0xe0
		stvx	v14, r24, r8
		li		r9, 240
		stvx	v15, r24, r9
		li		r8,  0x100
		stvx	v16, r24, r8
		li		r9,  0x110
		stvx	v17, r24, r9
		li		r8,  0x120
		stvx	v18, r24, r8
		li		r9,  0x130
		stvx	v19, r24, r9
		li		r8, 320
		stvx	v20, r24, r8
		li		r9,  0x150
		stvx	v21, r24, r9
		li		r8,  0x160
		stvx	v22, r24, r8
		li		r9,  0x170
		stvx	v23, r24, r9
		li		r8,  0x180
		stvx	v24, r24, r8
		li		r9, 400
		stvx	v25, r24, r9
		li		r8,  0x1a0
		stvx	v26, r24, r8
		li		r9,  0x1b0
		stvx	v27, r24, r9
		li		r8,  0x1c0
		stvx	v28, r24, r8
		li		r9,  0x1d0
		stvx	v29, r24, r9
		li		r8, 480
		stvx	v30, r24, r8
		li		r9,  0x1f0
		stvx	v31, r24, r9
		lwz		r23,  0x0ed8(r1)
		lwz		r25,  0x0650(r1)
		addi	r23, r23,  0x01
		stw		r23,  0x0ed8(r1)
		rlwinm.	r8, r27, 26,  0,  0
		rlwinm	r9, r27, 24, 30, 31
		cmpwi	cr1, r9,  0x03
		cmpwi	cr2, r9,  0x00
		rlwinm	r17, r27, 15, 23, 27
		rlwinm	r18, r27, 20, 23, 27
		rlwinm	r19, r27, 25, 23, 27
		blt		FDP_1c40_0x398
		beq		cr2, FDP_1c40_0x43c
		bgt		cr1, FDP_1c40_0x278
		lvx		v3, r24, r19
		vspltisw	v31,  0x00
		vspltisw	v29,  0x01
		vcfux	v29, v29,  0x00
		vspltisw	v30, -0x01
		vspltisw	v22,  0x09
		vsrw	v28, v30, v22
		vslw	v27, v30, v30
		vnor	v26, v28, v27
		vsraw	v24, v3, v30
		vand	v23, v3, v28
		vcmpequw	v23, v23, v31
		vand	v22, v3, v26
		vcmpequw	v22, v22, v31
		vandc	v25, v22, v23
		lwz		r9,  0x064c(r1)
		llabel	r8, blergh
		add		r9, r9, r8
		rlwinm	r8, r27, 28, 26, 29
		add		r9, r9, r8
		mtlr	r9
		blr

blergh
		b		panic
		b		panic
		b		panic
		b		panic
		b		major_0x07ac0_0x14c
		b		major_0x07ac0_0x100
		b		major_0x07ac0_0x24c
		b		major_0x07ac0_0x220
		b		FDP_1c40_0x4d0
		b		FDP_1c40_0x4e0
		b		FDP_1c40_0x4f0
		b		FDP_1c40_0x500
		b		panic
		b		panic
		b		FDP_1c40_0x514
		b		major_0x07980_0x100

FDP_1c40_0x274	;	OUTSIDE REFERER
		stvx	v1, r24, r17

FDP_1c40_0x278
		li		r8,  0x00
		lvx		v0, r24, r8
		li		r8,  0x10
		lvx		v1, r24, r8
		li		r8,  0x20
		lvx		v2, r24, r8
		li		r8,  0x30
		lvx		v3, r24, r8
		li		r8,  0x40
		lvx		v4, r24, r8
		li		r8,  0x50
		lvx		v5, r24, r8
		li		r8,  0x60
		lvx		v6, r24, r8
		li		r8,  0x70
		lvx		v7, r24, r8
		li		r8,  0x80
		lvx		v8, r24, r8
		li		r8,  0x90
		lvx		v9, r24, r8
		li		r8, 160
		lvx		v10, r24, r8
		li		r8,  0xb0
		lvx		v11, r24, r8
		li		r8,  0xc0
		lvx		v12, r24, r8
		li		r8,  0xd0
		lvx		v13, r24, r8
		li		r8,  0xe0
		lvx		v14, r24, r8
		li		r8, 240
		lvx		v15, r24, r8
		li		r8,  0x100
		lvx		v16, r24, r8
		li		r8,  0x110
		lvx		v17, r24, r8
		li		r8,  0x120
		lvx		v18, r24, r8
		li		r8,  0x130
		lvx		v19, r24, r8
		li		r8, 320
		lvx		v20, r24, r8
		li		r8,  0x150
		lvx		v21, r24, r8
		li		r8,  0x160
		lvx		v22, r24, r8
		li		r8,  0x170
		lvx		v23, r24, r8
		li		r8,  0x180
		lvx		v24, r24, r8
		li		r8, 400
		lvx		v25, r24, r8
		li		r8,  0x1a0
		lvx		v26, r24, r8
		li		r8,  0x1b0
		lvx		v27, r24, r8
		li		r8,  0x1c0
		lvx		v28, r24, r8
		li		r8,  0x1d0
		lvx		v29, r24, r8
		li		r8, 480
		lvx		v30, r24, r8
		li		r8,  0x1f0
		lvx		v31, r24, r8
		andi.	r23, r16,  0x20
		addi	r10, r10,  0x04
		mfsprg	r1, 0
		mtspr	srr0, r10
		mtspr	srr1, r11
		bne		FDP_0E30
		mtlr	r12
		b		FDP_0DC8

FDP_1c40_0x398
		rlwinm	r22, r27, 30, 23, 27
		mfmsr	r14
		ori		r15, r14,  0x2000
		mtmsr	r15
		isync
		rlwinm.	r8, r11,  0, 18, 18
		beq		FDP_1c40_0x3cc
		stfd	f0,  0x0200(r6)
		mffs	f0
		stfd	f1,  0x0208(r6)
		stfd	f2,  0x0210(r6)
		stfd	f3,  0x0218(r6)
		stfd	f0,  0x00e0(r6)

FDP_1c40_0x3cc
		dc.l	0xff80010c
		crmove	30, 2
		rlwinm.	r9, r27, 31,  0,  0
		li		r8,  0x03
		crmove	26, 0

FDP_1c40_0x3e0
		lfsx	f0, r24, r18
		addic.	r8, r8, -0x01
		lfsx	f1, r24, r19
		lfsx	f2, r24, r22
		bne		cr6, FDP_1c40_0x408
		fnmsubs	f3, f0, f2, f1
		stfsx	f3, r24, r17
		addi	r24, r24,  0x04
		bge		FDP_1c40_0x3e0
		b		FDP_1c40_0x418

FDP_1c40_0x408
		fmadds	f3, f0, f2, f1
		stfsx	f3, r24, r17
		addi	r24, r24,  0x04
		bge		FDP_1c40_0x3e0

FDP_1c40_0x418
		addi	r24, r24, -0x10
		beq		cr7, FDP_1c40_0x278
		lfd		f0,  0x00e0(r6)
		mtfsf	 0xff, f0
		lfd		f0,  0x0200(r6)
		lfd		f1,  0x0208(r6)
		lfd		f2,  0x0210(r6)
		lfd		f3,  0x0218(r6)
		b		FDP_1c40_0x278

FDP_1c40_0x43c
		mfmsr	r14
		ori		r15, r14,  0x2000
		mtmsr	r15
		isync
		rlwinm.	r8, r11,  0, 18, 18
		beq		FDP_1c40_0x468
		stfd	f0,  0x0200(r6)
		mffs	f0
		stfd	f1,  0x0208(r6)
		stfd	f3,  0x0218(r6)
		stfd	f0,  0x00e0(r6)

FDP_1c40_0x468
		dc.l	0xff80010c
		crmove	30, 2
		rlwinm.	r9, r27, 25,  0,  0
		li		r8,  0x03
		crmove	26, 0

FDP_1c40_0x47c
		lfsx	f0, r24, r18
		addic.	r8, r8, -0x01
		lfsx	f1, r24, r19
		bne		cr6, FDP_1c40_0x4a0
		fsubs	f3, f0, f1
		stfsx	f3, r24, r17
		addi	r24, r24,  0x04
		bge		FDP_1c40_0x47c
		b		FDP_1c40_0x4b0

FDP_1c40_0x4a0
		fadds	f3, f0, f1
		stfsx	f3, r24, r17
		addi	r24, r24,  0x04
		bge		FDP_1c40_0x47c

FDP_1c40_0x4b0
		addi	r24, r24, -0x10
		beq		cr7, FDP_1c40_0x278
		lfd		f0,  0x00e0(r6)
		mtfsf	 0xff, f0
		lfd		f0,  0x0200(r6)
		lfd		f1,  0x0208(r6)
		lfd		f3,  0x0218(r6)
		b		FDP_1c40_0x278

FDP_1c40_0x4d0
		vsel	v22, v31, v27, v24
		vsel	v23, v3, v22, v25
		vrfin	v1, v23
		b		FDP_1c40_0x274

FDP_1c40_0x4e0
		vsel	v22, v31, v27, v24
		vsel	v23, v3, v22, v25
		vrfiz	v1, v23
		b		FDP_1c40_0x274

FDP_1c40_0x4f0
		vsel	v22, v29, v27, v24
		vsel	v23, v3, v22, v25
		vrfip	v1, v23
		b		FDP_1c40_0x274

FDP_1c40_0x500
		vor		v29, v29, v27
		vsel	v22, v31, v29, v24
		vsel	v23, v3, v22, v25
		vrfim	v1, v23
		b		FDP_1c40_0x274

FDP_1c40_0x514
		vsel	v23, v3, v31, v25
		lwz		r9,  0x064c(r1)
		llabel	r8, FDP_2180
		add		r8, r8, r9
		srwi	r9, r18,  1
		add		r8, r8, r9
		mtlr	r8
		blr



		align	6

FDP_2180
		dc.l	0x1020BB8A
		b		FDP_1c40_0x274
		dc.l	0x1021BB8A
		b		FDP_1c40_0x274
		dc.l	0x1022BB8A
		b		FDP_1c40_0x274
		dc.l	0x1023BB8A
		b		FDP_1c40_0x274
		dc.l	0x1024BB8A
		b		FDP_1c40_0x274
		dc.l	0x1025BB8A
		b		FDP_1c40_0x274
		dc.l	0x1026BB8A
		b		FDP_1c40_0x274
		dc.l	0x1027BB8A
		b		FDP_1c40_0x274
		dc.l	0x1028BB8A
		b		FDP_1c40_0x274
		dc.l	0x1029BB8A
		b		FDP_1c40_0x274
		dc.l	0x102ABB8A
		b		FDP_1c40_0x274
		dc.l	0x102BBB8A
		b		FDP_1c40_0x274
		dc.l	0x102CBB8A
		b		FDP_1c40_0x274
		dc.l	0x102DBB8A
		b		FDP_1c40_0x274
		dc.l	0x102EBB8A
		b		FDP_1c40_0x274
		dc.l	0x102FBB8A
		b		FDP_1c40_0x274
		dc.l	0x1030BB8A
		b		FDP_1c40_0x274
		dc.l	0x1031BB8A
		b		FDP_1c40_0x274
		dc.l	0x1032BB8A
		b		FDP_1c40_0x274
		dc.l	0x1033BB8A
		b		FDP_1c40_0x274
		dc.l	0x1034BB8A
		b		FDP_1c40_0x274
		dc.l	0x1035BB8A
		b		FDP_1c40_0x274
		dc.l	0x1036BB8A
		b		FDP_1c40_0x274
		dc.l	0x1037BB8A
		b		FDP_1c40_0x274
		dc.l	0x1038BB8A
		b		FDP_1c40_0x274
		dc.l	0x1039BB8A
		b		FDP_1c40_0x274
		dc.l	0x103ABB8A
		b		FDP_1c40_0x274
		dc.l	0x103BBB8A
		b		FDP_1c40_0x274
		dc.l	0x103CBB8A
		b		FDP_1c40_0x274
		dc.l	0x103DBB8A
		b		FDP_1c40_0x274
		dc.l	0x103EBB8A
		b		FDP_1c40_0x274
		dc.l	0x103FBB8A
		b		FDP_1c40_0x274

major_0x07980_0x100	;	OUTSIDE REFERER
		vsel	v23, v3, v31, v25
		lwz		r9,  0x064c(r1)
		llabel	r8, FDP_22c0
		add		r8, r8, r9
		srwi	r9, r18,  1
		add		r8, r8, r9
		mtlr	r8
		blr



		align	6

FDP_22c0
		dc.l	0x1020BBCA
		b		FDP_1c40_0x274
		dc.l	0x1021BBCA
		b		FDP_1c40_0x274
		dc.l	0x1022BBCA
		b		FDP_1c40_0x274
		dc.l	0x1023BBCA
		b		FDP_1c40_0x274
		dc.l	0x1024BBCA
		b		FDP_1c40_0x274
		dc.l	0x1025BBCA
		b		FDP_1c40_0x274
		dc.l	0x1026BBCA
		b		FDP_1c40_0x274
		dc.l	0x1027BBCA
		b		FDP_1c40_0x274
		dc.l	0x1028BBCA
		b		FDP_1c40_0x274
		dc.l	0x1029BBCA
		b		FDP_1c40_0x274
		dc.l	0x102ABBCA
		b		FDP_1c40_0x274
		dc.l	0x102BBBCA
		b		FDP_1c40_0x274
		dc.l	0x102CBBCA
		b		FDP_1c40_0x274
		dc.l	0x102DBBCA
		b		FDP_1c40_0x274
		dc.l	0x102EBBCA
		b		FDP_1c40_0x274
		dc.l	0x102FBBCA
		b		FDP_1c40_0x274
		dc.l	0x1030BBCA
		b		FDP_1c40_0x274
		dc.l	0x1031BBCA
		b		FDP_1c40_0x274
		dc.l	0x1032BBCA
		b		FDP_1c40_0x274
		dc.l	0x1033BBCA
		b		FDP_1c40_0x274
		dc.l	0x1034BBCA
		b		FDP_1c40_0x274
		dc.l	0x1035BBCA
		b		FDP_1c40_0x274
		dc.l	0x1036BBCA
		b		FDP_1c40_0x274
		dc.l	0x1037BBCA
		b		FDP_1c40_0x274
		dc.l	0x1038BBCA
		b		FDP_1c40_0x274
		dc.l	0x1039BBCA
		b		FDP_1c40_0x274
		dc.l	0x103ABBCA
		b		FDP_1c40_0x274
		dc.l	0x103BBBCA
		b		FDP_1c40_0x274
		dc.l	0x103CBBCA
		b		FDP_1c40_0x274
		dc.l	0x103DBBCA
		b		FDP_1c40_0x274
		dc.l	0x103EBBCA
		b		FDP_1c40_0x274
		dc.l	0x103FBBCA
		b		FDP_1c40_0x274

major_0x07ac0_0x100	;	OUTSIDE REFERER
		bl		major_0x07d80_0x20
		vspltisw	v19,  0x01
		vadduwm	v22, v22, v19
		vspltisw	v23, -0x07
		vsrw	v21, v23, v23
		vsubuwm	v23, v21, v22
		vspltisw	v21, -0x09
		vslw	v23, v23, v21
		vrsqrtefp	v19, v23
		vslw	v20, v3, v22
		vor		v23, v29, v27
		vsel	v23, v31, v23, v24
		vsel	v21, v3, v23, v25
		vandc	v25, v25, v24
		vrsqrtefp	v20, v20
		vrsqrtefp	v21, v21
		vmaddfp	v1, v20, v19, v27
		vsel	v1, v21, v1, v25
		b		FDP_1c40_0x274

major_0x07ac0_0x14c	;	OUTSIDE REFERER
		bl		major_0x07d80_0x20
		vspltisw	v19,  0x01
		vadduwm	v22, v22, v19
		vslw	v20, v3, v22
		vsel	v20, v31, v20, v25
		vrefp	v20, v20
		vspltisw	v21, -0x09
		vandc	v23, v20, v27
		vsrw	v23, v23, v21
		mfvscr	v29
		vsrw	v19, v30, v19
		vsrw	v19, v19, v21
		vaddubs	v23, v22, v23
		mtvscr	v29
		vcmpequw	v22, v23, v19
		vslw	v23, v23, v21
		vsel	v23, v20, v23, v26
		vand	v22, v22, v28
		vsel	v23, v23, v31, v22
		vsel	v20, v31, v27, v24
		vsel	v1, v23, v30, v20
		vspltisw	v19,  0x01
		vslw	v22, v3, v19
		vspltisw	v23, -0x04
		vsraw	v22, v22, v21
		vsraw	v22, v22, v19
		vcmpgtuw	v23, v22, v23
		vcmpequw	v19, v22, v30
		vandc	v23, v23, v19
		vspltisw	v19,  0x02
		vsubuwm	v22, v22, v19
		vslw	v22, v22, v21
		vsel	v22, v3, v22, v26
		vsel	v22, v31, v22, v23
		vrefp	v22, v22
		vspltisw	v19,  0x01
		vandc	v22, v22, v27
		vslw	v29, v19, v21
		vor		v28, v28, v29
		vcmpgtuw	v28, v22, v28
		vsrw	v29, v29, v19
		vsel	v22, v22, v31, v26
		vsrw	v22, v22, v19
		vor		v22, v22, v29
		vsel	v19, v19, v31, v28
		vsrw	v22, v22, v19
		vor		v22, v22, v20
		vsel	v1, v1, v22, v23
		vor		v25, v25, v23
		vsel	v23, v3, v31, v25
		vrefp	v23, v23
		vsel	v1, v23, v1, v25
		b		FDP_1c40_0x274

major_0x07ac0_0x220	;	OUTSIDE REFERER
		bl		major_0x07d80_0x20
		vspltisw	v19,  0x01
		vadduwm	v22, v22, v19
		vslw	v20, v3, v22
		vsel	v23, v3, v20, v25
		vlogefp	v23, v23
		vsubsws	v22, v31, v22
		vcfsx	v22, v22,  0x00
		vaddfp	v1, v22, v23
		vsel	v1, v23, v1, v25
		b		FDP_1c40_0x274

major_0x07ac0_0x24c	;	OUTSIDE REFERER
		lwz		r9,  0x064c(r1)
		llabel	r8, FDP_2590
		add		r8, r8, r9
		lvx		v23, 0, r8
		vspltw	v21, v23,  0x03
		vspltw	v20, v23,  0x00
		vcmpgefp	v21, v3, v21
		vcmpgtfp	v20, v3, v20
		vspltw	v19, v23,  0x02
		vandc	v22, v21, v20
		vsel	v29, v31, v3, v22
		vaddfp	v29, v29, v19
		vsel	v19, v3, v29, v22
		vexptefp	v1, v19
		vspltisw	v25, -0x09
		vspltw	v23, v23,  0x01
		vsrw	v19, v1, v25
		vspltisw	v29,  0x01
		vsubuwm	v19, v23, v19
		vslw	v26, v29, v25
		vsel	v28, v31, v1, v28
		vor		v28, v28, v26
		vsrw	v28, v28, v19
		vsel	v1, v1, v28, v22
		b		FDP_1c40_0x274



		align	5

FDP_2580
		dc.l	0x17030202
		dc.l	0x01010101
		dc.l	0x00000000
		dc.l	0x00000000

FDP_2590
		dc.l	0xc2fc0004
		dc.l	0x00000041
		dc.l	0x42800000
		dc.l	0xc3150001

major_0x07d80_0x20	;	OUTSIDE REFERER
		vspltisw	v23, 9
		vslw		v19, v3, v23
		lwz			r9,  0x064c(r1)
		llabel		r8, FDP_2580
		add			r8, r8, r9
		lvx			v23, 0, r8
		vperm		v22, v23, v23, v19
		vspltisw	v21, 4
		vsrw		v21, v19, v21
		vperm		v21, v23, v23, v21
		li			r8, 0
		lvsl		v20, r8, r8
		vspltisw	v23, 3
		vslw		v20, v20, v23
		vspltisb	v23, 4
		vaddubm		v19, v20, v23
		vspltw		v20, v20, 0
		vspltw		v19, v19, 0
		vaddubm		v21, v21, v20
		vaddubm		v22, v22, v19
		vminub		v22, v22, v21
		vsldoi		v21, v22, v22, 2
		vminub		v22, v22, v21
		vsldoi		v21, v22, v22,1
		vminub		v22, v22, v21
		vspltisw	v21, -8
		vsrw		v22, v22, v21
		blr



;	No clue what this does

		align	5

FDP_2620
		dc.l	0x7C00B8CE
		b		FDP_011C
		dc.l	0x7C20B8CE
		b		FDP_011C
		dc.l	0x7C40B8CE
		b		FDP_011C
		dc.l	0x7C60B8CE
		b		FDP_011C
		dc.l	0x7C80B8CE
		b		FDP_011C
		dc.l	0x7CA0B8CE
		b		FDP_011C
		dc.l	0x7CC0B8CE
		b		FDP_011C
		dc.l	0x7CE0B8CE
		b		FDP_011C
		dc.l	0x7D00B8CE
		b		FDP_011C
		dc.l	0x7D20B8CE
		b		FDP_011C
		dc.l	0x7D40B8CE
		b		FDP_011C
		dc.l	0x7D60B8CE
		b		FDP_011C
		dc.l	0x7D80B8CE
		b		FDP_011C
		dc.l	0x7DA0B8CE
		b		FDP_011C
		dc.l	0x7DC0B8CE
		b		FDP_011C
		dc.l	0x7DE0B8CE
		b		FDP_011C
		dc.l	0x7E00B8CE
		b		FDP_011C
		dc.l	0x7E20B8CE
		b		FDP_011C
		dc.l	0x7E40B8CE
		b		FDP_011C
		dc.l	0x7E60B8CE
		b		FDP_011C
		dc.l	0x7E80B8CE
		b		FDP_011C
		dc.l	0x7EA0B8CE
		b		FDP_011C
		dc.l	0x7EC0B8CE
		b		FDP_011C
		dc.l	0x7EE0B8CE
		b		FDP_011C
		dc.l	0x7F00B8CE
		b		FDP_011C
		dc.l	0x7F20B8CE
		b		FDP_011C
		dc.l	0x7F40B8CE
		b		FDP_011C
		dc.l	0x7F60B8CE
		b		FDP_011C
		dc.l	0x7F80B8CE
		b		FDP_011C
		dc.l	0x7FA0B8CE
		b		FDP_011C
		dc.l	0x7FC0B8CE
		b		FDP_011C
		dc.l	0x7FE0B8CE
		b		FDP_011C
		dc.l	0x7C00B80E
		b		FDP_0DA0
		dc.l	0x7C20B80E
		b		FDP_0DA0
		dc.l	0x7C40B80E
		b		FDP_0DA0
		dc.l	0x7C60B80E
		b		FDP_0DA0
		dc.l	0x7C80B80E
		b		FDP_0DA0
		dc.l	0x7CA0B80E
		b		FDP_0DA0
		dc.l	0x7CC0B80E
		b		FDP_0DA0
		dc.l	0x7CE0B80E
		b		FDP_0DA0
		dc.l	0x7D00B80E
		b		FDP_0DA0
		dc.l	0x7D20B80E
		b		FDP_0DA0
		dc.l	0x7D40B80E
		b		FDP_0DA0
		dc.l	0x7D60B80E
		b		FDP_0DA0
		dc.l	0x7D80B80E
		b		FDP_0DA0
		dc.l	0x7DA0B80E
		b		FDP_0DA0
		dc.l	0x7DC0B80E
		b		FDP_0DA0
		dc.l	0x7DE0B80E
		b		FDP_0DA0
		dc.l	0x7E00B80E
		b		FDP_0DA0
		dc.l	0x7E20B80E
		b		FDP_0DA0
		dc.l	0x7E40B80E
		b		FDP_0DA0
		dc.l	0x7E60B80E
		b		FDP_0DA0
		dc.l	0x7E80B80E
		b		FDP_0DA0
		dc.l	0x7EA0B80E
		b		FDP_0DA0
		dc.l	0x7EC0B80E
		b		FDP_0DA0
		dc.l	0x7EE0B80E
		b		FDP_0DA0
		dc.l	0x7F00B80E
		b		FDP_0DA0
		dc.l	0x7F20B80E
		b		FDP_0DA0
		dc.l	0x7F40B80E
		b		FDP_0DA0
		dc.l	0x7F60B80E
		b		FDP_0DA0
		dc.l	0x7F80B80E
		b		FDP_0DA0
		dc.l	0x7FA0B80E
		b		FDP_0DA0
		dc.l	0x7FC0B80E
		b		FDP_0DA0
		dc.l	0x7FE0B80E
		b		FDP_0DA0
		dc.l	0x7C00B84E
		b		FDP_0DA0
		dc.l	0x7C20B84E
		b		FDP_0DA0
		dc.l	0x7C40B84E
		b		FDP_0DA0
		dc.l	0x7C60B84E
		b		FDP_0DA0
		dc.l	0x7C80B84E
		b		FDP_0DA0
		dc.l	0x7CA0B84E
		b		FDP_0DA0
		dc.l	0x7CC0B84E
		b		FDP_0DA0
		dc.l	0x7CE0B84E
		b		FDP_0DA0
		dc.l	0x7D00B84E
		b		FDP_0DA0
		dc.l	0x7D20B84E
		b		FDP_0DA0
		dc.l	0x7D40B84E
		b		FDP_0DA0
		dc.l	0x7D60B84E
		b		FDP_0DA0
		dc.l	0x7D80B84E
		b		FDP_0DA0
		dc.l	0x7DA0B84E
		b		FDP_0DA0
		dc.l	0x7DC0B84E
		b		FDP_0DA0
		dc.l	0x7DE0B84E
		b		FDP_0DA0
		dc.l	0x7E00B84E
		b		FDP_0DA0
		dc.l	0x7E20B84E
		b		FDP_0DA0
		dc.l	0x7E40B84E
		b		FDP_0DA0
		dc.l	0x7E60B84E
		b		FDP_0DA0
		dc.l	0x7E80B84E
		b		FDP_0DA0
		dc.l	0x7EA0B84E
		b		FDP_0DA0
		dc.l	0x7EC0B84E
		b		FDP_0DA0
		dc.l	0x7EE0B84E
		b		FDP_0DA0
		dc.l	0x7F00B84E
		b		FDP_0DA0
		dc.l	0x7F20B84E
		b		FDP_0DA0
		dc.l	0x7F40B84E
		b		FDP_0DA0
		dc.l	0x7F60B84E
		b		FDP_0DA0
		dc.l	0x7F80B84E
		b		FDP_0DA0
		dc.l	0x7FA0B84E
		b		FDP_0DA0
		dc.l	0x7FC0B84E
		b		FDP_0DA0
		dc.l	0x7FE0B84E
		b		FDP_0DA0
		dc.l	0x7C00B88E
		b		FDP_0DA0
		dc.l	0x7C20B88E
		b		FDP_0DA0
		dc.l	0x7C40B88E
		b		FDP_0DA0
		dc.l	0x7C60B88E
		b		FDP_0DA0
		dc.l	0x7C80B88E
		b		FDP_0DA0
		dc.l	0x7CA0B88E
		b		FDP_0DA0
		dc.l	0x7CC0B88E
		b		FDP_0DA0
		dc.l	0x7CE0B88E
		b		FDP_0DA0
		dc.l	0x7D00B88E
		b		FDP_0DA0
		dc.l	0x7D20B88E
		b		FDP_0DA0
		dc.l	0x7D40B88E
		b		FDP_0DA0
		dc.l	0x7D60B88E
		b		FDP_0DA0
		dc.l	0x7D80B88E
		b		FDP_0DA0
		dc.l	0x7DA0B88E
		b		FDP_0DA0
		dc.l	0x7DC0B88E
		b		FDP_0DA0
		dc.l	0x7DE0B88E
		b		FDP_0DA0
		dc.l	0x7E00B88E
		b		FDP_0DA0
		dc.l	0x7E20B88E
		b		FDP_0DA0
		dc.l	0x7E40B88E
		b		FDP_0DA0
		dc.l	0x7E60B88E
		b		FDP_0DA0
		dc.l	0x7E80B88E
		b		FDP_0DA0
		dc.l	0x7EA0B88E
		b		FDP_0DA0
		dc.l	0x7EC0B88E
		b		FDP_0DA0
		dc.l	0x7EE0B88E
		b		FDP_0DA0
		dc.l	0x7F00B88E
		b		FDP_0DA0
		dc.l	0x7F20B88E
		b		FDP_0DA0
		dc.l	0x7F40B88E
		b		FDP_0DA0
		dc.l	0x7F60B88E
		b		FDP_0DA0
		dc.l	0x7F80B88E
		b		FDP_0DA0
		dc.l	0x7FA0B88E
		b		FDP_0DA0
		dc.l	0x7FC0B88E
		b		FDP_0DA0
		dc.l	0x7FE0B88E
		b		FDP_0DA0
		dc.l	0x7C00B9CE
		b		FDP_011C
		dc.l	0x7C20B9CE
		b		FDP_011C
		dc.l	0x7C40B9CE
		b		FDP_011C
		dc.l	0x7C60B9CE
		b		FDP_011C
		dc.l	0x7C80B9CE
		b		FDP_011C
		dc.l	0x7CA0B9CE
		b		FDP_011C
		dc.l	0x7CC0B9CE
		b		FDP_011C
		dc.l	0x7CE0B9CE
		b		FDP_011C
		dc.l	0x7D00B9CE
		b		FDP_011C
		dc.l	0x7D20B9CE
		b		FDP_011C
		dc.l	0x7D40B9CE
		b		FDP_011C
		dc.l	0x7D60B9CE
		b		FDP_011C
		dc.l	0x7D80B9CE
		b		FDP_011C
		dc.l	0x7DA0B9CE
		b		FDP_011C
		dc.l	0x7DC0B9CE
		b		FDP_011C
		dc.l	0x7DE0B9CE
		b		FDP_011C
		dc.l	0x7E00B9CE
		b		FDP_011C
		dc.l	0x7E20B9CE
		b		FDP_011C
		dc.l	0x7E40B9CE
		b		FDP_011C
		dc.l	0x7E60B9CE
		b		FDP_011C
		dc.l	0x7E80B9CE
		b		FDP_011C
		dc.l	0x7EA0B9CE
		b		FDP_011C
		dc.l	0x7EC0B9CE
		b		FDP_011C
		dc.l	0x7EE0B9CE
		b		FDP_011C
		dc.l	0x7F00B9CE
		b		FDP_011C
		dc.l	0x7F20B9CE
		b		FDP_011C
		dc.l	0x7F40B9CE
		b		FDP_011C
		dc.l	0x7F60B9CE
		b		FDP_011C
		dc.l	0x7F80B9CE
		b		FDP_011C
		dc.l	0x7FA0B9CE
		b		FDP_011C
		dc.l	0x7FC0B9CE
		b		FDP_011C
		dc.l	0x7FE0B9CE
		b		FDP_011C
		dc.l	0x7C00B90E
		b		FDP_104C
		dc.l	0x7C20B90E
		b		FDP_104C
		dc.l	0x7C40B90E
		b		FDP_104C
		dc.l	0x7C60B90E
		b		FDP_104C
		dc.l	0x7C80B90E
		b		FDP_104C
		dc.l	0x7CA0B90E
		b		FDP_104C
		dc.l	0x7CC0B90E
		b		FDP_104C
		dc.l	0x7CE0B90E
		b		FDP_104C
		dc.l	0x7D00B90E
		b		FDP_104C
		dc.l	0x7D20B90E
		b		FDP_104C
		dc.l	0x7D40B90E
		b		FDP_104C
		dc.l	0x7D60B90E
		b		FDP_104C
		dc.l	0x7D80B90E
		b		FDP_104C
		dc.l	0x7DA0B90E
		b		FDP_104C
		dc.l	0x7DC0B90E
		b		FDP_104C
		dc.l	0x7DE0B90E
		b		FDP_104C
		dc.l	0x7E00B90E
		b		FDP_104C
		dc.l	0x7E20B90E
		b		FDP_104C
		dc.l	0x7E40B90E
		b		FDP_104C
		dc.l	0x7E60B90E
		b		FDP_104C
		dc.l	0x7E80B90E
		b		FDP_104C
		dc.l	0x7EA0B90E
		b		FDP_104C
		dc.l	0x7EC0B90E
		b		FDP_104C
		dc.l	0x7EE0B90E
		b		FDP_104C
		dc.l	0x7F00B90E
		b		FDP_104C
		dc.l	0x7F20B90E
		b		FDP_104C
		dc.l	0x7F40B90E
		b		FDP_104C
		dc.l	0x7F60B90E
		b		FDP_104C
		dc.l	0x7F80B90E
		b		FDP_104C
		dc.l	0x7FA0B90E
		b		FDP_104C
		dc.l	0x7FC0B90E
		b		FDP_104C
		dc.l	0x7FE0B90E
		b		FDP_104C
		dc.l	0x7C00B94E
		b		FDP_1058
		dc.l	0x7C20B94E
		b		FDP_1058
		dc.l	0x7C40B94E
		b		FDP_1058
		dc.l	0x7C60B94E
		b		FDP_1058
		dc.l	0x7C80B94E
		b		FDP_1058
		dc.l	0x7CA0B94E
		b		FDP_1058
		dc.l	0x7CC0B94E
		b		FDP_1058
		dc.l	0x7CE0B94E
		b		FDP_1058
		dc.l	0x7D00B94E
		b		FDP_1058
		dc.l	0x7D20B94E
		b		FDP_1058
		dc.l	0x7D40B94E
		b		FDP_1058
		dc.l	0x7D60B94E
		b		FDP_1058
		dc.l	0x7D80B94E
		b		FDP_1058
		dc.l	0x7DA0B94E
		b		FDP_1058
		dc.l	0x7DC0B94E
		b		FDP_1058
		dc.l	0x7DE0B94E
		b		FDP_1058
		dc.l	0x7E00B94E
		b		FDP_1058
		dc.l	0x7E20B94E
		b		FDP_1058
		dc.l	0x7E40B94E
		b		FDP_1058
		dc.l	0x7E60B94E
		b		FDP_1058
		dc.l	0x7E80B94E
		b		FDP_1058
		dc.l	0x7EA0B94E
		b		FDP_1058
		dc.l	0x7EC0B94E
		b		FDP_1058
		dc.l	0x7EE0B94E
		b		FDP_1058
		dc.l	0x7F00B94E
		b		FDP_1058
		dc.l	0x7F20B94E
		b		FDP_1058
		dc.l	0x7F40B94E
		b		FDP_1058
		dc.l	0x7F60B94E
		b		FDP_1058
		dc.l	0x7F80B94E
		b		FDP_1058
		dc.l	0x7FA0B94E
		b		FDP_1058
		dc.l	0x7FC0B94E
		b		FDP_1058
		dc.l	0x7FE0B94E
		b		FDP_1058
		dc.l	0x7C00B98E
		b		FDP_1064
		dc.l	0x7C20B98E
		b		FDP_1064
		dc.l	0x7C40B98E
		b		FDP_1064
		dc.l	0x7C60B98E
		b		FDP_1064
		dc.l	0x7C80B98E
		b		FDP_1064
		dc.l	0x7CA0B98E
		b		FDP_1064
		dc.l	0x7CC0B98E
		b		FDP_1064
		dc.l	0x7CE0B98E
		b		FDP_1064
		dc.l	0x7D00B98E
		b		FDP_1064
		dc.l	0x7D20B98E
		b		FDP_1064
		dc.l	0x7D40B98E
		b		FDP_1064
		dc.l	0x7D60B98E
		b		FDP_1064
		dc.l	0x7D80B98E
		b		FDP_1064
		dc.l	0x7DA0B98E
		b		FDP_1064
		dc.l	0x7DC0B98E
		b		FDP_1064
		dc.l	0x7DE0B98E
		b		FDP_1064
		dc.l	0x7E00B98E
		b		FDP_1064
		dc.l	0x7E20B98E
		b		FDP_1064
		dc.l	0x7E40B98E
		b		FDP_1064
		dc.l	0x7E60B98E
		b		FDP_1064
		dc.l	0x7E80B98E
		b		FDP_1064
		dc.l	0x7EA0B98E
		b		FDP_1064
		dc.l	0x7EC0B98E
		b		FDP_1064
		dc.l	0x7EE0B98E
		b		FDP_1064
		dc.l	0x7F00B98E
		b		FDP_1064
		dc.l	0x7F20B98E
		b		FDP_1064
		dc.l	0x7F40B98E
		b		FDP_1064
		dc.l	0x7F60B98E
		b		FDP_1064
		dc.l	0x7F80B98E
		b		FDP_1064
		dc.l	0x7FA0B98E
		b		FDP_1064
		dc.l	0x7FC0B98E
		b		FDP_1064
		dc.l	0x7FE0B98E
		b		FDP_1064
