fixme:gameux:GameExplorerImpl_VerifyAccess (0x12ee20, L"C:\\Program Files\\CCP\\EVE\\eve.exe", 0x32fd8c)
fixme:heap:HeapSetInformation 0x486000 0 0x33f2d8 4
r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2
r300: GART size: 509 MB, VRAM size: 256 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES
r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2
r300: GART size: 509 MB, VRAM size: 256 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[0], LINEAR
DCL OUT[0], COLOR
DCL SAMP[0]
  0: TEX OUT[0], IN[0], SAMP[0], 2D
  1: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[1], input[0], 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[1], input[0], 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[1], input[0], 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: src0.xyz = temp[0], src0.w = temp[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00078005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[0], LINEAR
DCL OUT[0], COLOR
  0: MOV OUT[0], IN[0]
  1: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00078005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[0], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL CONST[1..4]
DCL TEMP[0]
  0: TXP TEMP[0], IN[0].xyyw, SAMP[0], 2D
  1: MUL TEMP[0].xyz, TEMP[0], CONST[4]
  2: MOV TEMP[0].xyz, TEMP[0].xyzx
  3: MOV TEMP[0].w, CONST[4].wwww
  4: MOV OUT[0], TEMP[0]
  5: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV output[0], temp[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV output[0], temp[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV output[0], temp[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV output[0], temp[0];
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL temp[0].xyz, temp[0], const[4];
  2: MOV temp[0].xyz, temp[0].xyzx;
  3: MOV temp[0].w, const[4].wwww;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TXP temp[0].xyz, input[0].xy_w, 2D[0];
  1: MUL temp[0].xyz, temp[0].xyz_, const[4].xyz_;
  2: MOV temp[0].xyz, temp[0].xyz_;
  3: MOV temp[0].w, const[4].___w;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TXP temp[1].xyz, input[0].xy_w, 2D[0];
  1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_;
  2: MOV temp[0].xyz, temp[2].xyz_;
  3: MOV temp[0].w, const[4].___w;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TXP temp[1].xyz, input[0].xy_w, 2D[0];
  1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_;
  2: MOV temp[0].xyz, temp[2].xyz_;
  3: MOV temp[0].w, const[4].___w;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TXP temp[1].xyz, input[0].xy_w, 2D[0];
  1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_;
  2: MOV temp[0].xyz, temp[2].xyz_;
  3: MOV temp[0].w, const[4].___w;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TXP temp[1].xyz, input[0].xy_w, 2D[0];
  1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_;
  2: MOV temp[0].xyz, temp[2].xyz_;
  3: MOV temp[0].w, const[4].___w;
  4: MOV_SAT output[0], temp[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TXP temp[1].xyz, input[0].xy_w, 2D[0];
  1: src0.xyz = temp[1], src1.xyz = const[4]
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
  2: src0.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src0.111, src0.000
  3: src0.w = const[4]
     MAD temp[0].w, src0.w, src0.1, src0.0
  4: src0.xyz = temp[0], src0.w = temp[0]
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TXP temp[1].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = const[4], src1.xyz = const[4] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src0.1, src0.0
  3: src0.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src0.111, src0.000
  4: src0.xyz = temp[0], src0.w = temp[0]
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TXP temp[1].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = const[4], src1.xyz = const[4] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src0.1, src0.0
  3: src0.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src0.111, src0.000
  4: src0.xyz = temp[0], src0.w = temp[0]
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TXP temp[0].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = const[4], src1.xyz = const[4] SEM_WAIT
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src0.1, src0.0
  3: src0.xyz = temp[0]
     MAD temp[0].xyz, src0.xyz, src0.111, src0.000
  4: src0.xyz = temp[0], src0.w = temp[0]
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00003807:TEX TEX_WAIT    wmask: RGB omask: NONE
	1:TEX_INST:  0x02c00000: id: 0 op:PROJ, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

2	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

3	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[0], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL CONST[1..4]
DCL TEMP[0]
  0: TXP TEMP[0], IN[0].xyyw, SAMP[0], 2D
  1: MUL OUT[0], TEMP[0], CONST[4]
  2: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL output[0], temp[0], const[4];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL output[0], temp[0], const[4];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL output[0], temp[0], const[4];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL output[0], temp[0], const[4];
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL_SAT output[0], temp[0], const[4];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL_SAT output[0], temp[0], const[4];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL_SAT output[0], temp[0], const[4];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xyyw, 2D[0];
  1: MUL_SAT output[0], temp[0], const[4];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TXP temp[0], input[0].xy_w, 2D[0];
  1: MUL_SAT output[0], temp[0], const[4];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TXP temp[1], input[0].xy_w, 2D[0];
  1: MUL_SAT output[0], temp[1], const[4];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TXP temp[1], input[0].xy_w, 2D[0];
  1: MUL_SAT output[0], temp[1], const[4];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TXP temp[1], input[0].xy_w, 2D[0];
  1: MUL_SAT output[0], temp[1], const[4];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TXP temp[1], input[0].xy_w, 2D[0];
  1: MUL_SAT output[0], temp[1], const[4];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TXP temp[1], input[0].xy_w, 2D[0];
  1: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src1.w, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TXP temp[1], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src1.w, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TXP temp[1], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src1.w, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TXP temp[0], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src1.w, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02c00000: id: 0 op:PROJ, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

fixme:win:EnumDisplayDevicesW ((null),0,0x33808c,0x00000000), stub!
r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2
r300: GART size: 509 MB, VRAM size: 256 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[0], LINEAR
DCL OUT[0], COLOR
  0: MOV OUT[0], IN[0]
  1: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00078005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], COLOR, PERSPECTIVE
DCL OUT[0], COLOR
  0: MOV OUT[0], IN[0]
  1: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00078005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2
r300: GART size: 509 MB, VRAM size: 256 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES
r300: Initial fragment program
FRAG
DCL IN[0], COLOR, PERSPECTIVE
DCL OUT[0], COLOR
  0: MOV OUT[0], IN[0]
  1: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MOV output[0], input[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[0], src0.w = input[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00078005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[0], LINEAR
DCL OUT[0], COLOR
DCL SAMP[0]
  0: TEX OUT[0], IN[0], SAMP[0], 2D
  1: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX output[0], input[0], 2D[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[1], input[0], 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[1], input[0], 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[1], input[0], 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: MOV output[0], temp[1];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: src0.xyz = temp[0], src0.w = temp[0]
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD color[0].xyz, src0.xyz, src0.111, src0.000
     MAD color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00078005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

fixme:process:GetLogicalProcessorInformation ((nil),0x33a8ec): stub
fixme:wtsapi:WTSRegisterSessionNotification Stub 0x30028 0x00000000
fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 32 channels, pretending there's only 2 channels
fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels
fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels
fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 32 channels, pretending there's only 2 channels
fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels
fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels
fixme:imm:ImmDisableTextFrameService Stub
fixme:imm:ImmReleaseContext (0x30028, 0x13e370): stub
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL IN[2], GENERIC[14], PERSPECTIVE
DCL IN[3], GENERIC[15], PERSPECTIVE
DCL IN[4], GENERIC[16], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL CONST[3..9]
DCL TEMP[0..5]
IMM FLT32 {    0.0000,     0.0000,     0.0000,     0.0000}
  0: SLT TEMP[0], IN[4].xyyy, IMM[0].xxxx
  1: DP4_SAT TEMP[1].x, TEMP[0], TEMP[0]
  2: IF TEMP[1].xxxx :0
  3:   KILP
  4: ENDIF
  5: SLT TEMP[1], IN[4].zwww, IMM[0].xxxx
  6: DP4_SAT TEMP[1].x, TEMP[1], TEMP[1]
  7: IF TEMP[1].xxxx :0
  8:   KILP
  9: ENDIF
 10: ADD TEMP[0].x, CONST[0].xxxx, IN[3].wwww
 11: FRC TEMP[1].x, TEMP[0].xxxx
 12: MOV TEMP[0].y, TEMP[1].xxxx
 13: ADD TEMP[0].x, -TEMP[1].xxxx, TEMP[0].xxxx
 14: SEQ TEMP[1].x, TEMP[0].xxxx, CONST[3].xxxx
 15: IF TEMP[1].xxxx :0
 16:   MUL TEMP[1].xyz, IN[0].wwww, IN[0].xyzz
 17:   MOV TEMP[1].w, IN[3].xxxx
 18:   MOV TEMP[0].y, CONST[0].yyyy
 19: ELSE :0
 20:   SEQ TEMP[2].x, TEMP[0].xxxx, CONST[4].xxxx
 21:   IF TEMP[2].xxxx :0
 22:     MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx
 23:     TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D
 24:     MOV TEMP[2], TEMP[3]
 25:     MUL TEMP[4], TEMP[3], IN[0]
 26:     MUL TEMP[1].xyz, TEMP[4].wwww, TEMP[4].xyzz
 27:     MUL TEMP[3].x, TEMP[3].wwww, IN[3].xxxx
 28:     MOV TEMP[1].w, TEMP[3].xxxx
 29:     MOV TEMP[0].y, CONST[0].yyyy
 30:   ELSE :0
 31:     SEQ TEMP[3].x, TEMP[0].xxxx, CONST[5].xxxx
 32:     IF TEMP[3].xxxx :0
 33:       MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx
 34:       TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D
 35:       MOV TEMP[2].w, TEMP[3]
 36:       ADD TEMP[2].xyz, TEMP[3].xyzz, CONST[0].wwww
 37:       ADD TEMP[2].xyz, TEMP[2].xyzz, TEMP[2].xyzz
 38:       DP3 TEMP[5].x, TEMP[2].xyzz, CONST[9].xyzz
 39:       MUL TEMP[1].xyz, TEMP[3].wwww, TEMP[5].xxxx
 40:       MUL TEMP[3].x, TEMP[3].wwww, IN[3].xxxx
 41:       MOV TEMP[0].z, TEMP[3].xxxx
 42:       MUL TEMP[3].x, TEMP[3].xxxx, IN[0].wwww
 43:       MOV TEMP[1].w, TEMP[3].xxxx
 44:       MOV TEMP[0].y, CONST[0].yyyy
 45:     ELSE :0
 46:       SEQ TEMP[3].x, TEMP[0].xxxx, CONST[7].xxxx
 47:       IF TEMP[3].xxxx :0
 48:         MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx
 49:         MUL TEMP[4].xyw, CONST[0].yyzz, IN[2].xyxx
 50:         TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D
 51:         TXL TEMP[5], TEMP[4].xyyw, SAMP[0], 2D
 52:         MUL TEMP[2], TEMP[3], TEMP[5]
 53:         MUL TEMP[4], TEMP[2], IN[0]
 54:         MUL TEMP[1].xyz, TEMP[4].wwww, TEMP[4].xyzz
 55:         MUL TEMP[3].x, TEMP[2].wwww, IN[3].xxxx
 56:         MOV TEMP[1].w, TEMP[3].xxxx
 57:         MOV TEMP[0].y, CONST[0].yyyy
 58:       ELSE :0
 59:         SEQ TEMP[3].x, TEMP[0].xxxx, CONST[8].xxxx
 60:         IF TEMP[3].xxxx :0
 61:           MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx
 62:           TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D
 63:           MOV TEMP[2].w, TEMP[3]
 64:           MUL TEMP[4].xyw, CONST[0].yyzz, IN[2].xyxx
 65:           TXL TEMP[4], TEMP[4].xyyw, SAMP[0], 2D
 66:           MUL TEMP[2].xyz, TEMP[3].xyzz, IN[0].xyzz
 67:           MUL TEMP[3].x, TEMP[4].wwww, IN[3].xxxx
 68:           MOV TEMP[1].w, TEMP[3].xxxx
 69:           MUL TEMP[3].x, TEMP[4].wwww, IN[0].wwww
 70:           MOV TEMP[0].z, TEMP[3].xxxx
 71:           MUL TEMP[1].xyz, TEMP[3].xxxx, TEMP[2].xyzz
 72:           MOV TEMP[0].y, CONST[0].yyyy
 73:         ELSE :0
 74:           ADD TEMP[3].x, TEMP[0].xxxx, -CONST[6].xxxx
 75:           MOV TEMP[0].z, TEMP[3].xxxx
 76:           ABS TEMP[3].x, TEMP[3].xxxx
 77:           SGE TEMP[3].x, -TEMP[3].xxxx, IMM[0].xxxx
 78:           IF TEMP[3].xxxx :0
 79:             MOV TEMP[3].x, CONST[0].yyyy
 80:           ELSE :0
 81:             MOV TEMP[3].x, CONST[0].zzzz
 82:           ENDIF
 83:           MOV TEMP[0].y, TEMP[3].xxxx
 84:           SEQ TEMP[3].x, TEMP[0].xxxx, CONST[6].xxxx
 85:           IF TEMP[3].xxxx :0
 86:             MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx
 87:             TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D
 88:             MAD TEMP[2], TEMP[3].xyzx, CONST[0].yyyz, CONST[0].zzzy
 89:             MUL TEMP[2], TEMP[2], IN[0]
 90:             MUL TEMP[1].xyz, TEMP[2].wwww, TEMP[2].xyzz
 91:             MOV TEMP[1].w, IN[0].wwww
 92:           ELSE :0
 93:             MOV TEMP[1], CONST[0].zzzz
 94:           ENDIF
 95:         ENDIF
 96:       ENDIF
 97:     ENDIF
 98:   ENDIF
 99: ENDIF
100: SGE TEMP[0].x, -TEMP[0].yyyy, IMM[0].xxxx
101: IF TEMP[0].xxxx :0
102:   MOV TEMP[0], CONST[0].zzzz
103: ELSE :0
104:   MOV TEMP[0], TEMP[1]
105: ENDIF
106: MOV OUT[0], TEMP[0]
107: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: IF temp[1].xxxx;
  3:   KILP;
  4: ENDIF;
  5: SLT temp[1], input[4].zwww, temp[0].0000;
  6: DP4_SAT temp[1].x, temp[1], temp[1];
  7: IF temp[1].xxxx;
  8:   KILP;
  9: ENDIF;
 10: ADD temp[0].x, const[0].xxxx, input[3].wwww;
 11: FRC temp[1].x, temp[0].xxxx;
 12: MOV temp[0].y, temp[1].xxxx;
 13: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 14: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx;
 15: IF temp[1].xxxx;
 16:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 17:   MOV temp[1].w, input[3].xxxx;
 18:   MOV temp[0].y, const[0].yyyy;
 19: ELSE;
 20:   SEQ temp[2].x, temp[0].xxxx, const[4].xxxx;
 21:   IF temp[2].xxxx;
 22:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 23:     TXL temp[3], temp[2].xyyw, 2D[1];
 24:     MOV temp[2], temp[3];
 25:     MUL temp[4], temp[3], input[0];
 26:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 27:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 28:     MOV temp[1].w, temp[3].xxxx;
 29:     MOV temp[0].y, const[0].yyyy;
 30:   ELSE;
 31:     SEQ temp[3].x, temp[0].xxxx, const[5].xxxx;
 32:     IF temp[3].xxxx;
 33:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 34:       TXL temp[3], temp[2].xyyw, 2D[1];
 35:       MOV temp[2].w, temp[3];
 36:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 37:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 38:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 39:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 40:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 41:       MOV temp[0].z, temp[3].xxxx;
 42:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 43:       MOV temp[1].w, temp[3].xxxx;
 44:       MOV temp[0].y, const[0].yyyy;
 45:     ELSE;
 46:       SEQ temp[3].x, temp[0].xxxx, const[7].xxxx;
 47:       IF temp[3].xxxx;
 48:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 49:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 50:         TXL temp[3], temp[2].xyyw, 2D[1];
 51:         TXL temp[5], temp[4].xyyw, 2D[0];
 52:         MUL temp[2], temp[3], temp[5];
 53:         MUL temp[4], temp[2], input[0];
 54:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 55:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 56:         MOV temp[1].w, temp[3].xxxx;
 57:         MOV temp[0].y, const[0].yyyy;
 58:       ELSE;
 59:         SEQ temp[3].x, temp[0].xxxx, const[8].xxxx;
 60:         IF temp[3].xxxx;
 61:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 62:           TXL temp[3], temp[2].xyyw, 2D[1];
 63:           MOV temp[2].w, temp[3];
 64:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 65:           TXL temp[4], temp[4].xyyw, 2D[0];
 66:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 67:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 68:           MOV temp[1].w, temp[3].xxxx;
 69:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 70:           MOV temp[0].z, temp[3].xxxx;
 71:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 72:           MOV temp[0].y, const[0].yyyy;
 73:         ELSE;
 74:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 75:           MOV temp[0].z, temp[3].xxxx;
 76:           ABS temp[3].x, temp[3].xxxx;
 77:           SGE temp[3].x, -temp[3].xxxx, temp[0].0000;
 78:           IF temp[3].xxxx;
 79:             MOV temp[3].x, const[0].yyyy;
 80:           ELSE;
 81:             MOV temp[3].x, const[0].zzzz;
 82:           ENDIF;
 83:           MOV temp[0].y, temp[3].xxxx;
 84:           SEQ temp[3].x, temp[0].xxxx, const[6].xxxx;
 85:           IF temp[3].xxxx;
 86:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 87:             TXL temp[3], temp[2].xyyw, 2D[1];
 88:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 89:             MUL temp[2], temp[2], input[0];
 90:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 91:             MOV temp[1].w, input[0].wwww;
 92:           ELSE;
 93:             MOV temp[1], const[0].zzzz;
 94:           ENDIF;
 95:         ENDIF;
 96:       ENDIF;
 97:     ENDIF;
 98:   ENDIF;
 99: ENDIF;
100: SGE temp[0].x, -temp[0].yyyy, temp[0].0000;
101: IF temp[0].xxxx;
102:   MOV temp[0], const[0].zzzz;
103: ELSE;
104:   MOV temp[0], temp[1];
105: ENDIF;
106: MOV output[0], temp[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: IF temp[1].xxxx;
  3:   KILP;
  4: ENDIF;
  5: SLT temp[1], input[4].zwww, temp[0].0000;
  6: DP4_SAT temp[1].x, temp[1], temp[1];
  7: IF temp[1].xxxx;
  8:   KILP;
  9: ENDIF;
 10: ADD temp[0].x, const[0].xxxx, input[3].wwww;
 11: FRC temp[1].x, temp[0].xxxx;
 12: MOV temp[0].y, temp[1].xxxx;
 13: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 14: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx;
 15: IF temp[1].xxxx;
 16:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 17:   MOV temp[1].w, input[3].xxxx;
 18:   MOV temp[0].y, const[0].yyyy;
 19: ELSE;
 20:   SEQ temp[2].x, temp[0].xxxx, const[4].xxxx;
 21:   IF temp[2].xxxx;
 22:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 23:     TXL temp[3], temp[2].xyyw, 2D[1];
 24:     MOV temp[2], temp[3];
 25:     MUL temp[4], temp[3], input[0];
 26:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 27:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 28:     MOV temp[1].w, temp[3].xxxx;
 29:     MOV temp[0].y, const[0].yyyy;
 30:   ELSE;
 31:     SEQ temp[3].x, temp[0].xxxx, const[5].xxxx;
 32:     IF temp[3].xxxx;
 33:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 34:       TXL temp[3], temp[2].xyyw, 2D[1];
 35:       MOV temp[2].w, temp[3];
 36:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 37:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 38:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 39:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 40:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 41:       MOV temp[0].z, temp[3].xxxx;
 42:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 43:       MOV temp[1].w, temp[3].xxxx;
 44:       MOV temp[0].y, const[0].yyyy;
 45:     ELSE;
 46:       SEQ temp[3].x, temp[0].xxxx, const[7].xxxx;
 47:       IF temp[3].xxxx;
 48:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 49:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 50:         TXL temp[3], temp[2].xyyw, 2D[1];
 51:         TXL temp[5], temp[4].xyyw, 2D[0];
 52:         MUL temp[2], temp[3], temp[5];
 53:         MUL temp[4], temp[2], input[0];
 54:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 55:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 56:         MOV temp[1].w, temp[3].xxxx;
 57:         MOV temp[0].y, const[0].yyyy;
 58:       ELSE;
 59:         SEQ temp[3].x, temp[0].xxxx, const[8].xxxx;
 60:         IF temp[3].xxxx;
 61:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 62:           TXL temp[3], temp[2].xyyw, 2D[1];
 63:           MOV temp[2].w, temp[3];
 64:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 65:           TXL temp[4], temp[4].xyyw, 2D[0];
 66:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 67:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 68:           MOV temp[1].w, temp[3].xxxx;
 69:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 70:           MOV temp[0].z, temp[3].xxxx;
 71:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 72:           MOV temp[0].y, const[0].yyyy;
 73:         ELSE;
 74:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 75:           MOV temp[0].z, temp[3].xxxx;
 76:           ABS temp[3].x, temp[3].xxxx;
 77:           SGE temp[3].x, -temp[3].xxxx, temp[0].0000;
 78:           IF temp[3].xxxx;
 79:             MOV temp[3].x, const[0].yyyy;
 80:           ELSE;
 81:             MOV temp[3].x, const[0].zzzz;
 82:           ENDIF;
 83:           MOV temp[0].y, temp[3].xxxx;
 84:           SEQ temp[3].x, temp[0].xxxx, const[6].xxxx;
 85:           IF temp[3].xxxx;
 86:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 87:             TXL temp[3], temp[2].xyyw, 2D[1];
 88:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 89:             MUL temp[2], temp[2], input[0];
 90:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 91:             MOV temp[1].w, input[0].wwww;
 92:           ELSE;
 93:             MOV temp[1], const[0].zzzz;
 94:           ENDIF;
 95:         ENDIF;
 96:       ENDIF;
 97:     ENDIF;
 98:   ENDIF;
 99: ENDIF;
100: SGE temp[0].x, -temp[0].yyyy, temp[0].0000;
101: IF temp[0].xxxx;
102:   MOV temp[0], const[0].zzzz;
103: ELSE;
104:   MOV temp[0], temp[1];
105: ENDIF;
106: MOV output[0], temp[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: KIL -|temp[1].xxxx|;
  3: SLT temp[1], input[4].zwww, temp[0].0000;
  4: DP4_SAT temp[1].x, temp[1], temp[1];
  5: KIL -|temp[1].xxxx|;
  6: ADD temp[0].x, const[0].xxxx, input[3].wwww;
  7: FRC temp[1].x, temp[0].xxxx;
  8: MOV temp[0].y, temp[1].xxxx;
  9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx;
 11: IF temp[1].xxxx;
 12:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 13:   MOV temp[1].w, input[3].xxxx;
 14:   MOV temp[0].y, const[0].yyyy;
 15: ELSE;
 16:   SEQ temp[2].x, temp[0].xxxx, const[4].xxxx;
 17:   IF temp[2].xxxx;
 18:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 19:     TXL temp[3], temp[2].xyyw, 2D[1];
 20:     MOV temp[2], temp[3];
 21:     MUL temp[4], temp[3], input[0];
 22:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 23:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 24:     MOV temp[1].w, temp[3].xxxx;
 25:     MOV temp[0].y, const[0].yyyy;
 26:   ELSE;
 27:     SEQ temp[3].x, temp[0].xxxx, const[5].xxxx;
 28:     IF temp[3].xxxx;
 29:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 30:       TXL temp[3], temp[2].xyyw, 2D[1];
 31:       MOV temp[2].w, temp[3];
 32:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 33:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 34:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 35:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 36:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 37:       MOV temp[0].z, temp[3].xxxx;
 38:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 39:       MOV temp[1].w, temp[3].xxxx;
 40:       MOV temp[0].y, const[0].yyyy;
 41:     ELSE;
 42:       SEQ temp[3].x, temp[0].xxxx, const[7].xxxx;
 43:       IF temp[3].xxxx;
 44:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 45:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 46:         TXL temp[3], temp[2].xyyw, 2D[1];
 47:         TXL temp[5], temp[4].xyyw, 2D[0];
 48:         MUL temp[2], temp[3], temp[5];
 49:         MUL temp[4], temp[2], input[0];
 50:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 51:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 52:         MOV temp[1].w, temp[3].xxxx;
 53:         MOV temp[0].y, const[0].yyyy;
 54:       ELSE;
 55:         SEQ temp[3].x, temp[0].xxxx, const[8].xxxx;
 56:         IF temp[3].xxxx;
 57:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 58:           TXL temp[3], temp[2].xyyw, 2D[1];
 59:           MOV temp[2].w, temp[3];
 60:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 61:           TXL temp[4], temp[4].xyyw, 2D[0];
 62:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 63:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 64:           MOV temp[1].w, temp[3].xxxx;
 65:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 66:           MOV temp[0].z, temp[3].xxxx;
 67:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 68:           MOV temp[0].y, const[0].yyyy;
 69:         ELSE;
 70:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 71:           MOV temp[0].z, temp[3].xxxx;
 72:           ABS temp[3].x, temp[3].xxxx;
 73:           SGE temp[3].x, -temp[3].xxxx, temp[0].0000;
 74:           IF temp[3].xxxx;
 75:             MOV temp[3].x, const[0].yyyy;
 76:           ELSE;
 77:             MOV temp[3].x, const[0].zzzz;
 78:           ENDIF;
 79:           MOV temp[0].y, temp[3].xxxx;
 80:           SEQ temp[3].x, temp[0].xxxx, const[6].xxxx;
 81:           IF temp[3].xxxx;
 82:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 83:             TXL temp[3], temp[2].xyyw, 2D[1];
 84:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 85:             MUL temp[2], temp[2], input[0];
 86:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 87:             MOV temp[1].w, input[0].wwww;
 88:           ELSE;
 89:             MOV temp[1], const[0].zzzz;
 90:           ENDIF;
 91:         ENDIF;
 92:       ENDIF;
 93:     ENDIF;
 94:   ENDIF;
 95: ENDIF;
 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000;
 97: IF temp[0].xxxx;
 98:   MOV temp[0], const[0].zzzz;
 99: ELSE;
100:   MOV temp[0], temp[1];
101: ENDIF;
102: MOV output[0], temp[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: KIL -|temp[1].xxxx|;
  3: SLT temp[1], input[4].zwww, temp[0].0000;
  4: DP4_SAT temp[1].x, temp[1], temp[1];
  5: KIL -|temp[1].xxxx|;
  6: ADD temp[0].x, const[0].xxxx, input[3].wwww;
  7: FRC temp[1].x, temp[0].xxxx;
  8: MOV temp[0].y, temp[1].xxxx;
  9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx;
 11: IF temp[1].xxxx;
 12:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 13:   MOV temp[1].w, input[3].xxxx;
 14:   MOV temp[0].y, const[0].yyyy;
 15: ELSE;
 16:   SEQ temp[2].x, temp[0].xxxx, const[4].xxxx;
 17:   IF temp[2].xxxx;
 18:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 19:     TXL temp[3], temp[2].xyyw, 2D[1];
 20:     MOV temp[2], temp[3];
 21:     MUL temp[4], temp[3], input[0];
 22:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 23:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 24:     MOV temp[1].w, temp[3].xxxx;
 25:     MOV temp[0].y, const[0].yyyy;
 26:   ELSE;
 27:     SEQ temp[3].x, temp[0].xxxx, const[5].xxxx;
 28:     IF temp[3].xxxx;
 29:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 30:       TXL temp[3], temp[2].xyyw, 2D[1];
 31:       MOV temp[2].w, temp[3];
 32:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 33:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 34:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 35:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 36:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 37:       MOV temp[0].z, temp[3].xxxx;
 38:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 39:       MOV temp[1].w, temp[3].xxxx;
 40:       MOV temp[0].y, const[0].yyyy;
 41:     ELSE;
 42:       SEQ temp[3].x, temp[0].xxxx, const[7].xxxx;
 43:       IF temp[3].xxxx;
 44:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 45:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 46:         TXL temp[3], temp[2].xyyw, 2D[1];
 47:         TXL temp[5], temp[4].xyyw, 2D[0];
 48:         MUL temp[2], temp[3], temp[5];
 49:         MUL temp[4], temp[2], input[0];
 50:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 51:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 52:         MOV temp[1].w, temp[3].xxxx;
 53:         MOV temp[0].y, const[0].yyyy;
 54:       ELSE;
 55:         SEQ temp[3].x, temp[0].xxxx, const[8].xxxx;
 56:         IF temp[3].xxxx;
 57:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 58:           TXL temp[3], temp[2].xyyw, 2D[1];
 59:           MOV temp[2].w, temp[3];
 60:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 61:           TXL temp[4], temp[4].xyyw, 2D[0];
 62:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 63:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 64:           MOV temp[1].w, temp[3].xxxx;
 65:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 66:           MOV temp[0].z, temp[3].xxxx;
 67:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 68:           MOV temp[0].y, const[0].yyyy;
 69:         ELSE;
 70:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 71:           MOV temp[0].z, temp[3].xxxx;
 72:           ABS temp[3].x, temp[3].xxxx;
 73:           SGE temp[3].x, -temp[3].xxxx, temp[0].0000;
 74:           IF temp[3].xxxx;
 75:             MOV temp[3].x, const[0].yyyy;
 76:           ELSE;
 77:             MOV temp[3].x, const[0].zzzz;
 78:           ENDIF;
 79:           MOV temp[0].y, temp[3].xxxx;
 80:           SEQ temp[3].x, temp[0].xxxx, const[6].xxxx;
 81:           IF temp[3].xxxx;
 82:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 83:             TXL temp[3], temp[2].xyyw, 2D[1];
 84:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 85:             MUL temp[2], temp[2], input[0];
 86:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 87:             MOV temp[1].w, input[0].wwww;
 88:           ELSE;
 89:             MOV temp[1], const[0].zzzz;
 90:           ENDIF;
 91:         ENDIF;
 92:       ENDIF;
 93:     ENDIF;
 94:   ENDIF;
 95: ENDIF;
 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000;
 97: IF temp[0].xxxx;
 98:   MOV temp[0], const[0].zzzz;
 99: ELSE;
100:   MOV temp[0], temp[1];
101: ENDIF;
102: MOV output[0], temp[0];
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: KIL -|temp[1].xxxx|;
  3: SLT temp[1], input[4].zwww, temp[0].0000;
  4: DP4_SAT temp[1].x, temp[1], temp[1];
  5: KIL -|temp[1].xxxx|;
  6: ADD temp[0].x, const[0].xxxx, input[3].wwww;
  7: FRC temp[1].x, temp[0].xxxx;
  8: MOV temp[0].y, temp[1].xxxx;
  9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx;
 11: IF temp[1].xxxx;
 12:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 13:   MOV temp[1].w, input[3].xxxx;
 14:   MOV temp[0].y, const[0].yyyy;
 15: ELSE;
 16:   SEQ temp[2].x, temp[0].xxxx, const[4].xxxx;
 17:   IF temp[2].xxxx;
 18:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 19:     TXL temp[3], temp[2].xyyw, 2D[1];
 20:     MOV temp[2], temp[3];
 21:     MUL temp[4], temp[3], input[0];
 22:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 23:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 24:     MOV temp[1].w, temp[3].xxxx;
 25:     MOV temp[0].y, const[0].yyyy;
 26:   ELSE;
 27:     SEQ temp[3].x, temp[0].xxxx, const[5].xxxx;
 28:     IF temp[3].xxxx;
 29:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 30:       TXL temp[3], temp[2].xyyw, 2D[1];
 31:       MOV temp[2].w, temp[3];
 32:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 33:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 34:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 35:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 36:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 37:       MOV temp[0].z, temp[3].xxxx;
 38:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 39:       MOV temp[1].w, temp[3].xxxx;
 40:       MOV temp[0].y, const[0].yyyy;
 41:     ELSE;
 42:       SEQ temp[3].x, temp[0].xxxx, const[7].xxxx;
 43:       IF temp[3].xxxx;
 44:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 45:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 46:         TXL temp[3], temp[2].xyyw, 2D[1];
 47:         TXL temp[5], temp[4].xyyw, 2D[0];
 48:         MUL temp[2], temp[3], temp[5];
 49:         MUL temp[4], temp[2], input[0];
 50:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 51:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 52:         MOV temp[1].w, temp[3].xxxx;
 53:         MOV temp[0].y, const[0].yyyy;
 54:       ELSE;
 55:         SEQ temp[3].x, temp[0].xxxx, const[8].xxxx;
 56:         IF temp[3].xxxx;
 57:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 58:           TXL temp[3], temp[2].xyyw, 2D[1];
 59:           MOV temp[2].w, temp[3];
 60:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 61:           TXL temp[4], temp[4].xyyw, 2D[0];
 62:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 63:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 64:           MOV temp[1].w, temp[3].xxxx;
 65:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 66:           MOV temp[0].z, temp[3].xxxx;
 67:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 68:           MOV temp[0].y, const[0].yyyy;
 69:         ELSE;
 70:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 71:           MOV temp[0].z, temp[3].xxxx;
 72:           ABS temp[3].x, temp[3].xxxx;
 73:           SGE temp[3].x, -temp[3].xxxx, temp[0].0000;
 74:           IF temp[3].xxxx;
 75:             MOV temp[3].x, const[0].yyyy;
 76:           ELSE;
 77:             MOV temp[3].x, const[0].zzzz;
 78:           ENDIF;
 79:           MOV temp[0].y, temp[3].xxxx;
 80:           SEQ temp[3].x, temp[0].xxxx, const[6].xxxx;
 81:           IF temp[3].xxxx;
 82:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 83:             TXL temp[3], temp[2].xyyw, 2D[1];
 84:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 85:             MUL temp[2], temp[2], input[0];
 86:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 87:             MOV temp[1].w, input[0].wwww;
 88:           ELSE;
 89:             MOV temp[1], const[0].zzzz;
 90:           ENDIF;
 91:         ENDIF;
 92:       ENDIF;
 93:     ENDIF;
 94:   ENDIF;
 95: ENDIF;
 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000;
 97: IF temp[0].xxxx;
 98:   MOV temp[0], const[0].zzzz;
 99: ELSE;
100:   MOV temp[0], temp[1];
101: ENDIF;
102: MOV_SAT output[0], temp[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: KIL -|temp[1].xxxx|;
  3: SLT temp[1], input[4].zwww, temp[0].0000;
  4: DP4_SAT temp[1].x, temp[1], temp[1];
  5: KIL -|temp[1].xxxx|;
  6: ADD temp[0].x, const[0].xxxx, input[3].wwww;
  7: FRC temp[1].x, temp[0].xxxx;
  8: MOV temp[0].y, temp[1].xxxx;
  9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx;
 11: IF temp[1].xxxx;
 12:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 13:   MOV temp[1].w, input[3].xxxx;
 14:   MOV temp[0].y, const[0].yyyy;
 15: ELSE;
 16:   SEQ temp[2].x, temp[0].xxxx, const[4].xxxx;
 17:   IF temp[2].xxxx;
 18:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 19:     TXL temp[3], temp[2].xyyw, 2D[1];
 20:     MOV temp[2], temp[3];
 21:     MUL temp[4], temp[3], input[0];
 22:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 23:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 24:     MOV temp[1].w, temp[3].xxxx;
 25:     MOV temp[0].y, const[0].yyyy;
 26:   ELSE;
 27:     SEQ temp[3].x, temp[0].xxxx, const[5].xxxx;
 28:     IF temp[3].xxxx;
 29:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 30:       TXL temp[3], temp[2].xyyw, 2D[1];
 31:       MOV temp[2].w, temp[3];
 32:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 33:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 34:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 35:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 36:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 37:       MOV temp[0].z, temp[3].xxxx;
 38:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 39:       MOV temp[1].w, temp[3].xxxx;
 40:       MOV temp[0].y, const[0].yyyy;
 41:     ELSE;
 42:       SEQ temp[3].x, temp[0].xxxx, const[7].xxxx;
 43:       IF temp[3].xxxx;
 44:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 45:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 46:         TXL temp[3], temp[2].xyyw, 2D[1];
 47:         TXL temp[5], temp[4].xyyw, 2D[0];
 48:         MUL temp[2], temp[3], temp[5];
 49:         MUL temp[4], temp[2], input[0];
 50:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 51:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 52:         MOV temp[1].w, temp[3].xxxx;
 53:         MOV temp[0].y, const[0].yyyy;
 54:       ELSE;
 55:         SEQ temp[3].x, temp[0].xxxx, const[8].xxxx;
 56:         IF temp[3].xxxx;
 57:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 58:           TXL temp[3], temp[2].xyyw, 2D[1];
 59:           MOV temp[2].w, temp[3];
 60:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 61:           TXL temp[4], temp[4].xyyw, 2D[0];
 62:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 63:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 64:           MOV temp[1].w, temp[3].xxxx;
 65:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 66:           MOV temp[0].z, temp[3].xxxx;
 67:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 68:           MOV temp[0].y, const[0].yyyy;
 69:         ELSE;
 70:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 71:           MOV temp[0].z, temp[3].xxxx;
 72:           ABS temp[3].x, temp[3].xxxx;
 73:           SGE temp[3].x, -temp[3].xxxx, temp[0].0000;
 74:           IF temp[3].xxxx;
 75:             MOV temp[3].x, const[0].yyyy;
 76:           ELSE;
 77:             MOV temp[3].x, const[0].zzzz;
 78:           ENDIF;
 79:           MOV temp[0].y, temp[3].xxxx;
 80:           SEQ temp[3].x, temp[0].xxxx, const[6].xxxx;
 81:           IF temp[3].xxxx;
 82:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 83:             TXL temp[3], temp[2].xyyw, 2D[1];
 84:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 85:             MUL temp[2], temp[2], input[0];
 86:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 87:             MOV temp[1].w, input[0].wwww;
 88:           ELSE;
 89:             MOV temp[1], const[0].zzzz;
 90:           ENDIF;
 91:         ENDIF;
 92:       ENDIF;
 93:     ENDIF;
 94:   ENDIF;
 95: ENDIF;
 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000;
 97: IF temp[0].xxxx;
 98:   MOV temp[0], const[0].zzzz;
 99: ELSE;
100:   MOV temp[0], temp[1];
101: ENDIF;
102: MOV_SAT output[0], temp[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: SLT temp[0], input[4].xyyy, temp[0].0000;
  1: DP4_SAT temp[1].x, temp[0], temp[0];
  2: KIL -|temp[1].xxxx|;
  3: SLT temp[1], input[4].zwww, temp[0].0000;
  4: DP4_SAT temp[1].x, temp[1], temp[1];
  5: KIL -|temp[1].xxxx|;
  6: ADD temp[0].x, const[0].xxxx, input[3].wwww;
  7: FRC temp[1].x, temp[0].xxxx;
  8: MOV temp[0].y, temp[1].xxxx;
  9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 10: SUB none., temp[0].xxxx, const[3].xxxx; [aluresult = (x == 0)]
 11: IF aluresult.x___;
 12:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 13:   MOV temp[1].w, input[3].xxxx;
 14:   MOV temp[0].y, const[0].yyyy;
 15: ELSE;
 16:   SUB none., temp[0].xxxx, const[4].xxxx; [aluresult = (x == 0)]
 17:   IF aluresult.x___;
 18:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 19:     TXL temp[3], temp[2].xyyw, 2D[1];
 20:     MOV temp[2], temp[3];
 21:     MUL temp[4], temp[3], input[0];
 22:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 23:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 24:     MOV temp[1].w, temp[3].xxxx;
 25:     MOV temp[0].y, const[0].yyyy;
 26:   ELSE;
 27:     SUB none., temp[0].xxxx, const[5].xxxx; [aluresult = (x == 0)]
 28:     IF aluresult.x___;
 29:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 30:       TXL temp[3], temp[2].xyyw, 2D[1];
 31:       MOV temp[2].w, temp[3];
 32:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 33:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 34:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 35:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 36:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 37:       MOV temp[0].z, temp[3].xxxx;
 38:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 39:       MOV temp[1].w, temp[3].xxxx;
 40:       MOV temp[0].y, const[0].yyyy;
 41:     ELSE;
 42:       SUB none., temp[0].xxxx, const[7].xxxx; [aluresult = (x == 0)]
 43:       IF aluresult.x___;
 44:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 45:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 46:         TXL temp[3], temp[2].xyyw, 2D[1];
 47:         TXL temp[5], temp[4].xyyw, 2D[0];
 48:         MUL temp[2], temp[3], temp[5];
 49:         MUL temp[4], temp[2], input[0];
 50:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 51:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 52:         MOV temp[1].w, temp[3].xxxx;
 53:         MOV temp[0].y, const[0].yyyy;
 54:       ELSE;
 55:         SUB none., temp[0].xxxx, const[8].xxxx; [aluresult = (x == 0)]
 56:         IF aluresult.x___;
 57:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 58:           TXL temp[3], temp[2].xyyw, 2D[1];
 59:           MOV temp[2].w, temp[3];
 60:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 61:           TXL temp[4], temp[4].xyyw, 2D[0];
 62:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 63:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 64:           MOV temp[1].w, temp[3].xxxx;
 65:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 66:           MOV temp[0].z, temp[3].xxxx;
 67:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 68:           MOV temp[0].y, const[0].yyyy;
 69:         ELSE;
 70:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 71:           MOV temp[0].z, temp[3].xxxx;
 72:           ABS temp[3].x, temp[3].xxxx;
 73:           SUB none., -temp[3].xxxx, temp[0].0000; [aluresult = (x >= 0)]
 74:           IF aluresult.x___;
 75:             MOV temp[3].x, const[0].yyyy;
 76:           ELSE;
 77:             MOV temp[3].x, const[0].zzzz;
 78:           ENDIF;
 79:           MOV temp[0].y, temp[3].xxxx;
 80:           SUB none., temp[0].xxxx, const[6].xxxx; [aluresult = (x == 0)]
 81:           IF aluresult.x___;
 82:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 83:             TXL temp[3], temp[2].xyyw, 2D[1];
 84:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 85:             MUL temp[2], temp[2], input[0];
 86:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 87:             MOV temp[1].w, input[0].wwww;
 88:           ELSE;
 89:             MOV temp[1], const[0].zzzz;
 90:           ENDIF;
 91:         ENDIF;
 92:       ENDIF;
 93:     ENDIF;
 94:   ENDIF;
 95: ENDIF;
 96: SUB none., -temp[0].yyyy, temp[0].0000; [aluresult = (x >= 0)]
 97: IF aluresult.x___;
 98:   MOV temp[0], const[0].zzzz;
 99: ELSE;
100:   MOV temp[0], temp[1];
101: ENDIF;
102: MOV_SAT output[0], temp[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: ADD temp[6], input[4].xyyy, -temp[0].0000;
  1: CMP temp[0], temp[6], none.1111, none.0000;
  2: DP4_SAT temp[1].x, temp[0], temp[0];
  3: KIL -|temp[1].xxxx|;
  4: ADD temp[1], input[4].zwww, -temp[0].0000;
  5: CMP temp[1], temp[1], none.1111, none.0000;
  6: DP4_SAT temp[1].x, temp[1], temp[1];
  7: KIL -|temp[1].xxxx|;
  8: ADD temp[0].x, const[0].xxxx, input[3].wwww;
  9: FRC temp[1].x, temp[0].xxxx;
 10: MOV temp[0].y, temp[1].xxxx;
 11: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx;
 12: ADD none., temp[0].xxxx, -const[3].xxxx; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MUL temp[1].xyz, input[0].wwww, input[0].xyzz;
 15:   MOV temp[1].w, input[3].xxxx;
 16:   MOV temp[0].y, const[0].yyyy;
 17: ELSE;
 18:   ADD none., temp[0].xxxx, -const[4].xxxx; [aluresult = (x == 0)]
 19:   IF aluresult.x___;
 20:     MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 21:     TXL temp[3], temp[2].xyyw, 2D[1];
 22:     MOV temp[2], temp[3];
 23:     MUL temp[4], temp[3], input[0];
 24:     MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 25:     MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 26:     MOV temp[1].w, temp[3].xxxx;
 27:     MOV temp[0].y, const[0].yyyy;
 28:   ELSE;
 29:     ADD none., temp[0].xxxx, -const[5].xxxx; [aluresult = (x == 0)]
 30:     IF aluresult.x___;
 31:       MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 32:       TXL temp[3], temp[2].xyyw, 2D[1];
 33:       MOV temp[2].w, temp[3];
 34:       ADD temp[2].xyz, temp[3].xyzz, const[0].wwww;
 35:       ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz;
 36:       DP3 temp[5].x, temp[2].xyzz, const[9].xyzz;
 37:       MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx;
 38:       MUL temp[3].x, temp[3].wwww, input[3].xxxx;
 39:       MOV temp[0].z, temp[3].xxxx;
 40:       MUL temp[3].x, temp[3].xxxx, input[0].wwww;
 41:       MOV temp[1].w, temp[3].xxxx;
 42:       MOV temp[0].y, const[0].yyyy;
 43:     ELSE;
 44:       ADD none., temp[0].xxxx, -const[7].xxxx; [aluresult = (x == 0)]
 45:       IF aluresult.x___;
 46:         MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 47:         MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 48:         TXL temp[3], temp[2].xyyw, 2D[1];
 49:         TXL temp[5], temp[4].xyyw, 2D[0];
 50:         MUL temp[2], temp[3], temp[5];
 51:         MUL temp[4], temp[2], input[0];
 52:         MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz;
 53:         MUL temp[3].x, temp[2].wwww, input[3].xxxx;
 54:         MOV temp[1].w, temp[3].xxxx;
 55:         MOV temp[0].y, const[0].yyyy;
 56:       ELSE;
 57:         ADD none., temp[0].xxxx, -const[8].xxxx; [aluresult = (x == 0)]
 58:         IF aluresult.x___;
 59:           MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 60:           TXL temp[3], temp[2].xyyw, 2D[1];
 61:           MOV temp[2].w, temp[3];
 62:           MUL temp[4].xyw, const[0].yyzz, input[2].xyxx;
 63:           TXL temp[4], temp[4].xyyw, 2D[0];
 64:           MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz;
 65:           MUL temp[3].x, temp[4].wwww, input[3].xxxx;
 66:           MOV temp[1].w, temp[3].xxxx;
 67:           MUL temp[3].x, temp[4].wwww, input[0].wwww;
 68:           MOV temp[0].z, temp[3].xxxx;
 69:           MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz;
 70:           MOV temp[0].y, const[0].yyyy;
 71:         ELSE;
 72:           ADD temp[3].x, temp[0].xxxx, -const[6].xxxx;
 73:           MOV temp[0].z, temp[3].xxxx;
 74:           MOV temp[3].x, |temp[3].xxxx|;
 75:           ADD none., -temp[3].xxxx, -temp[0].0000; [aluresult = (x >= 0)]
 76:           IF aluresult.x___;
 77:             MOV temp[3].x, const[0].yyyy;
 78:           ELSE;
 79:             MOV temp[3].x, const[0].zzzz;
 80:           ENDIF;
 81:           MOV temp[0].y, temp[3].xxxx;
 82:           ADD none., temp[0].xxxx, -const[6].xxxx; [aluresult = (x == 0)]
 83:           IF aluresult.x___;
 84:             MUL temp[2].xyw, const[0].yyzz, input[1].xyxx;
 85:             TXL temp[3], temp[2].xyyw, 2D[1];
 86:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 87:             MUL temp[2], temp[2], input[0];
 88:             MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz;
 89:             MOV temp[1].w, input[0].wwww;
 90:           ELSE;
 91:             MOV temp[1], const[0].zzzz;
 92:           ENDIF;
 93:         ENDIF;
 94:       ENDIF;
 95:     ENDIF;
 96:   ENDIF;
 97: ENDIF;
 98: ADD none., -temp[0].yyyy, -temp[0].0000; [aluresult = (x >= 0)]
 99: IF aluresult.x___;
100:   MOV temp[0], const[0].zzzz;
101: ELSE;
102:   MOV temp[0], temp[1];
103: ENDIF;
104: MOV_SAT output[0], temp[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: ADD temp[6], input[4].xyyy, -temp[0].0000;
  1: CMP temp[0], temp[6], none.1111, none.0000;
  2: DP4_SAT temp[1].x, temp[0], temp[0];
  3: KIL -|temp[1].xxxx|;
  4: ADD temp[1], input[4].zwww, -temp[0].0000;
  5: CMP temp[1], temp[1], none.1111, none.0000;
  6: DP4_SAT temp[1].x, temp[1], temp[1];
  7: KIL -|temp[1].xxxx|;
  8: ADD temp[0].x, const[0].x___, input[3].w___;
  9: FRC temp[1].x, temp[0].x___;
 10: ADD temp[0].x, -temp[1].x___, temp[0].x___;
 11: ADD none., temp[0].x___, -const[3].x___; [aluresult = (x == 0)]
 12: IF aluresult.x___;
 13:   MUL temp[1].xyz, input[0].www_, input[0].xyz_;
 14:   MOV temp[1].w, input[3].___x;
 15:   MOV temp[0].y, const[0]._y__;
 16: ELSE;
 17:   ADD none., temp[0].x___, -const[4].x___; [aluresult = (x == 0)]
 18:   IF aluresult.x___;
 19:     MUL temp[2].xyw, const[0].yy_z, input[1].xy_x;
 20:     TXL temp[3], temp[2].xy_w, 2D[1];
 21:     MUL temp[4], temp[3], input[0];
 22:     MUL temp[1].xyz, temp[4].www_, temp[4].xyz_;
 23:     MUL temp[3].x, temp[3].w___, input[3].x___;
 24:     MOV temp[1].w, temp[3].___x;
 25:     MOV temp[0].y, const[0]._y__;
 26:   ELSE;
 27:     ADD none., temp[0].x___, -const[5].x___; [aluresult = (x == 0)]
 28:     IF aluresult.x___;
 29:       MUL temp[2].xyw, const[0].yy_z, input[1].xy_x;
 30:       TXL temp[3], temp[2].xy_w, 2D[1];
 31:       ADD temp[2].xyz, temp[3].xyz_, const[0].www_;
 32:       ADD temp[2].xyz, temp[2].xyz_, temp[2].xyz_;
 33:       DP3 temp[5].x, temp[2].xyz_, const[9].xyz_;
 34:       MUL temp[1].xyz, temp[3].www_, temp[5].xxx_;
 35:       MUL temp[3].x, temp[3].w___, input[3].x___;
 36:       MUL temp[3].x, temp[3].x___, input[0].w___;
 37:       MOV temp[1].w, temp[3].___x;
 38:       MOV temp[0].y, const[0]._y__;
 39:     ELSE;
 40:       ADD none., temp[0].x___, -const[7].x___; [aluresult = (x == 0)]
 41:       IF aluresult.x___;
 42:         MUL temp[2].xyw, const[0].yy_z, input[1].xy_x;
 43:         MUL temp[4].xyw, const[0].yy_z, input[2].xy_x;
 44:         TXL temp[3], temp[2].xy_w, 2D[1];
 45:         TXL temp[5], temp[4].xy_w, 2D[0];
 46:         MUL temp[2], temp[3], temp[5];
 47:         MUL temp[4], temp[2], input[0];
 48:         MUL temp[1].xyz, temp[4].www_, temp[4].xyz_;
 49:         MUL temp[3].x, temp[2].w___, input[3].x___;
 50:         MOV temp[1].w, temp[3].___x;
 51:         MOV temp[0].y, const[0]._y__;
 52:       ELSE;
 53:         ADD none., temp[0].x___, -const[8].x___; [aluresult = (x == 0)]
 54:         IF aluresult.x___;
 55:           MUL temp[2].xyw, const[0].yy_z, input[1].xy_x;
 56:           TXL temp[3].xyz, temp[2].xy_w, 2D[1];
 57:           MUL temp[4].xyw, const[0].yy_z, input[2].xy_x;
 58:           TXL temp[4].w, temp[4].xy_w, 2D[0];
 59:           MUL temp[2].xyz, temp[3].xyz_, input[0].xyz_;
 60:           MUL temp[3].x, temp[4].w___, input[3].x___;
 61:           MOV temp[1].w, temp[3].___x;
 62:           MUL temp[3].x, temp[4].w___, input[0].w___;
 63:           MUL temp[1].xyz, temp[3].xxx_, temp[2].xyz_;
 64:           MOV temp[0].y, const[0]._y__;
 65:         ELSE;
 66:           ADD temp[3].x, temp[0].x___, -const[6].x___;
 67:           MOV temp[3].x, |temp[3].x___|;
 68:           ADD none., -temp[3].x___, -temp[0].0___; [aluresult = (x >= 0)]
 69:           IF aluresult.x___;
 70:             MOV temp[3].x, const[0].y___;
 71:           ELSE;
 72:             MOV temp[3].x, const[0].z___;
 73:           ENDIF;
 74:           MOV temp[0].y, temp[3]._x__;
 75:           ADD none., temp[0].x___, -const[6].x___; [aluresult = (x == 0)]
 76:           IF aluresult.x___;
 77:             MUL temp[2].xyw, const[0].yy_z, input[1].xy_x;
 78:             TXL temp[3].xyz, temp[2].xy_w, 2D[1];
 79:             MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy;
 80:             MUL temp[2], temp[2], input[0];
 81:             MUL temp[1].xyz, temp[2].www_, temp[2].xyz_;
 82:             MOV temp[1].w, input[0].___w;
 83:           ELSE;
 84:             MOV temp[1], const[0].zzzz;
 85:           ENDIF;
 86:         ENDIF;
 87:       ENDIF;
 88:     ENDIF;
 89:   ENDIF;
 90: ENDIF;
 91: ADD none., -temp[0].y___, -temp[0].0___; [aluresult = (x >= 0)]
 92: IF aluresult.x___;
 93:   MOV temp[0], const[0].zzzz;
 94: ELSE;
 95:   MOV temp[0], temp[1];
 96: ENDIF;
 97: MOV_SAT output[0], temp[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: ADD temp[7], input[4].xyyy, -temp[0].0000;
  1: CMP temp[8], temp[7], none.1111, none.0000;
  2: DP4_SAT temp[9].x, temp[8], temp[8];
  3: KIL -|temp[9].xxxx|;
  4: ADD temp[10], input[4].zwww, -temp[0].0000;
  5: CMP temp[11], temp[10], none.1111, none.0000;
  6: DP4_SAT temp[12].x, temp[11], temp[11];
  7: KIL -|temp[12].xxxx|;
  8: ADD temp[13].x, const[0].x___, input[3].w___;
  9: FRC temp[14].x, temp[13].x___;
 10: ADD temp[15].x, -temp[14].x___, temp[13].x___;
 11: ADD none., temp[15].x___, -const[3].x___; [aluresult = (x == 0)]
 12: IF aluresult.x___;
 13:   MUL temp[1].xyz, input[0].www_, input[0].xyz_;
 14:   MOV temp[1].w, input[3].___x;
 15:   MOV temp[0].y, const[0]._y__;
 16: ELSE;
 17:   ADD none., temp[15].x___, -const[4].x___; [aluresult = (x == 0)]
 18:   IF aluresult.x___;
 19:     MUL temp[16].xyw, const[0].yy_z, input[1].xy_x;
 20:     TXL temp[17], temp[16].xy_w, 2D[1];
 21:     MUL temp[18], temp[17], input[0];
 22:     MUL temp[1].xyz, temp[18].www_, temp[18].xyz_;
 23:     MUL temp[19].x, temp[17].w___, input[3].x___;
 24:     MOV temp[1].w, temp[19].___x;
 25:     MOV temp[0].y, const[0]._y__;
 26:   ELSE;
 27:     ADD none., temp[15].x___, -const[5].x___; [aluresult = (x == 0)]
 28:     IF aluresult.x___;
 29:       MUL temp[20].xyw, const[0].yy_z, input[1].xy_x;
 30:       TXL temp[21], temp[20].xy_w, 2D[1];
 31:       ADD temp[22].xyz, temp[21].xyz_, const[0].www_;
 32:       ADD temp[23].xyz, temp[22].xyz_, temp[22].xyz_;
 33:       DP3 temp[24].x, temp[23].xyz_, const[9].xyz_;
 34:       MUL temp[1].xyz, temp[21].www_, temp[24].xxx_;
 35:       MUL temp[25].x, temp[21].w___, input[3].x___;
 36:       MUL temp[26].x, temp[25].x___, input[0].w___;
 37:       MOV temp[1].w, temp[26].___x;
 38:       MOV temp[0].y, const[0]._y__;
 39:     ELSE;
 40:       ADD none., temp[15].x___, -const[7].x___; [aluresult = (x == 0)]
 41:       IF aluresult.x___;
 42:         MUL temp[27].xyw, const[0].yy_z, input[1].xy_x;
 43:         MUL temp[28].xyw, const[0].yy_z, input[2].xy_x;
 44:         TXL temp[29], temp[27].xy_w, 2D[1];
 45:         TXL temp[30], temp[28].xy_w, 2D[0];
 46:         MUL temp[31], temp[29], temp[30];
 47:         MUL temp[32], temp[31], input[0];
 48:         MUL temp[1].xyz, temp[32].www_, temp[32].xyz_;
 49:         MUL temp[33].x, temp[31].w___, input[3].x___;
 50:         MOV temp[1].w, temp[33].___x;
 51:         MOV temp[0].y, const[0]._y__;
 52:       ELSE;
 53:         ADD none., temp[15].x___, -const[8].x___; [aluresult = (x == 0)]
 54:         IF aluresult.x___;
 55:           MUL temp[34].xyw, const[0].yy_z, input[1].xy_x;
 56:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 57:           MUL temp[36].xyw, const[0].yy_z, input[2].xy_x;
 58:           TXL temp[37].w, temp[36].xy_w, 2D[0];
 59:           MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_;
 60:           MUL temp[39].x, temp[37].w___, input[3].x___;
 61:           MOV temp[1].w, temp[39].___x;
 62:           MUL temp[40].x, temp[37].w___, input[0].w___;
 63:           MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_;
 64:           MOV temp[0].y, const[0]._y__;
 65:         ELSE;
 66:           ADD temp[41].x, temp[15].x___, -const[6].x___;
 67:           MOV temp[42].x, |temp[41].x___|;
 68:           ADD none., -temp[42].x___, -temp[0].0___; [aluresult = (x >= 0)]
 69:           IF aluresult.x___;
 70:             MOV temp[3].x, const[0].y___;
 71:           ELSE;
 72:             MOV temp[3].x, const[0].z___;
 73:           ENDIF;
 74:           MOV temp[0].y, temp[3]._x__;
 75:           ADD none., temp[15].x___, -const[6].x___; [aluresult = (x == 0)]
 76:           IF aluresult.x___;
 77:             MUL temp[43].xyw, const[0].yy_z, input[1].xy_x;
 78:             TXL temp[44].xyz, temp[43].xy_w, 2D[1];
 79:             MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy;
 80:             MUL temp[46], temp[45], input[0];
 81:             MUL temp[1].xyz, temp[46].www_, temp[46].xyz_;
 82:             MOV temp[1].w, input[0].___w;
 83:           ELSE;
 84:             MOV temp[1], const[0].zzzz;
 85:           ENDIF;
 86:         ENDIF;
 87:       ENDIF;
 88:     ENDIF;
 89:   ENDIF;
 90: ENDIF;
 91: ADD none., -temp[0].y___, -temp[0].0___; [aluresult = (x >= 0)]
 92: IF aluresult.x___;
 93:   MOV temp[0], const[0].zzzz;
 94: ELSE;
 95:   MOV temp[0], temp[1];
 96: ENDIF;
 97: MOV_SAT output[0], temp[0];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: CMP temp[8], input[4].xyyy, none.1111, none.0000;
  1: DP4_SAT temp[9].x, temp[8], temp[8];
  2: KIL -|temp[9].xxxx|;
  3: CMP temp[11], input[4].zwww, none.1111, none.0000;
  4: DP4_SAT temp[12].x, temp[11], temp[11];
  5: KIL -|temp[12].xxxx|;
  6: ADD temp[13].x, const[0].x___, input[3].w___;
  7: FRC temp[14].x, temp[13].x___;
  8: ADD none., (temp[13] - temp[14]).x___, -const[3].x___; [aluresult = (x == 0)]
  9: IF aluresult.x___;
 10:   MUL temp[1].xyz, input[0].www_, input[0].xyz_;
 11:   MOV temp[1].w, input[3].___x;
 12:   MOV temp[0].y, const[0]._y__;
 13: ELSE;
 14:   ADD none., (temp[13] - temp[14]).x___, -const[4].x___; [aluresult = (x == 0)]
 15:   IF aluresult.x___;
 16:     MUL temp[16].xyw, const[0].yy_z, input[1].xy_x;
 17:     TXL temp[17], temp[16].xy_w, 2D[1];
 18:     MUL temp[18], temp[17], input[0];
 19:     MUL temp[1].xyz, temp[18].www_, temp[18].xyz_;
 20:     MUL temp[19].x, temp[17].w___, input[3].x___;
 21:     MOV temp[1].w, temp[19].___x;
 22:     MOV temp[0].y, const[0]._y__;
 23:   ELSE;
 24:     ADD none., (temp[13] - temp[14]).x___, -const[5].x___; [aluresult = (x == 0)]
 25:     IF aluresult.x___;
 26:       MUL temp[20].xyw, const[0].yy_z, input[1].xy_x;
 27:       TXL temp[21], temp[20].xy_w, 2D[1];
 28:       ADD temp[22].xyz, temp[21].xyz_, const[0].www_;
 29:       DP3 temp[24].x, (temp[22] + temp[22]).xyz_, const[9].xyz_;
 30:       MUL temp[1].xyz, temp[21].www_, temp[24].xxx_;
 31:       MUL temp[25].x, temp[21].w___, input[3].x___;
 32:       MUL temp[26].x, temp[25].x___, input[0].w___;
 33:       MOV temp[1].w, temp[26].___x;
 34:       MOV temp[0].y, const[0]._y__;
 35:     ELSE;
 36:       ADD none., (temp[13] - temp[14]).x___, -const[7].x___; [aluresult = (x == 0)]
 37:       IF aluresult.x___;
 38:         MUL temp[27].xyw, const[0].yy_z, input[1].xy_x;
 39:         MUL temp[28].xyw, const[0].yy_z, input[2].xy_x;
 40:         TXL temp[29], temp[27].xy_w, 2D[1];
 41:         TXL temp[30], temp[28].xy_w, 2D[0];
 42:         MUL temp[31], temp[29], temp[30];
 43:         MUL temp[32], temp[31], input[0];
 44:         MUL temp[1].xyz, temp[32].www_, temp[32].xyz_;
 45:         MUL temp[33].x, temp[31].w___, input[3].x___;
 46:         MOV temp[1].w, temp[33].___x;
 47:         MOV temp[0].y, const[0]._y__;
 48:       ELSE;
 49:         ADD none., (temp[13] - temp[14]).x___, -const[8].x___; [aluresult = (x == 0)]
 50:         IF aluresult.x___;
 51:           MUL temp[34].xyw, const[0].yy_z, input[1].xy_x;
 52:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 53:           MUL temp[36].xyw, const[0].yy_z, input[2].xy_x;
 54:           TXL temp[37].w, temp[36].xy_w, 2D[0];
 55:           MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_;
 56:           MUL temp[39].x, temp[37].w___, input[3].x___;
 57:           MOV temp[1].w, temp[39].___x;
 58:           MUL temp[40].x, temp[37].w___, input[0].w___;
 59:           MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_;
 60:           MOV temp[0].y, const[0]._y__;
 61:         ELSE;
 62:           ADD temp[41].x, (temp[13] - temp[14]).x___, -const[6].x___;
 63:           MOV none., -|temp[41].x___|; [aluresult = (x >= 0)]
 64:           IF aluresult.x___;
 65:             MOV temp[3].x, const[0].y___;
 66:           ELSE;
 67:             MOV temp[3].x, const[0].z___;
 68:           ENDIF;
 69:           MOV temp[0].y, temp[3]._x__;
 70:           ADD none., (temp[13] - temp[14]).x___, -const[6].x___; [aluresult = (x == 0)]
 71:           IF aluresult.x___;
 72:             MUL temp[43].xyw, const[0].yy_z, input[1].xy_x;
 73:             TXL temp[44].xyz, temp[43].xy_w, 2D[1];
 74:             MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy;
 75:             MUL temp[46], temp[45], input[0];
 76:             MUL temp[1].xyz, temp[46].www_, temp[46].xyz_;
 77:             MOV temp[1].w, input[0].___w;
 78:           ELSE;
 79:             MOV temp[1], const[0].zzzz;
 80:           ENDIF;
 81:         ENDIF;
 82:       ENDIF;
 83:     ENDIF;
 84:   ENDIF;
 85: ENDIF;
 86: MOV none., -temp[0].y___; [aluresult = (x >= 0)]
 87: IF aluresult.x___;
 88:   MOV temp[0], const[0].zzzz;
 89: ELSE;
 90:   MOV temp[0], temp[1];
 91: ENDIF;
 92: MOV_SAT output[0], temp[0];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: CMP temp[8], input[4].xyyy, none.1111, none.0000;
  1: DP4_SAT temp[9].x, temp[8], temp[8];
  2: MOV temp[2], -|temp[9].xxxx|;
  3: KIL temp[2];
  4: CMP temp[11], input[4].zwww, none.1111, none.0000;
  5: DP4_SAT temp[12].x, temp[11], temp[11];
  6: MOV temp[4], -|temp[12].xxxx|;
  7: KIL temp[4];
  8: ADD temp[13].x, const[0].x___, input[3].w___;
  9: FRC temp[14].x, temp[13].x___;
 10: ADD none., (temp[13] - temp[14]).x___, -const[3].x___; [aluresult = (x == 0)]
 11: IF aluresult.x___;
 12:   MUL temp[1].xyz, input[0].www_, input[0].xyz_;
 13:   MOV temp[1].w, input[3].___x;
 14:   MOV temp[0].y, const[0]._y__;
 15: ELSE;
 16:   ADD none., (temp[13] - temp[14]).x___, -const[4].x___; [aluresult = (x == 0)]
 17:   IF aluresult.x___;
 18:     MUL temp[16].xyw, const[0].yy_z, input[1].xy_x;
 19:     TXL temp[17], temp[16].xy_w, 2D[1];
 20:     MUL temp[18], temp[17], input[0];
 21:     MUL temp[1].xyz, temp[18].www_, temp[18].xyz_;
 22:     MUL temp[19].x, temp[17].w___, input[3].x___;
 23:     MOV temp[1].w, temp[19].___x;
 24:     MOV temp[0].y, const[0]._y__;
 25:   ELSE;
 26:     ADD none., (temp[13] - temp[14]).x___, -const[5].x___; [aluresult = (x == 0)]
 27:     IF aluresult.x___;
 28:       MUL temp[20].xyw, const[0].yy_z, input[1].xy_x;
 29:       TXL temp[21], temp[20].xy_w, 2D[1];
 30:       ADD temp[22].xyz, temp[21].xyz_, const[0].www_;
 31:       DP3 temp[24].x, (temp[22] + temp[22]).xyz_, const[9].xyz_;
 32:       MUL temp[1].xyz, temp[21].www_, temp[24].xxx_;
 33:       MUL temp[25].x, temp[21].w___, input[3].x___;
 34:       MUL temp[26].x, temp[25].x___, input[0].w___;
 35:       MOV temp[1].w, temp[26].___x;
 36:       MOV temp[0].y, const[0]._y__;
 37:     ELSE;
 38:       ADD none., (temp[13] - temp[14]).x___, -const[7].x___; [aluresult = (x == 0)]
 39:       IF aluresult.x___;
 40:         MUL temp[27].xyw, const[0].yy_z, input[1].xy_x;
 41:         MUL temp[28].xyw, const[0].yy_z, input[2].xy_x;
 42:         TXL temp[29], temp[27].xy_w, 2D[1];
 43:         TXL temp[30], temp[28].xy_w, 2D[0];
 44:         MUL temp[31], temp[29], temp[30];
 45:         MUL temp[32], temp[31], input[0];
 46:         MUL temp[1].xyz, temp[32].www_, temp[32].xyz_;
 47:         MUL temp[33].x, temp[31].w___, input[3].x___;
 48:         MOV temp[1].w, temp[33].___x;
 49:         MOV temp[0].y, const[0]._y__;
 50:       ELSE;
 51:         ADD none., (temp[13] - temp[14]).x___, -const[8].x___; [aluresult = (x == 0)]
 52:         IF aluresult.x___;
 53:           MUL temp[34].xyw, const[0].yy_z, input[1].xy_x;
 54:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 55:           MUL temp[36].xyw, const[0].yy_z, input[2].xy_x;
 56:           TXL temp[37].w, temp[36].xy_w, 2D[0];
 57:           MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_;
 58:           MUL temp[39].x, temp[37].w___, input[3].x___;
 59:           MOV temp[1].w, temp[39].___x;
 60:           MUL temp[40].x, temp[37].w___, input[0].w___;
 61:           MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_;
 62:           MOV temp[0].y, const[0]._y__;
 63:         ELSE;
 64:           ADD temp[41].x, (temp[13] - temp[14]).x___, -const[6].x___;
 65:           MOV none., -|temp[41].x___|; [aluresult = (x >= 0)]
 66:           IF aluresult.x___;
 67:             MOV temp[3].x, const[0].y___;
 68:           ELSE;
 69:             MOV temp[3].x, const[0].z___;
 70:           ENDIF;
 71:           MOV temp[0].y, temp[3]._x__;
 72:           ADD none., (temp[13] - temp[14]).x___, -const[6].x___; [aluresult = (x == 0)]
 73:           IF aluresult.x___;
 74:             MUL temp[43].xyw, const[0].yy_z, input[1].xy_x;
 75:             TXL temp[44].xyz, temp[43].xy_w, 2D[1];
 76:             MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy;
 77:             MUL temp[46], temp[45], input[0];
 78:             MUL temp[1].xyz, temp[46].www_, temp[46].xyz_;
 79:             MOV temp[1].w, input[0].___w;
 80:           ELSE;
 81:             MOV temp[1], const[0].zzzz;
 82:           ENDIF;
 83:         ENDIF;
 84:       ENDIF;
 85:     ENDIF;
 86:   ENDIF;
 87: ENDIF;
 88: MOV none., -temp[0].y___; [aluresult = (x >= 0)]
 89: IF aluresult.x___;
 90:   MOV temp[0], const[0].zzzz;
 91: ELSE;
 92:   MOV temp[0], temp[1];
 93: ENDIF;
 94: MOV_SAT output[0], temp[0];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: CMP temp[8], input[4].xyyy, none.1111, none.0000;
  1: DP4_SAT temp[9].x, temp[8], temp[8];
  2: MOV temp[2], -|temp[9].xxxx|;
  3: KIL temp[2];
  4: CMP temp[11], input[4].zwww, none.1111, none.0000;
  5: DP4_SAT temp[12].x, temp[11], temp[11];
  6: MOV temp[4], -|temp[12].xxxx|;
  7: KIL temp[4];
  8: ADD temp[13].x, const[0].x___, input[3].w___;
  9: FRC temp[14].x, temp[13].x___;
 10: ADD none., (temp[13] - temp[14]).x___, -const[3].x___; [aluresult = (x == 0)]
 11: IF aluresult.x___;
 12:   MUL temp[1].xyz, input[0].www_, input[0].xyz_;
 13:   MOV temp[1].w, input[3].___x;
 14:   MOV temp[0].y, const[0]._y__;
 15: ELSE;
 16:   ADD none., (temp[13] - temp[14]).x___, -const[4].x___; [aluresult = (x == 0)]
 17:   IF aluresult.x___;
 18:     MUL temp[16].xyw, const[0].yy_z, input[1].xy_x;
 19:     TXL temp[17], temp[16].xy_w, 2D[1];
 20:     MUL temp[18], temp[17], input[0];
 21:     MUL temp[1].xyz, temp[18].www_, temp[18].xyz_;
 22:     MUL temp[19].x, temp[17].w___, input[3].x___;
 23:     MOV temp[1].w, temp[19].___x;
 24:     MOV temp[0].y, const[0]._y__;
 25:   ELSE;
 26:     ADD none., (temp[13] - temp[14]).x___, -const[5].x___; [aluresult = (x == 0)]
 27:     IF aluresult.x___;
 28:       MUL temp[20].xyw, const[0].yy_z, input[1].xy_x;
 29:       TXL temp[21], temp[20].xy_w, 2D[1];
 30:       ADD temp[22].xyz, temp[21].xyz_, const[0].www_;
 31:       DP3 temp[24].x, (temp[22] + temp[22]).xyz_, const[9].xyz_;
 32:       MUL temp[1].xyz, temp[21].www_, temp[24].xxx_;
 33:       MUL temp[25].x, temp[21].w___, input[3].x___;
 34:       MUL temp[26].x, temp[25].x___, input[0].w___;
 35:       MOV temp[1].w, temp[26].___x;
 36:       MOV temp[0].y, const[0]._y__;
 37:     ELSE;
 38:       ADD none., (temp[13] - temp[14]).x___, -const[7].x___; [aluresult = (x == 0)]
 39:       IF aluresult.x___;
 40:         MUL temp[27].xyw, const[0].yy_z, input[1].xy_x;
 41:         MUL temp[28].xyw, const[0].yy_z, input[2].xy_x;
 42:         TXL temp[29], temp[27].xy_w, 2D[1];
 43:         TXL temp[30], temp[28].xy_w, 2D[0];
 44:         MUL temp[31], temp[29], temp[30];
 45:         MUL temp[32], temp[31], input[0];
 46:         MUL temp[1].xyz, temp[32].www_, temp[32].xyz_;
 47:         MUL temp[33].x, temp[31].w___, input[3].x___;
 48:         MOV temp[1].w, temp[33].___x;
 49:         MOV temp[0].y, const[0]._y__;
 50:       ELSE;
 51:         ADD none., (temp[13] - temp[14]).x___, -const[8].x___; [aluresult = (x == 0)]
 52:         IF aluresult.x___;
 53:           MUL temp[34].xyw, const[0].yy_z, input[1].xy_x;
 54:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 55:           MUL temp[36].xyw, const[0].yy_z, input[2].xy_x;
 56:           TXL temp[37].w, temp[36].xy_w, 2D[0];
 57:           MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_;
 58:           MUL temp[39].x, temp[37].w___, input[3].x___;
 59:           MOV temp[1].w, temp[39].___x;
 60:           MUL temp[40].x, temp[37].w___, input[0].w___;
 61:           MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_;
 62:           MOV temp[0].y, const[0]._y__;
 63:         ELSE;
 64:           ADD temp[41].x, (temp[13] - temp[14]).x___, -const[6].x___;
 65:           MOV none., -|temp[41].x___|; [aluresult = (x >= 0)]
 66:           IF aluresult.x___;
 67:             MOV temp[3].x, const[0].y___;
 68:           ELSE;
 69:             MOV temp[3].x, const[0].z___;
 70:           ENDIF;
 71:           MOV temp[0].y, temp[3]._x__;
 72:           ADD none., (temp[13] - temp[14]).x___, -const[6].x___; [aluresult = (x == 0)]
 73:           IF aluresult.x___;
 74:             MUL temp[43].xyw, const[0].yy_z, input[1].xy_x;
 75:             TXL temp[44].xyz, temp[43].xy_w, 2D[1];
 76:             MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy;
 77:             MUL temp[46], temp[45], input[0];
 78:             MUL temp[1].xyz, temp[46].www_, temp[46].xyz_;
 79:             MOV temp[1].w, input[0].___w;
 80:           ELSE;
 81:             MOV temp[1], const[0].zzzz;
 82:           ENDIF;
 83:         ENDIF;
 84:       ENDIF;
 85:     ENDIF;
 86:   ENDIF;
 87: ENDIF;
 88: MOV none., -temp[0].y___; [aluresult = (x >= 0)]
 89: IF aluresult.x___;
 90:   MOV temp[0], const[0].zzzz;
 91: ELSE;
 92:   MOV temp[0], temp[1];
 93: ENDIF;
 94: MOV_SAT output[0], temp[0];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[4]
     CMP temp[8].xyz, src0.000, src0.111, src0.xyy
     CMP temp[8].w, src0.0, src0.1, src0.y
  1: src0.xyz = temp[8], src0.w = temp[8]
     DP4_SAT temp[9].x, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  2: src0.xyz = temp[9]
     MAD temp[2].xyz, -|src0.xxx|, src0.111, src0.000
     MAD temp[2].w, -|src0.x|, src0.1, src0.0
  3: KIL temp[2];
  4: src0.xyz = input[4], src0.w = input[4]
     CMP temp[11].xyz, src0.000, src0.111, src0.zww
     CMP temp[11].w, src0.0, src0.1, src0.w
  5: src0.xyz = temp[11], src0.w = temp[11]
     DP4_SAT temp[12].x, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  6: src0.xyz = temp[12]
     MAD temp[4].xyz, -|src0.xxx|, src0.111, src0.000
     MAD temp[4].w, -|src0.x|, src0.1, src0.0
  7: KIL temp[4];
  8: src0.xyz = const[0], src0.w = input[3]
     MAD temp[13].x, src0.x__, src0.111, src0.w__
  9: src0.xyz = temp[13]
     FRC temp[14].x, src0.x__
 10: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[3], srcp.xyz = (src1 - src0)
     MAD aluresult, srcp.x__, src0.111, -src2.x__
      [aluresult = (result == 0)]
 11: IF aluresult.x___;
 12:   src0.xyz = input[0], src0.w = input[0]
       MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 13:   src0.xyz = input[3]
       MAD temp[1].w, src0.x, src0.1, src0.0
 14:   src0.xyz = const[0]
       MAD temp[0].y, src0._y_, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[4], srcp.xyz = (src1 - src0)
       MAD aluresult, srcp.x__, src0.111, -src2.x__
        [aluresult = (result == 0)]
 17:   IF aluresult.x___;
 18:     src0.xyz = const[0], src1.xyz = input[1]
         MAD temp[16].xy, src0.yy_, src1.xy_, src0.000
         MAD temp[16].w, src0.z, src1.x, src0.0
 19:     TXL temp[17], temp[16].xy_w, 2D[1];
 20:     src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[0], src1.w = input[0]
         MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000
         MAD temp[18].w, src0.w, src1.w, src0.0
 21:     src0.xyz = temp[18], src0.w = temp[18]
         MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 22:     src0.xyz = input[3], src0.w = temp[17]
         MAD temp[19].x, src0.w__, src0.x__, src0.000
 23:     src0.xyz = temp[19]
         MAD temp[1].w, src0.x, src0.1, src0.0
 24:     src0.xyz = const[0]
         MAD temp[0].y, src0._y_, src0.111, src0.000
 25:   ELSE;
 26:     src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[5], srcp.xyz = (src1 - src0)
         MAD aluresult, srcp.x__, src0.111, -src2.x__
          [aluresult = (result == 0)]
 27:     IF aluresult.x___;
 28:       src0.xyz = const[0], src1.xyz = input[1]
           MAD temp[20].xy, src0.yy_, src1.xy_, src0.000
           MAD temp[20].w, src0.z, src1.x, src0.0
 29:       TXL temp[21], temp[20].xy_w, 2D[1];
 30:       src0.xyz = temp[21], src0.w = const[0]
           MAD temp[22].xyz, src0.xyz, src0.111, src0.www
 31:       src0.xyz = temp[22], src1.xyz = temp[22], src2.xyz = const[9], srcp.xyz = (src1 + src0)
           DP3 temp[24].x, srcp.xyz, src2.xyz
 32:       src0.xyz = temp[24], src0.w = temp[21]
           MAD temp[1].xyz, src0.www, src0.xxx, src0.000
 33:       src0.xyz = input[3], src0.w = temp[21]
           MAD temp[25].x, src0.w__, src0.x__, src0.000
 34:       src0.xyz = temp[25], src0.w = input[0]
           MAD temp[26].x, src0.x__, src0.w__, src0.000
 35:       src0.xyz = temp[26]
           MAD temp[1].w, src0.x, src0.1, src0.0
 36:       src0.xyz = const[0]
           MAD temp[0].y, src0._y_, src0.111, src0.000
 37:     ELSE;
 38:       src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[7], srcp.xyz = (src1 - src0)
           MAD aluresult, srcp.x__, src0.111, -src2.x__
            [aluresult = (result == 0)]
 39:       IF aluresult.x___;
 40:         src0.xyz = const[0], src1.xyz = input[1]
             MAD temp[27].xy, src0.yy_, src1.xy_, src0.000
             MAD temp[27].w, src0.z, src1.x, src0.0
 41:         src0.xyz = const[0], src1.xyz = input[2]
             MAD temp[28].xy, src0.yy_, src1.xy_, src0.000
             MAD temp[28].w, src0.z, src1.x, src0.0
 42:         TXL temp[29], temp[27].xy_w, 2D[1];
 43:         TXL temp[30], temp[28].xy_w, 2D[0];
 44:         src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[30], src1.w = temp[30]
             MAD temp[31].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[31].w, src0.w, src1.w, src0.0
 45:         src0.xyz = temp[31], src0.w = temp[31], src1.xyz = input[0], src1.w = input[0]
             MAD temp[32].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[32].w, src0.w, src1.w, src0.0
 46:         src0.xyz = temp[32], src0.w = temp[32]
             MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 47:         src0.xyz = input[3], src0.w = temp[31]
             MAD temp[33].x, src0.w__, src0.x__, src0.000
 48:         src0.xyz = temp[33]
             MAD temp[1].w, src0.x, src0.1, src0.0
 49:         src0.xyz = const[0]
             MAD temp[0].y, src0._y_, src0.111, src0.000
 50:       ELSE;
 51:         src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[8], srcp.xyz = (src1 - src0)
             MAD aluresult, srcp.x__, src0.111, -src2.x__
              [aluresult = (result == 0)]
 52:         IF aluresult.x___;
 53:           src0.xyz = const[0], src1.xyz = input[1]
               MAD temp[34].xy, src0.yy_, src1.xy_, src0.000
               MAD temp[34].w, src0.z, src1.x, src0.0
 54:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 55:           src0.xyz = const[0], src1.xyz = input[2]
               MAD temp[36].xy, src0.yy_, src1.xy_, src0.000
               MAD temp[36].w, src0.z, src1.x, src0.0
 56:           TXL temp[37].w, temp[36].xy_w, 2D[0];
 57:           src0.xyz = temp[35], src1.xyz = input[0]
               MAD temp[38].xyz, src0.xyz, src1.xyz, src0.000
 58:           src0.xyz = input[3], src0.w = temp[37]
               MAD temp[39].x, src0.w__, src0.x__, src0.000
 59:           src0.xyz = temp[39]
               MAD temp[1].w, src0.x, src0.1, src0.0
 60:           src0.w = temp[37], src1.w = input[0]
               MAD temp[40].x, src0.w__, src1.w__, src0.000
 61:           src0.xyz = temp[40], src1.xyz = temp[38]
               MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000
 62:           src0.xyz = const[0]
               MAD temp[0].y, src0._y_, src0.111, src0.000
 63:         ELSE;
 64:           src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0)
               MAD temp[41].x, srcp.x__, src0.111, -src2.x__
 65:           src0.xyz = temp[41]
               MAD aluresult, -|src0.x__|, src0.111, src0.000
                [aluresult = (result >= 0)]
 66:           IF aluresult.x___;
 67:             src0.xyz = const[0]
                 MAD temp[3].x, src0.y__, src0.111, src0.000
 68:           ELSE;
 69:             src0.xyz = const[0]
                 MAD temp[3].x, src0.z__, src0.111, src0.000
 70:           ENDIF;
 71:           src0.xyz = temp[3]
               MAD temp[0].y, src0._x_, src0.111, src0.000
 72:           src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0)
               MAD aluresult, srcp.x__, src0.111, -src2.x__
                [aluresult = (result == 0)]
 73:           IF aluresult.x___;
 74:             src0.xyz = const[0], src1.xyz = input[1]
                 MAD temp[43].xy, src0.yy_, src1.xy_, src0.000
                 MAD temp[43].w, src0.z, src1.x, src0.0
 75:             TXL temp[44].xyz, temp[43].xy_w, 2D[1];
 76:             src0.xyz = temp[44], src1.xyz = const[0]
                 MAD temp[45].xyz, src0.xyz, src1.yyy, src1.zzz
                 MAD temp[45].w, src0.x, src1.z, src1.y
 77:             src0.xyz = temp[45], src0.w = temp[45], src1.xyz = input[0], src1.w = input[0]
                 MAD temp[46].xyz, src0.xyz, src1.xyz, src0.000
                 MAD temp[46].w, src0.w, src1.w, src0.0
 78:             src0.xyz = temp[46], src0.w = temp[46]
                 MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 79:             src0.w = input[0]
                 MAD temp[1].w, src0.w, src0.1, src0.0
 80:           ELSE;
 81:             src0.xyz = const[0]
                 MAD temp[1].xyz, src0.zzz, src0.111, src0.000
                 MAD temp[1].w, src0.z, src0.1, src0.0
 82:           ENDIF;
 83:         ENDIF;
 84:       ENDIF;
 85:     ENDIF;
 86:   ENDIF;
 87: ENDIF;
 88: src0.xyz = temp[0]
     MAD aluresult, -src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 89: IF aluresult.x___;
 90:   src0.xyz = const[0]
       MAD temp[0].xyz, src0.zzz, src0.111, src0.000
       MAD temp[0].w, src0.z, src0.1, src0.0
 91: ELSE;
 92:   src0.xyz = temp[1], src0.w = temp[1]
       MAD temp[0].xyz, src0.xyz, src0.111, src0.000
       MAD temp[0].w, src0.w, src0.1, src0.0
 93: ENDIF;
 94: src0.xyz = temp[0], src0.w = temp[0]
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[4]
     CMP temp[8].xyz, src0.000, src0.111, src0.xyy
     CMP temp[8].w, src0.0, src0.1, src0.y
  1: src0.xyz = temp[8], src0.w = temp[8]
     DP4_SAT temp[9].x, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  2: src0.xyz = temp[9]
     MAD temp[2].xyz, -|src0.xxx|, src0.111, src0.000
     MAD temp[2].w, -|src0.x|, src0.1, src0.0
  3: src0.xyz = input[4], src0.w = input[4]
     CMP temp[11].xyz, src0.000, src0.111, src0.zww
     CMP temp[11].w, src0.0, src0.1, src0.w
  4: src0.xyz = temp[11], src0.w = temp[11]
     DP4_SAT temp[12].x, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  5: src0.xyz = temp[12]
     MAD temp[4].xyz, -|src0.xxx|, src0.111, src0.000
     MAD temp[4].w, -|src0.x|, src0.1, src0.0
  6: src0.xyz = const[0], src0.w = input[3]
     MAD temp[13].x, src0.x__, src0.111, src0.w__
  7: src0.xyz = temp[13]
     FRC temp[14].x, src0.x__
  8: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[3], srcp.xyz = (src1 - src0)
     MAD aluresult, srcp.x__, src0.111, -src2.x__
      [aluresult = (result == 0)]
  9: BEGIN_TEX;
 10: KIL temp[2];
 11: KIL temp[4];
 12: IF aluresult.x___;
 13:   src0.xyz = input[0], src0.w = input[0], src1.xyz = input[3] SEM_WAIT
       MAD temp[1].xyz, src0.www, src0.xyz, src0.000
       MAD temp[1].w, src1.x, src0.1, src0.0
 14:   src0.xyz = const[0] SEM_WAIT
       MAD temp[0].y, src0._y_, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[4], srcp.xyz = (src1 - src0) SEM_WAIT
       MAD aluresult, srcp.x__, src0.111, -src2.x__
        [aluresult = (result == 0)]
 17:   IF aluresult.x___;
 18:     src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
         MAD temp[16].xy, src0.yy_, src1.xy_, src0.000
         MAD temp[16].w, src0.z, src1.x, src0.0
 19:     BEGIN_TEX;
 20:     TXL temp[17], temp[16].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 21:     src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
         MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000
         MAD temp[18].w, src0.w, src1.w, src0.0
 22:     src0.xyz = temp[18], src0.w = temp[18] SEM_WAIT
         MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 23:     src0.xyz = const[0], src0.w = temp[17], src1.xyz = input[3] SEM_WAIT
         MAD temp[0].y, src0._y_, src0.111, src0.000
         MAD temp[19].w, src0.w, src1.x, src0.0
 24:     src0.xyz = temp[19], src0.w = temp[19] SEM_WAIT
         MAD temp[1].w, src0.w, src0.1, src0.0
 25:   ELSE;
 26:     src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[5], srcp.xyz = (src1 - src0) SEM_WAIT
         MAD aluresult, srcp.x__, src0.111, -src2.x__
          [aluresult = (result == 0)]
 27:     IF aluresult.x___;
 28:       src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
           MAD temp[20].xy, src0.yy_, src1.xy_, src0.000
           MAD temp[20].w, src0.z, src1.x, src0.0
 29:       BEGIN_TEX;
 30:       TXL temp[21], temp[20].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 31:       src0.xyz = temp[21], src0.w = const[0] SEM_WAIT
           MAD temp[22].xyz, src0.xyz, src0.111, src0.www
 32:       src0.xyz = temp[22], src1.xyz = temp[22], src2.xyz = const[9], srcp.xyz = (src1 + src0) SEM_WAIT
           DP3 temp[24].x, srcp.xyz, src2.xyz
 33:       src0.xyz = temp[24], src0.w = temp[21] SEM_WAIT
           MAD temp[1].xyz, src0.www, src0.xxx, src0.000
 34:       src0.xyz = const[0], src0.w = temp[21], src1.xyz = input[3] SEM_WAIT
           MAD temp[0].y, src0._y_, src0.111, src0.000
           MAD temp[25].w, src0.w, src1.x, src0.0
 35:       src0.xyz = temp[25], src0.w = input[0], src1.w = temp[25] SEM_WAIT
           MAD temp[26].x, src1.w__, src0.w__, src0.000
 36:       src0.xyz = temp[26] SEM_WAIT
           MAD temp[1].w, src0.x, src0.1, src0.0
 37:     ELSE;
 38:       src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[7], srcp.xyz = (src1 - src0) SEM_WAIT
           MAD aluresult, srcp.x__, src0.111, -src2.x__
            [aluresult = (result == 0)]
 39:       IF aluresult.x___;
 40:         src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
             MAD temp[27].xy, src0.yy_, src1.xy_, src0.000
             MAD temp[27].w, src0.z, src1.x, src0.0
 41:         src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT
             MAD temp[28].xy, src0.yy_, src1.xy_, src0.000
             MAD temp[28].w, src0.z, src1.x, src0.0
 42:         BEGIN_TEX;
 43:         TXL temp[29], temp[27].xy_w, 2D[1];
 44:         TXL temp[30], temp[28].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
 45:         src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[30], src1.w = temp[30] SEM_WAIT
             MAD temp[31].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[31].w, src0.w, src1.w, src0.0
 46:         src0.xyz = temp[31], src0.w = temp[31], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
             MAD temp[32].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[32].w, src0.w, src1.w, src0.0
 47:         src0.xyz = temp[32], src0.w = temp[32] SEM_WAIT
             MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 48:         src0.xyz = const[0], src0.w = temp[31], src1.xyz = input[3] SEM_WAIT
             MAD temp[0].y, src0._y_, src0.111, src0.000
             MAD temp[33].w, src0.w, src1.x, src0.0
 49:         src0.xyz = temp[33], src0.w = temp[33] SEM_WAIT
             MAD temp[1].w, src0.w, src0.1, src0.0
 50:       ELSE;
 51:         src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[8], srcp.xyz = (src1 - src0) SEM_WAIT
             MAD aluresult, srcp.x__, src0.111, -src2.x__
              [aluresult = (result == 0)]
 52:         IF aluresult.x___;
 53:           src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
               MAD temp[34].xy, src0.yy_, src1.xy_, src0.000
               MAD temp[34].w, src0.z, src1.x, src0.0
 54:           src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT
               MAD temp[36].xy, src0.yy_, src1.xy_, src0.000
               MAD temp[36].w, src0.z, src1.x, src0.0
 55:           BEGIN_TEX;
 56:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 57:           TXL temp[37].w, temp[36].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
 58:           src0.xyz = temp[35], src0.w = temp[37], src1.xyz = input[0], src2.xyz = input[3] SEM_WAIT
               MAD temp[38].xyz, src0.xyz, src1.xyz, src0.000
               MAD temp[39].w, src0.w, src2.x, src0.0
 59:           src0.xyz = const[0], src0.w = temp[37], src1.w = input[0] SEM_WAIT
               MAD temp[0].y, src0._y_, src0.111, src0.000
               MAD temp[40].w, src0.w, src1.w, src0.0
 60:           src0.xyz = temp[40], src0.w = temp[40], src1.xyz = temp[38], src1.w = temp[39] SEM_WAIT
               MAD temp[1].xyz, src0.www, src1.xyz, src0.000
               MAD temp[1].w, src1.w, src0.1, src0.0
 61:         ELSE;
 62:           src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT
               MAD temp[41].x, srcp.x__, src0.111, -src2.x__
 63:           src0.xyz = temp[41] SEM_WAIT
               MAD aluresult, -|src0.x__|, src0.111, src0.000
                [aluresult = (result >= 0)]
 64:           IF aluresult.x___;
 65:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[3].x, src0.y__, src0.111, src0.000
 66:           ELSE;
 67:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[3].x, src0.z__, src0.111, src0.000
 68:           ENDIF;
 69:           src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT
               MAD aluresult, srcp.x__, src0.111, -src2.x__
                [aluresult = (result == 0)]
 70:           src0.xyz = temp[3] SEM_WAIT
               MAD temp[0].y, src0._x_, src0.111, src0.000
 71:           IF aluresult.x___;
 72:             src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
                 MAD temp[43].xy, src0.yy_, src1.xy_, src0.000
                 MAD temp[43].w, src0.z, src1.x, src0.0
 73:             BEGIN_TEX;
 74:             TXL temp[44].xyz, temp[43].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 75:             src0.xyz = temp[44], src1.xyz = const[0] SEM_WAIT
                 MAD temp[45].xyz, src0.xyz, src1.yyy, src1.zzz
                 MAD temp[45].w, src0.x, src1.z, src1.y
 76:             src0.xyz = temp[45], src0.w = temp[45], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
                 MAD temp[46].xyz, src0.xyz, src1.xyz, src0.000
                 MAD temp[46].w, src0.w, src1.w, src0.0
 77:             src0.xyz = temp[46], src0.w = temp[46], src1.w = input[0] SEM_WAIT
                 MAD temp[1].xyz, src0.www, src0.xyz, src0.000
                 MAD temp[1].w, src1.w, src0.1, src0.0
 78:           ELSE;
 79:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[1].xyz, src0.zzz, src0.111, src0.000
                 MAD temp[1].w, src0.z, src0.1, src0.0
 80:           ENDIF;
 81:         ENDIF;
 82:       ENDIF;
 83:     ENDIF;
 84:   ENDIF;
 85: ENDIF;
 86: src0.xyz = temp[0] SEM_WAIT
     MAD aluresult, -src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 87: IF aluresult.x___;
 88:   src0.xyz = const[0] SEM_WAIT
       MAD temp[0].xyz, src0.zzz, src0.111, src0.000
       MAD temp[0].w, src0.z, src0.1, src0.0
 89: ELSE;
 90:   src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT
       MAD temp[0].xyz, src0.xyz, src0.111, src0.000
       MAD temp[0].w, src0.w, src0.1, src0.0
 91: ENDIF;
 92: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[4]
     CMP temp[8].xyz, src0.000, src0.111, src0.xyy
     CMP temp[8].w, src0.0, src0.1, src0.y
  1: src0.xyz = temp[8], src0.w = temp[8]
     DP4_SAT temp[9].x, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  2: src0.xyz = temp[9]
     MAD temp[2].xyz, -|src0.xxx|, src0.111, src0.000
     MAD temp[2].w, -|src0.x|, src0.1, src0.0
  3: src0.xyz = input[4], src0.w = input[4]
     CMP temp[11].xyz, src0.000, src0.111, src0.zww
     CMP temp[11].w, src0.0, src0.1, src0.w
  4: src0.xyz = temp[11], src0.w = temp[11]
     DP4_SAT temp[12].x, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  5: src0.xyz = temp[12]
     MAD temp[4].xyz, -|src0.xxx|, src0.111, src0.000
     MAD temp[4].w, -|src0.x|, src0.1, src0.0
  6: src0.xyz = const[0], src0.w = input[3]
     MAD temp[13].x, src0.x__, src0.111, src0.w__
  7: src0.xyz = temp[13]
     FRC temp[14].x, src0.x__
  8: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[3], srcp.xyz = (src1 - src0)
     MAD aluresult, srcp.x__, src0.111, -src2.x__
      [aluresult = (result == 0)]
  9: BEGIN_TEX;
 10: KIL temp[2];
 11: KIL temp[4];
 12: IF aluresult.x___;
 13:   src0.xyz = input[0], src0.w = input[0], src1.xyz = input[3] SEM_WAIT
       MAD temp[1].xyz, src0.www, src0.xyz, src0.000
       MAD temp[1].w, src1.x, src0.1, src0.0
 14:   src0.xyz = const[0] SEM_WAIT
       MAD temp[0].y, src0._y_, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[4], srcp.xyz = (src1 - src0) SEM_WAIT
       MAD aluresult, srcp.x__, src0.111, -src2.x__
        [aluresult = (result == 0)]
 17:   IF aluresult.x___;
 18:     src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
         MAD temp[16].xy, src0.yy_, src1.xy_, src0.000
         MAD temp[16].w, src0.z, src1.x, src0.0
 19:     BEGIN_TEX;
 20:     TXL temp[17], temp[16].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 21:     src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
         MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000
         MAD temp[18].w, src0.w, src1.w, src0.0
 22:     src0.xyz = temp[18], src0.w = temp[18] SEM_WAIT
         MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 23:     src0.xyz = const[0], src0.w = temp[17], src1.xyz = input[3] SEM_WAIT
         MAD temp[0].y, src0._y_, src0.111, src0.000
         MAD temp[19].w, src0.w, src1.x, src0.0
 24:     src0.w = temp[19] SEM_WAIT
         MAD temp[1].w, src0.w, src0.1, src0.0
 25:   ELSE;
 26:     src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[5], srcp.xyz = (src1 - src0) SEM_WAIT
         MAD aluresult, srcp.x__, src0.111, -src2.x__
          [aluresult = (result == 0)]
 27:     IF aluresult.x___;
 28:       src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
           MAD temp[20].xy, src0.yy_, src1.xy_, src0.000
           MAD temp[20].w, src0.z, src1.x, src0.0
 29:       BEGIN_TEX;
 30:       TXL temp[21], temp[20].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 31:       src0.xyz = temp[21], src0.w = const[0] SEM_WAIT
           MAD temp[22].xyz, src0.xyz, src0.111, src0.www
 32:       src0.xyz = temp[22], src1.xyz = temp[22], src2.xyz = const[9], srcp.xyz = (src1 + src0) SEM_WAIT
           DP3 temp[24].x, srcp.xyz, src2.xyz
 33:       src0.xyz = temp[24], src0.w = temp[21] SEM_WAIT
           MAD temp[1].xyz, src0.www, src0.xxx, src0.000
 34:       src0.xyz = const[0], src0.w = temp[21], src1.xyz = input[3] SEM_WAIT
           MAD temp[0].y, src0._y_, src0.111, src0.000
           MAD temp[25].w, src0.w, src1.x, src0.0
 35:       src0.w = input[0], src1.w = temp[25] SEM_WAIT
           MAD temp[26].x, src1.w__, src0.w__, src0.000
 36:       src0.xyz = temp[26] SEM_WAIT
           MAD temp[1].w, src0.x, src0.1, src0.0
 37:     ELSE;
 38:       src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[7], srcp.xyz = (src1 - src0) SEM_WAIT
           MAD aluresult, srcp.x__, src0.111, -src2.x__
            [aluresult = (result == 0)]
 39:       IF aluresult.x___;
 40:         src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
             MAD temp[27].xy, src0.yy_, src1.xy_, src0.000
             MAD temp[27].w, src0.z, src1.x, src0.0
 41:         src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT
             MAD temp[28].xy, src0.yy_, src1.xy_, src0.000
             MAD temp[28].w, src0.z, src1.x, src0.0
 42:         BEGIN_TEX;
 43:         TXL temp[29], temp[27].xy_w, 2D[1];
 44:         TXL temp[30], temp[28].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
 45:         src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[30], src1.w = temp[30] SEM_WAIT
             MAD temp[31].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[31].w, src0.w, src1.w, src0.0
 46:         src0.xyz = temp[31], src0.w = temp[31], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
             MAD temp[32].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[32].w, src0.w, src1.w, src0.0
 47:         src0.xyz = temp[32], src0.w = temp[32] SEM_WAIT
             MAD temp[1].xyz, src0.www, src0.xyz, src0.000
 48:         src0.xyz = const[0], src0.w = temp[31], src1.xyz = input[3] SEM_WAIT
             MAD temp[0].y, src0._y_, src0.111, src0.000
             MAD temp[33].w, src0.w, src1.x, src0.0
 49:         src0.w = temp[33] SEM_WAIT
             MAD temp[1].w, src0.w, src0.1, src0.0
 50:       ELSE;
 51:         src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[8], srcp.xyz = (src1 - src0) SEM_WAIT
             MAD aluresult, srcp.x__, src0.111, -src2.x__
              [aluresult = (result == 0)]
 52:         IF aluresult.x___;
 53:           src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
               MAD temp[34].xy, src0.yy_, src1.xy_, src0.000
               MAD temp[34].w, src0.z, src1.x, src0.0
 54:           src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT
               MAD temp[36].xy, src0.yy_, src1.xy_, src0.000
               MAD temp[36].w, src0.z, src1.x, src0.0
 55:           BEGIN_TEX;
 56:           TXL temp[35].xyz, temp[34].xy_w, 2D[1];
 57:           TXL temp[37].w, temp[36].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
 58:           src0.xyz = temp[35], src0.w = temp[37], src1.xyz = input[0], src2.xyz = input[3] SEM_WAIT
               MAD temp[38].xyz, src0.xyz, src1.xyz, src0.000
               MAD temp[39].w, src0.w, src2.x, src0.0
 59:           src0.xyz = const[0], src0.w = temp[37], src1.w = input[0] SEM_WAIT
               MAD temp[0].y, src0._y_, src0.111, src0.000
               MAD temp[40].w, src0.w, src1.w, src0.0
 60:           src0.w = temp[40], src1.xyz = temp[38], src1.w = temp[39] SEM_WAIT
               MAD temp[1].xyz, src0.www, src1.xyz, src0.000
               MAD temp[1].w, src1.w, src0.1, src0.0
 61:         ELSE;
 62:           src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT
               MAD temp[41].x, srcp.x__, src0.111, -src2.x__
 63:           src0.xyz = temp[41] SEM_WAIT
               MAD aluresult, -|src0.x__|, src0.111, src0.000
                [aluresult = (result >= 0)]
 64:           IF aluresult.x___;
 65:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[3].x, src0.y__, src0.111, src0.000
 66:           ELSE;
 67:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[3].x, src0.z__, src0.111, src0.000
 68:           ENDIF;
 69:           src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT
               MAD aluresult, srcp.x__, src0.111, -src2.x__
                [aluresult = (result == 0)]
 70:           src0.xyz = temp[3] SEM_WAIT
               MAD temp[0].y, src0._x_, src0.111, src0.000
 71:           IF aluresult.x___;
 72:             src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
                 MAD temp[43].xy, src0.yy_, src1.xy_, src0.000
                 MAD temp[43].w, src0.z, src1.x, src0.0
 73:             BEGIN_TEX;
 74:             TXL temp[44].xyz, temp[43].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 75:             src0.xyz = temp[44], src1.xyz = const[0] SEM_WAIT
                 MAD temp[45].xyz, src0.xyz, src1.yyy, src1.zzz
                 MAD temp[45].w, src0.x, src1.z, src1.y
 76:             src0.xyz = temp[45], src0.w = temp[45], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
                 MAD temp[46].xyz, src0.xyz, src1.xyz, src0.000
                 MAD temp[46].w, src0.w, src1.w, src0.0
 77:             src0.xyz = temp[46], src0.w = temp[46], src1.w = input[0] SEM_WAIT
                 MAD temp[1].xyz, src0.www, src0.xyz, src0.000
                 MAD temp[1].w, src1.w, src0.1, src0.0
 78:           ELSE;
 79:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[1].xyz, src0.zzz, src0.111, src0.000
                 MAD temp[1].w, src0.z, src0.1, src0.0
 80:           ENDIF;
 81:         ENDIF;
 82:       ENDIF;
 83:     ENDIF;
 84:   ENDIF;
 85: ENDIF;
 86: src0.xyz = temp[0] SEM_WAIT
     MAD aluresult, -src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 87: IF aluresult.x___;
 88:   src0.xyz = const[0] SEM_WAIT
       MAD temp[0].xyz, src0.zzz, src0.111, src0.000
       MAD temp[0].w, src0.z, src0.1, src0.0
 89: ELSE;
 90:   src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT
       MAD temp[0].xyz, src0.xyz, src0.111, src0.000
       MAD temp[0].w, src0.w, src0.1, src0.0
 91: ENDIF;
 92: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[4]
     CMP temp[5].xyz, src0.000, src0.111, src0.xyy
     CMP temp[1].w, src0.0, src0.1, src0.y
  1: src0.xyz = temp[5], src0.w = temp[1]
     DP4_SAT temp[1].z, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  2: src0.xyz = temp[1]
     MAD temp[5].xyz, -|src0.zzz|, src0.111, src0.000
     MAD temp[5].w, -|src0.z|, src0.1, src0.0
  3: src0.xyz = input[4], src0.w = input[4]
     CMP temp[4].xyz, src0.000, src0.111, src0.zww
     CMP temp[1].w, src0.0, src0.1, src0.w
  4: src0.xyz = temp[4], src0.w = temp[1]
     DP4_SAT temp[1].z, src0.xyz, src0.xyz
     DP4_SAT, src0.w, src0.w
  5: src0.xyz = temp[1]
     MAD temp[4].xyz, -|src0.zzz|, src0.111, src0.000
     MAD temp[4].w, -|src0.z|, src0.1, src0.0
  6: src0.xyz = const[0], src0.w = input[3]
     MAD temp[6].x, src0.x__, src0.1__, src0.w__
  7: src0.xyz = temp[6]
     FRC temp[7].x, src0.x__
  8: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[3], srcp.xyz = (src1 - src0)
     MAD aluresult, srcp.x__, src0.111, -src2.x__
      [aluresult = (result == 0)]
  9: BEGIN_TEX;
 10: KIL temp[5];
 11: KIL temp[4];
 12: IF aluresult.x___;
 13:   src0.xyz = input[0], src0.w = input[0], src1.xyz = input[3] SEM_WAIT
       MAD temp[4].xyz, src0.www, src0.xyz, src0.000
       MAD temp[1].w, src1.x, src0.1, src0.0
 14:   src0.xyz = const[0] SEM_WAIT
       MAD temp[1].z, src0.__y, src0.__1, src0.__0
 15: ELSE;
 16:   src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[4], srcp.xyz = (src1 - src0) SEM_WAIT
       MAD aluresult, srcp.x__, src0.111, -src2.x__
        [aluresult = (result == 0)]
 17:   IF aluresult.x___;
 18:     src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
         MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_
         MAD temp[5].w, src0.z, src1.x, src0.0
 19:     BEGIN_TEX;
 20:     TXL temp[5], temp[5].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 21:     src0.xyz = temp[5], src0.w = temp[5], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
         MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
         MAD temp[2].w, src0.w, src1.w, src0.0
 22:     src0.xyz = temp[8], src0.w = temp[2] SEM_WAIT
         MAD temp[4].xyz, src0.www, src0.xyz, src0.000
 23:     src0.xyz = const[0], src0.w = temp[5], src1.xyz = input[3] SEM_WAIT
         MAD temp[1].z, src0.__y, src0.__1, src0.__0
         MAD temp[2].w, src0.w, src1.x, src0.0
 24:     src0.w = temp[2] SEM_WAIT
         MAD temp[1].w, src0.w, src0.1, src0.0
 25:   ELSE;
 26:     src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[5], srcp.xyz = (src1 - src0) SEM_WAIT
         MAD aluresult, srcp.x__, src0.111, -src2.x__
          [aluresult = (result == 0)]
 27:     IF aluresult.x___;
 28:       src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
           MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_
           MAD temp[5].w, src0.z, src1.x, src0.0
 29:       BEGIN_TEX;
 30:       TXL temp[5], temp[5].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 31:       src0.xyz = temp[5], src0.w = const[0] SEM_WAIT
           MAD temp[8].xyz, src0.xyz, src0.111, src0.www
 32:       src0.xyz = temp[8], src1.xyz = temp[8], src2.xyz = const[9], srcp.xyz = (src1 + src0) SEM_WAIT
           DP3 temp[2].z, srcp.xyz, src2.xyz
 33:       src0.xyz = temp[2], src0.w = temp[5] SEM_WAIT
           MAD temp[4].xyz, src0.www, src0.zzz, src0.000
 34:       src0.xyz = const[0], src0.w = temp[5], src1.xyz = input[3] SEM_WAIT
           MAD temp[1].z, src0.__y, src0.__1, src0.__0
           MAD temp[2].w, src0.w, src1.x, src0.0
 35:       src0.w = input[0], src1.w = temp[2] SEM_WAIT
           MAD temp[2].z, src1.__w, src0.__w, src0.__0
 36:       src0.xyz = temp[2] SEM_WAIT
           MAD temp[1].w, src0.z, src0.1, src0.0
 37:     ELSE;
 38:       src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[7], srcp.xyz = (src1 - src0) SEM_WAIT
           MAD aluresult, srcp.x__, src0.111, -src2.x__
            [aluresult = (result == 0)]
 39:       IF aluresult.x___;
 40:         src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
             MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_
             MAD temp[5].w, src0.z, src1.x, src0.0
 41:         src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT
             MAD temp[6].yz, src0._yy, src1._xy, src0._00
             MAD temp[6].w, src0.z, src1.x, src0.0
 42:         BEGIN_TEX;
 43:         TXL temp[5], temp[5].xy_w, 2D[1];
 44:         TXL temp[8], temp[6].yz_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
 45:         src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[8], src1.w = temp[8] SEM_WAIT
             MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[2].w, src0.w, src1.w, src0.0
 46:         src0.xyz = temp[5], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
             MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
             MAD temp[4].w, src0.w, src1.w, src0.0
 47:         src0.xyz = temp[5], src0.w = temp[4] SEM_WAIT
             MAD temp[4].xyz, src0.www, src0.xyz, src0.000
 48:         src0.xyz = const[0], src0.w = temp[2], src1.xyz = input[3] SEM_WAIT
             MAD temp[1].z, src0.__y, src0.__1, src0.__0
             MAD temp[2].w, src0.w, src1.x, src0.0
 49:         src0.w = temp[2] SEM_WAIT
             MAD temp[1].w, src0.w, src0.1, src0.0
 50:       ELSE;
 51:         src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[8], srcp.xyz = (src1 - src0) SEM_WAIT
             MAD aluresult, srcp.x__, src0.111, -src2.x__
              [aluresult = (result == 0)]
 52:         IF aluresult.x___;
 53:           src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
               MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_
               MAD temp[5].w, src0.z, src1.x, src0.0
 54:           src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT
               MAD temp[2].xy, src0.yy_, src1.xy_, src0.00_
               MAD temp[2].w, src0.z, src1.x, src0.0
 55:           BEGIN_TEX;
 56:           TXL temp[5].xyz, temp[5].xy_w, 2D[1];
 57:           TXL temp[2].w, temp[2].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE;
 58:           src0.xyz = temp[5], src0.w = temp[2], src1.xyz = input[0], src2.xyz = input[3] SEM_WAIT
               MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
               MAD temp[3].w, src0.w, src2.x, src0.0
 59:           src0.xyz = const[0], src0.w = temp[2], src1.w = input[0] SEM_WAIT
               MAD temp[1].z, src0.__y, src0.__1, src0.__0
               MAD temp[2].w, src0.w, src1.w, src0.0
 60:           src0.w = temp[2], src1.xyz = temp[2], src1.w = temp[3] SEM_WAIT
               MAD temp[4].xyz, src0.www, src1.xyz, src0.000
               MAD temp[1].w, src1.w, src0.1, src0.0
 61:         ELSE;
 62:           src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT
               MAD temp[2].x, srcp.x__, src0.1__, -src2.x__
 63:           src0.xyz = temp[2] SEM_WAIT
               MAD aluresult, -|src0.x__|, src0.111, src0.000
                [aluresult = (result >= 0)]
 64:           IF aluresult.x___;
 65:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[2].x, src0.y__, src0.1__, src0.0__
 66:           ELSE;
 67:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[2].x, src0.z__, src0.1__, src0.0__
 68:           ENDIF;
 69:           src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT
               MAD aluresult, srcp.x__, src0.111, -src2.x__
                [aluresult = (result == 0)]
 70:           src0.xyz = temp[2] SEM_WAIT
               MAD temp[1].z, src0.__x, src0.__1, src0.__0
 71:           IF aluresult.x___;
 72:             src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT
                 MAD temp[2].xy, src0.yy_, src1.xy_, src0.00_
                 MAD temp[2].w, src0.z, src1.x, src0.0
 73:             BEGIN_TEX;
 74:             TXL temp[2].xyz, temp[2].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE;
 75:             src0.xyz = temp[2], src1.xyz = const[0] SEM_WAIT
                 MAD temp[2].xyz, src0.xyz, src1.yyy, src1.zzz
                 MAD temp[2].w, src0.x, src1.z, src1.y
 76:             src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
                 MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
                 MAD temp[2].w, src0.w, src1.w, src0.0
 77:             src0.xyz = temp[2], src0.w = temp[2], src1.w = input[0] SEM_WAIT
                 MAD temp[4].xyz, src0.www, src0.xyz, src0.000
                 MAD temp[1].w, src1.w, src0.1, src0.0
 78:           ELSE;
 79:             src0.xyz = const[0] SEM_WAIT
                 MAD temp[4].xyz, src0.zzz, src0.111, src0.000
                 MAD temp[1].w, src0.z, src0.1, src0.0
 80:           ENDIF;
 81:         ENDIF;
 82:       ENDIF;
 83:     ENDIF;
 84:   ENDIF;
 85: ENDIF;
 86: src0.xyz = temp[1] SEM_WAIT
     MAD aluresult, -src0.z__, src0.111, src0.000
      [aluresult = (result >= 0)]
 87: IF aluresult.x___;
 88:   src0.xyz = const[0] SEM_WAIT
       MAD temp[0].xyz, src0.zzz, src0.111, src0.000
       MAD temp[0].w, src0.z, src0.1, src0.0
 89: ELSE;
 90:   src0.xyz = temp[4], src0.w = temp[1] SEM_WAIT
       MAD temp[0].xyz, src0.xyz, src0.111, src0.000
       MAD temp[0].w, src0.w, src0.1, src0.0
 91: ENDIF;
 92: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0490:rgb_A_src:0 0/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c10016:CMP dest:1 alp_A_src:0 0 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x08120058:CMP dest:5 rgb_C_src:0 R/G/G 0 alp_C_src:0 G 0

1	0:CMN_INST   0x00182000:ALU     wmask: B omask: NONE
	1:RGB_ADDR   0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0060c001:DP dest:0 alp_A_src:0 A 0 alp_B_src:0 A 0 targ 0 w:0
	5 RGBA_INST: 0x00000012:DP4 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

2	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db1a48:rgb_A_src:0 B/B/B 3 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c68050:MAD dest:5 alp_A_src:0 B 3 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

3	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0490:rgb_A_src:0 0/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c10016:CMP dest:1 alp_A_src:0 0 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x18368048:CMP dest:4 rgb_C_src:0 B/A/A 0 alp_C_src:0 A 0

4	0:CMN_INST   0x00182000:ALU     wmask: B omask: NONE
	1:RGB_ADDR   0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0060c001:DP dest:0 alp_A_src:0 A 0 alp_B_src:0 A 0 targ 0 w:0
	5 RGBA_INST: 0x00000012:DP4 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db1a48:rgb_A_src:0 B/B/B 3 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c68040:MAD dest:4 alp_A_src:0 B 3 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

6	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0048c060:MAD dest:6 rgb_C_src:0 A/0/0 0 alp_C_src:0 R 0

7	0:CMN_INST   0x00000a00:ALU   NOP  wmask: R omask: NONE
	1:RGB_ADDR   0x08020006:Addr0: 6t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000079:FRC dest:7 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

8	0:CMN_INST   0x00000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x50301807:Addr0: 7t, Addr1: 6t, Addr2: 3c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82010:MAD dest:1 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

9	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00800000: id: 0 op:TEXKILL, ,  SCALED
	2:TEX_ADDR:  0x0000e405: src: 5 R/G/B/A dst: 0 R/R/R/R
	3:TEX_DXDY:  0x00000000

10	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02800000: id: 0 op:TEXKILL, ACQ,  SCALED
	2:TEX_ADDR:  0x0000e404: src: 4 R/G/B/A dst: 0 R/R/R/R
	3:TEX_DXDY:  0x00000000

11	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC
	3:FC_ADDR    0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0

12	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

13	0:CMN_INST   0x00002004:ALU TEX_WAIT    wmask: B omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

14	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 80
	3:FC_ADDR    0x00500000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 80, JMP_GLBL: 0

15	0:CMN_INST   0x00000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x50401807:Addr0: 7t, Addr1: 6t, Addr2: 4c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82020:MAD dest:2 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

16	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 24 IGN_UNC
	3:FC_ADDR    0x00180000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 24, JMP_GLBL: 0

17	0:CMN_INST   0x00005804:ALU TEX_WAIT    wmask: ARG omask: NONE
	1:RGB_ADDR   0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

18	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x03410000: id: 1 op:LOD, ACQ,  SCALED
	2:TEX_ADDR:  0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A
	3:TEX_DXDY:  0x00000000

19	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490080:MAD dest:8 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

20	0:CMN_INST   0x00003804:ALU TEX_WAIT    wmask: RGB omask: NONE
	1:RGB_ADDR   0x08020008:Addr0: 8t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

21	0:CMN_INST   0x00006004:ALU TEX_WAIT    wmask: AB omask: NONE
	1:RGB_ADDR   0x08000d00:Addr0: 0c, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x0008c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

22	0:CMN_INST   0x00004004:ALU TEX_WAIT    wmask: A omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

23	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 79
	3:FC_ADDR    0x004f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 79, JMP_GLBL: 0

24	0:CMN_INST   0x00000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x50501807:Addr0: 7t, Addr1: 6t, Addr2: 5c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

25	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 35 IGN_UNC
	3:FC_ADDR    0x00230000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 35, JMP_GLBL: 0

26	0:CMN_INST   0x00005804:ALU TEX_WAIT    wmask: ARG omask: NONE
	1:RGB_ADDR   0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

27	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x03410000: id: 1 op:LOD, ACQ,  SCALED
	2:TEX_ADDR:  0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A
	3:TEX_DXDY:  0x00000000

28	0:CMN_INST   0x00003a04:ALU TEX_WAIT  NOP  wmask: RGB omask: NONE
	1:RGB_ADDR   0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0036c080:MAD dest:8 rgb_C_src:0 A/A/A 0 alp_C_src:0 R 0

29	0:CMN_INST   0x00002004:ALU TEX_WAIT    wmask: B omask: NONE
	1:RGB_ADDR   0x90902008:Addr0: 8t, Addr1: 8t, Addr2: 9c, srcp:2
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00444223:rgb_A_src:3 R/G/B 0 rgb_B_src:2 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000021:DP3 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

30	0:CMN_INST   0x00003804:ALU TEX_WAIT    wmask: RGB omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0049036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 B/B/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

31	0:CMN_INST   0x00006004:ALU TEX_WAIT    wmask: AB omask: NONE
	1:RGB_ADDR   0x08000d00:Addr0: 0c, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x0008c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

32	0:CMN_INST   0x00002004:ALU TEX_WAIT    wmask: B omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000800:Addr0: 0t, Addr1: 2t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00720391:rgb_A_src:1 0/0/A 0 rgb_B_src:0 0/0/A 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

33	0:CMN_INST   0x00004004:ALU TEX_WAIT    wmask: A omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00c08010:MAD dest:1 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

34	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 78
	3:FC_ADDR    0x004e0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 78, JMP_GLBL: 0

35	0:CMN_INST   0x00000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x50701807:Addr0: 7t, Addr1: 6t, Addr2: 7c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

36	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 47 IGN_UNC
	3:FC_ADDR    0x002f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 47, JMP_GLBL: 0

37	0:CMN_INST   0x00005804:ALU TEX_WAIT    wmask: ARG omask: NONE
	1:RGB_ADDR   0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

38	0:CMN_INST   0x00007004:ALU TEX_WAIT    wmask: AGB omask: NONE
	1:RGB_ADDR   0x08000900:Addr0: 0c, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00222130:rgb_A_src:0 0/G/G 0 rgb_B_src:1 0/R/G 0 targ: 0
	4 ALPHA_INST:0x00088060:MAD dest:6 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

39	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x01410000: id: 1 op:LOD, ,  SCALED
	2:TEX_ADDR:  0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A
	3:TEX_DXDY:  0x00000000

40	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x03400000: id: 0 op:LOD, ACQ,  SCALED
	2:TEX_ADDR:  0xe408f906: src: 6 G/B/A/A dst: 8 R/G/B/A
	3:TEX_DXDY:  0x00000000

41	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08002005:Addr0: 5t, Addr1: 8t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08002005:Addr0: 5t, Addr1: 8t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

42	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c040:MAD dest:4 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

43	0:CMN_INST   0x00003804:ALU TEX_WAIT    wmask: RGB omask: NONE
	1:RGB_ADDR   0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

44	0:CMN_INST   0x00006004:ALU TEX_WAIT    wmask: AB omask: NONE
	1:RGB_ADDR   0x08000d00:Addr0: 0c, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x0008c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

45	0:CMN_INST   0x00004004:ALU TEX_WAIT    wmask: A omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

46	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 77
	3:FC_ADDR    0x004d0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 77, JMP_GLBL: 0

47	0:CMN_INST   0x00000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x50801807:Addr0: 7t, Addr1: 6t, Addr2: 8c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

48	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 57 IGN_UNC
	3:FC_ADDR    0x00390000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 57, JMP_GLBL: 0

49	0:CMN_INST   0x00005804:ALU TEX_WAIT    wmask: ARG omask: NONE
	1:RGB_ADDR   0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

50	0:CMN_INST   0x00005804:ALU TEX_WAIT    wmask: ARG omask: NONE
	1:RGB_ADDR   0x08000900:Addr0: 0c, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00088020:MAD dest:2 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

51	0:CMN_INST   0x00003803:TEX     wmask: RGB omask: NONE
	1:TEX_INST:  0x01410000: id: 1 op:LOD, ,  SCALED
	2:TEX_ADDR:  0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A
	3:TEX_DXDY:  0x00000000

52	0:CMN_INST   0x00004007:TEX TEX_WAIT    wmask: A omask: NONE
	1:TEX_INST:  0x03400000: id: 0 op:LOD, ACQ,  SCALED
	2:TEX_ADDR:  0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A
	3:TEX_DXDY:  0x00000000

53	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x00300005:Addr0: 5t, Addr1: 0t, Addr2: 3t, srcp:0
	2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0010c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

54	0:CMN_INST   0x00006004:ALU TEX_WAIT    wmask: AB omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

55	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000880:Addr0: 128t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000c02:Addr0: 2t, Addr1: 3t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0044236c:rgb_A_src:0 A/A/A 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00c0d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

56	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 76
	3:FC_ADDR    0x004c0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 76, JMP_GLBL: 0

57	0:CMN_INST   0x00000804:ALU TEX_WAIT    wmask: R omask: NONE
	1:RGB_ADDR   0x50601807:Addr0: 7t, Addr1: 6t, Addr2: 6c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82020:MAD dest:2 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

58	0:CMN_INST   0x01000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db1c80:rgb_A_src:0 R/0/0 3 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

59	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 62 IGN_UNC
	3:FC_ADDR    0x003e0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 62, JMP_GLBL: 0

60	0:CMN_INST   0x00000804:ALU TEX_WAIT    wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

61	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 64
	3:FC_ADDR    0x00400000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 64, JMP_GLBL: 0

62	0:CMN_INST   0x00000804:ALU TEX_WAIT    wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

63	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 64
	3:FC_ADDR    0x00400000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 64, JMP_GLBL: 0

64	0:CMN_INST   0x00000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x50601807:Addr0: 7t, Addr1: 6t, Addr2: 6c, srcp:1
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0

65	0:CMN_INST   0x00002004:ALU TEX_WAIT    wmask: B omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20090:rgb_A_src:0 0/0/R 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

66	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 73 IGN_UNC
	3:FC_ADDR    0x00490000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 73, JMP_GLBL: 0

67	0:CMN_INST   0x00005804:ALU TEX_WAIT    wmask: ARG omask: NONE
	1:RGB_ADDR   0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00088020:MAD dest:2 alp_A_src:0 B 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

68	0:CMN_INST   0x00003807:TEX TEX_WAIT    wmask: RGB omask: NONE
	1:TEX_INST:  0x03410000: id: 1 op:LOD, ACQ,  SCALED
	2:TEX_ADDR:  0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A
	3:TEX_DXDY:  0x00000000

69	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040002:Addr0: 2t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0024a220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 G/G/G 0 targ: 0
	4 ALPHA_INST:0x00480020:MAD dest:2 alp_A_src:0 R 0 alp_B_src:1 B 0 targ 0 w:0
	5 RGBA_INST: 0x0a249020:MAD dest:2 rgb_C_src:1 B/B/B 0 alp_C_src:1 G 0

70	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

71	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00c0d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

72	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 75
	3:FC_ADDR    0x004b0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 75, JMP_GLBL: 0

73	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0248:rgb_A_src:0 B/B/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c08010:MAD dest:1 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

74	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 75
	3:FC_ADDR    0x004b0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 75, JMP_GLBL: 0

75	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 76
	3:FC_ADDR    0x004c0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 76, JMP_GLBL: 0

76	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 77
	3:FC_ADDR    0x004d0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 77, JMP_GLBL: 0

77	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 78
	3:FC_ADDR    0x004e0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 78, JMP_GLBL: 0

78	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 79
	3:FC_ADDR    0x004f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 79, JMP_GLBL: 0

79	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 80
	3:FC_ADDR    0x00500000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 80, JMP_GLBL: 0

80	0:CMN_INST   0x01000004:ALU TEX_WAIT    wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0c88:rgb_A_src:0 B/0/0 1 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

81	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 84 IGN_UNC
	3:FC_ADDR    0x00540000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 84, JMP_GLBL: 0

82	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0248:rgb_A_src:0 B/B/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c08000:MAD dest:0 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

83	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 86
	3:FC_ADDR    0x00560000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 86, JMP_GLBL: 0

84	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

85	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 86
	3:FC_ADDR    0x00560000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 86, JMP_GLBL: 0

86	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0..1]
DCL CONST[4]
DCL TEMP[0..4]
IMM FLT32 {    0.0000,     0.0000,     0.0000,     0.0000}
  0: MUL TEMP[0].xyz, CONST[0].xzxx, IN[0].zzxx
  1: ABS TEMP[1].x, IN[0].yyyy
  2: ABS TEMP[2].x, IN[0].zzzz
  3: MAX TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx
  4: ABS TEMP[2].x, IN[0].xxxx
  5: MAX TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx
  6: ABS TEMP[2].xyz, IN[0].xyzz
  7: ADD TEMP[2].xyz, -TEMP[1].xxxx, TEMP[2].xyzz
  8: RCP TEMP[1].x, TEMP[1].xxxx
  9: SGE TEMP[3].x, TEMP[2].xxxx, IMM[0].xxxx
 10: IF TEMP[3].xxxx :0
 11:   MOV TEMP[3].x, CONST[0].xxxx
 12: ELSE :0
 13:   MOV TEMP[3].x, CONST[0].yyyy
 14: ENDIF
 15: MOV TEMP[3].x, TEMP[3].xxxx
 16: SGE TEMP[4].x, TEMP[2].yyyy, IMM[0].xxxx
 17: IF TEMP[4].xxxx :0
 18:   MOV TEMP[4].x, CONST[0].xxxx
 19: ELSE :0
 20:   MOV TEMP[4].x, CONST[0].yyyy
 21: ENDIF
 22: MOV TEMP[3].y, TEMP[4].xxxx
 23: SGE TEMP[2].x, TEMP[2].zzzz, IMM[0].xxxx
 24: IF TEMP[2].xxxx :0
 25:   MOV TEMP[2].x, CONST[0].xxxx
 26: ELSE :0
 27:   MOV TEMP[2].x, CONST[0].yyyy
 28: ENDIF
 29: MOV TEMP[3].z, TEMP[2].xxxx
 30: DP3 TEMP[0].x, TEMP[3].xyzz, TEMP[0].xyzz
 31: MUL TEMP[2].xyz, CONST[0].xxzz, IN[0].yxyy
 32: DP3 TEMP[2].x, TEMP[3].xyzz, TEMP[2].xyzz
 33: MOV TEMP[0].y, TEMP[2].xxxx
 34: MAD TEMP[0].xy, TEMP[0].xyyy, TEMP[1].xxxx, CONST[0].xxxx
 35: MUL TEMP[0].xy, TEMP[0].xyyy, CONST[4].xxxx
 36: MUL TEMP[0].xy, TEMP[0].xyyy, CONST[0].wwww
 37: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D
 38: MUL TEMP[0], TEMP[1], CONST[0].wwww
 39: TEX TEMP[1], IN[0].xyzz, SAMP[1], CUBE
 40: MAD OUT[0], TEMP[1], CONST[1].xxxx, TEMP[0]
 41: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SGE temp[3].x, temp[2].xxxx, temp[0].0000;
 10: IF temp[3].xxxx;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000;
 17: IF temp[4].xxxx;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000;
 24: IF temp[2].xxxx;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SGE temp[3].x, temp[2].xxxx, temp[0].0000;
 10: IF temp[3].xxxx;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000;
 17: IF temp[4].xxxx;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000;
 24: IF temp[2].xxxx;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SGE temp[3].x, temp[2].xxxx, temp[0].0000;
 10: IF temp[3].xxxx;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000;
 17: IF temp[4].xxxx;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000;
 24: IF temp[2].xxxx;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SGE temp[3].x, temp[2].xxxx, temp[0].0000;
 10: IF temp[3].xxxx;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000;
 17: IF temp[4].xxxx;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000;
 24: IF temp[2].xxxx;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SGE temp[3].x, temp[2].xxxx, temp[0].0000;
 10: IF temp[3].xxxx;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000;
 17: IF temp[4].xxxx;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000;
 24: IF temp[2].xxxx;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SGE temp[3].x, temp[2].xxxx, temp[0].0000;
 10: IF temp[3].xxxx;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000;
 17: IF temp[4].xxxx;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000;
 24: IF temp[2].xxxx;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: ABS temp[1].x, input[0].yyyy;
  2: ABS temp[2].x, input[0].zzzz;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: ABS temp[2].x, input[0].xxxx;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: ABS temp[2].xyz, input[0].xyzz;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: SUB none., temp[2].xxxx, temp[0].0000; [aluresult = (x >= 0)]
 10: IF aluresult.x___;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: SUB none., temp[2].yyyy, temp[0].0000; [aluresult = (x >= 0)]
 17: IF aluresult.x___;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: SUB none., temp[2].zzzz, temp[0].0000; [aluresult = (x >= 0)]
 24: IF aluresult.x___;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx;
  1: MOV temp[1].x, |input[0].yyyy|;
  2: MOV temp[2].x, |input[0].zzzz|;
  3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx;
  4: MOV temp[2].x, |input[0].xxxx|;
  5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx;
  6: MOV temp[2].xyz, |input[0].xyzz|;
  7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz;
  8: RCP temp[1].x, temp[1].xxxx;
  9: ADD none., temp[2].xxxx, -temp[0].0000; [aluresult = (x >= 0)]
 10: IF aluresult.x___;
 11:   MOV temp[3].x, const[0].xxxx;
 12: ELSE;
 13:   MOV temp[3].x, const[0].yyyy;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].xxxx;
 16: ADD none., temp[2].yyyy, -temp[0].0000; [aluresult = (x >= 0)]
 17: IF aluresult.x___;
 18:   MOV temp[4].x, const[0].xxxx;
 19: ELSE;
 20:   MOV temp[4].x, const[0].yyyy;
 21: ENDIF;
 22: MOV temp[3].y, temp[4].xxxx;
 23: ADD none., temp[2].zzzz, -temp[0].0000; [aluresult = (x >= 0)]
 24: IF aluresult.x___;
 25:   MOV temp[2].x, const[0].xxxx;
 26: ELSE;
 27:   MOV temp[2].x, const[0].yyyy;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].xxxx;
 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz;
 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy;
 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz;
 33: MOV temp[0].y, temp[2].xxxx;
 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx;
 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx;
 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww;
 37: TEX temp[1], temp[0].xyyy, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyzz, CUBE[1];
 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MUL temp[0].xyz, const[0].xzx_, input[0].zzx_;
  1: MOV temp[1].x, |input[0].y___|;
  2: MOV temp[2].x, |input[0].z___|;
  3: MAX temp[1].x, temp[1].x___, temp[2].x___;
  4: MOV temp[2].x, |input[0].x___|;
  5: MAX temp[1].x, temp[2].x___, temp[1].x___;
  6: MOV temp[2].xyz, |input[0].xyz_|;
  7: ADD temp[2].xyz, -temp[1].xxx_, temp[2].xyz_;
  8: RCP temp[1].x, temp[1].x___;
  9: ADD none., temp[2].x___, -temp[0].0___; [aluresult = (x >= 0)]
 10: IF aluresult.x___;
 11:   MOV temp[3].x, const[0].x___;
 12: ELSE;
 13:   MOV temp[3].x, const[0].y___;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].x___;
 16: ADD none., temp[2].y___, -temp[0].0___; [aluresult = (x >= 0)]
 17: IF aluresult.x___;
 18:   MOV temp[4].x, const[0].x___;
 19: ELSE;
 20:   MOV temp[4].x, const[0].y___;
 21: ENDIF;
 22: MOV temp[3].y, temp[4]._x__;
 23: ADD none., temp[2].z___, -temp[0].0___; [aluresult = (x >= 0)]
 24: IF aluresult.x___;
 25:   MOV temp[2].x, const[0].x___;
 26: ELSE;
 27:   MOV temp[2].x, const[0].y___;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].__x_;
 30: DP3 temp[0].x, temp[3].xyz_, temp[0].xyz_;
 31: MUL temp[2].xyz, const[0].xxz_, input[0].yxy_;
 32: DP3 temp[2].x, temp[3].xyz_, temp[2].xyz_;
 33: MOV temp[0].y, temp[2]._x__;
 34: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, const[0].xx__;
 35: MUL temp[0].xy, temp[0].xy__, const[4].xx__;
 36: MUL temp[0].xy, temp[0].xy__, const[0].ww__;
 37: TEX temp[1], temp[0].xy__, 2D[0];
 38: MUL temp[0], temp[1], const[0].wwww;
 39: TEX temp[1], input[0].xyz_, CUBE[1];
 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_;
  1: MOV temp[6].x, |input[0].y___|;
  2: MOV temp[7].x, |input[0].z___|;
  3: MAX temp[8].x, temp[6].x___, temp[7].x___;
  4: MOV temp[9].x, |input[0].x___|;
  5: MAX temp[10].x, temp[9].x___, temp[8].x___;
  6: MOV temp[11].xyz, |input[0].xyz_|;
  7: ADD temp[12].xyz, -temp[10].xxx_, temp[11].xyz_;
  8: RCP temp[13].x, temp[10].x___;
  9: ADD none., temp[12].x___, -temp[0].0___; [aluresult = (x >= 0)]
 10: IF aluresult.x___;
 11:   MOV temp[3].x, const[0].x___;
 12: ELSE;
 13:   MOV temp[3].x, const[0].y___;
 14: ENDIF;
 15: MOV temp[3].x, temp[3].x___;
 16: ADD none., temp[12].y___, -temp[0].0___; [aluresult = (x >= 0)]
 17: IF aluresult.x___;
 18:   MOV temp[4].x, const[0].x___;
 19: ELSE;
 20:   MOV temp[4].x, const[0].y___;
 21: ENDIF;
 22: MOV temp[3].y, temp[4]._x__;
 23: ADD none., temp[12].z___, -temp[0].0___; [aluresult = (x >= 0)]
 24: IF aluresult.x___;
 25:   MOV temp[2].x, const[0].x___;
 26: ELSE;
 27:   MOV temp[2].x, const[0].y___;
 28: ENDIF;
 29: MOV temp[3].z, temp[2].__x_;
 30: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_;
 31: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_;
 32: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_;
 33: MOV temp[0].y, temp[15]._x__;
 34: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__;
 35: MUL temp[17].xy, temp[16].xy__, const[4].xx__;
 36: MUL temp[18].xy, temp[17].xy__, const[0].ww__;
 37: TEX temp[19], temp[18].xy__, 2D[0];
 38: MUL temp[20], temp[19], const[0].wwww;
 39: TEX temp[21], input[0].xyz_, CUBE[1];
 40: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_;
  1: MAX temp[8].x, |input[0].y___|, |input[0].z___|;
  2: MAX temp[10].x, |input[0].x___|, temp[8].x___;
  3: ADD temp[12].xyz, -temp[10].xxx_, |input[0].xyz_|;
  4: RCP temp[13].x, temp[10].x___;
  5: MOV none., temp[12].x___; [aluresult = (x >= 0)]
  6: IF aluresult.x___;
  7:   MOV temp[3].x, const[0].x___;
  8: ELSE;
  9:   MOV temp[3].x, const[0].y___;
 10: ENDIF;
 11: MOV temp[3].x, temp[3].x___;
 12: MOV none., temp[12].y___; [aluresult = (x >= 0)]
 13: IF aluresult.x___;
 14:   MOV temp[4].x, const[0].x___;
 15: ELSE;
 16:   MOV temp[4].x, const[0].y___;
 17: ENDIF;
 18: MOV temp[3].y, temp[4]._x__;
 19: MOV none., temp[12].z___; [aluresult = (x >= 0)]
 20: IF aluresult.x___;
 21:   MOV temp[2].x, const[0].x___;
 22: ELSE;
 23:   MOV temp[2].x, const[0].y___;
 24: ENDIF;
 25: MOV temp[3].z, temp[2].__x_;
 26: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_;
 27: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_;
 28: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_;
 29: MOV temp[0].y, temp[15]._x__;
 30: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__;
 31: MUL temp[17].xy, temp[16].xy__, const[4].xx__;
 32: MUL temp[18].xy, temp[17].xy__, const[0].ww__;
 33: TEX temp[19], temp[18].xy__, 2D[0];
 34: MUL temp[20], temp[19], const[0].wwww;
 35: TEX temp[21], input[0].xyz_, CUBE[1];
 36: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_;
  1: MAX temp[8].x, |input[0].y___|, |input[0].z___|;
  2: MAX temp[10].x, |input[0].x___|, temp[8].x___;
  3: ADD temp[12].xyz, -temp[10].xxx_, |input[0].xyz_|;
  4: RCP temp[13].x, temp[10].x___;
  5: MOV none., temp[12].x___; [aluresult = (x >= 0)]
  6: IF aluresult.x___;
  7:   MOV temp[3].x, const[0].x___;
  8: ELSE;
  9:   MOV temp[3].x, const[0].y___;
 10: ENDIF;
 11: MOV temp[3].x, temp[3].x___;
 12: MOV none., temp[12].y___; [aluresult = (x >= 0)]
 13: IF aluresult.x___;
 14:   MOV temp[4].x, const[0].x___;
 15: ELSE;
 16:   MOV temp[4].x, const[0].y___;
 17: ENDIF;
 18: MOV temp[3].y, temp[4]._x__;
 19: MOV none., temp[12].z___; [aluresult = (x >= 0)]
 20: IF aluresult.x___;
 21:   MOV temp[2].x, const[0].x___;
 22: ELSE;
 23:   MOV temp[2].x, const[0].y___;
 24: ENDIF;
 25: MOV temp[3].z, temp[2].__x_;
 26: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_;
 27: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_;
 28: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_;
 29: MOV temp[0].y, temp[15]._x__;
 30: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__;
 31: MUL temp[17].xy, temp[16].xy__, const[4].xx__;
 32: MUL temp[18].xy, temp[17].xy__, const[0].ww__;
 33: TEX temp[19], temp[18].xy__, 2D[0];
 34: MUL temp[20], temp[19], const[0].wwww;
 35: TEX temp[21], input[0].xyz_, CUBE[1];
 36: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_;
  1: MAX temp[8].x, |input[0].y___|, |input[0].z___|;
  2: MAX temp[10].x, |input[0].x___|, temp[8].x___;
  3: ADD temp[12].xyz, -temp[10].xxx_, |input[0].xyz_|;
  4: RCP temp[13].x, temp[10].x___;
  5: MOV none., temp[12].x___; [aluresult = (x >= 0)]
  6: IF aluresult.x___;
  7:   MOV temp[3].x, const[0].x___;
  8: ELSE;
  9:   MOV temp[3].x, const[0].y___;
 10: ENDIF;
 11: MOV temp[3].x, temp[3].x___;
 12: MOV none., temp[12].y___; [aluresult = (x >= 0)]
 13: IF aluresult.x___;
 14:   MOV temp[4].x, const[0].x___;
 15: ELSE;
 16:   MOV temp[4].x, const[0].y___;
 17: ENDIF;
 18: MOV temp[3].y, temp[4]._x__;
 19: MOV none., temp[12].z___; [aluresult = (x >= 0)]
 20: IF aluresult.x___;
 21:   MOV temp[2].x, const[0].x___;
 22: ELSE;
 23:   MOV temp[2].x, const[0].y___;
 24: ENDIF;
 25: MOV temp[3].z, temp[2].__x_;
 26: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_;
 27: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_;
 28: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_;
 29: MOV temp[0].y, temp[15]._x__;
 30: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__;
 31: MUL temp[17].xy, temp[16].xy__, const[4].xx__;
 32: MUL temp[18].xy, temp[17].xy__, const[0].ww__;
 33: TEX temp[19], temp[18].xy__, 2D[0];
 34: MUL temp[20], temp[19], const[0].wwww;
 35: TEX temp[21], input[0].xyz_, CUBE[1];
 36: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[5].xyz, src0.xzx, src1.zzx, src0.000
  1: src0.xyz = input[0]
     MAX temp[8].x, |src0.y__|, |src0.z__|
  2: src0.xyz = input[0], src1.xyz = temp[8]
     MAX temp[10].x, |src0.x__|, src1.x__
  3: src0.xyz = temp[10], src1.xyz = input[0]
     MAD temp[12].xyz, -src0.xxx, |src0.111|, |src1.xyz|
  4: src0.xyz = temp[10]
     REPL_ALPHA temp[13].x
     RCP, src0.x
  5: src0.xyz = temp[12]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result >= 0)]
  6: IF aluresult.x___;
  7:   src0.xyz = const[0]
       MAD temp[3].x, src0.x__, src0.111, src0.000
  8: ELSE;
  9:   src0.xyz = const[0]
       MAD temp[3].x, src0.y__, src0.111, src0.000
 10: ENDIF;
 11: src0.xyz = temp[3]
     MAD temp[3].x, src0.x__, src0.111, src0.000
 12: src0.xyz = temp[12]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 13: IF aluresult.x___;
 14:   src0.xyz = const[0]
       MAD temp[4].x, src0.x__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = const[0]
       MAD temp[4].x, src0.y__, src0.111, src0.000
 17: ENDIF;
 18: src0.xyz = temp[4]
     MAD temp[3].y, src0._x_, src0.111, src0.000
 19: src0.xyz = temp[12]
     MAD aluresult, src0.z__, src0.111, src0.000
      [aluresult = (result >= 0)]
 20: IF aluresult.x___;
 21:   src0.xyz = const[0]
       MAD temp[2].x, src0.x__, src0.111, src0.000
 22: ELSE;
 23:   src0.xyz = const[0]
       MAD temp[2].x, src0.y__, src0.111, src0.000
 24: ENDIF;
 25: src0.xyz = temp[2]
     MAD temp[3].z, src0.__x, src0.111, src0.000
 26: src0.xyz = temp[3], src1.xyz = temp[5]
     DP3 temp[0].x, src0.xyz, src1.xyz
 27: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[14].xyz, src0.xxz, src1.yxy, src0.000
 28: src0.xyz = temp[3], src1.xyz = temp[14]
     DP3 temp[15].x, src0.xyz, src1.xyz
 29: src0.xyz = temp[15]
     MAD temp[0].y, src0._x_, src0.111, src0.000
 30: src0.xyz = temp[0], src1.xyz = temp[13], src2.xyz = const[0]
     MAD temp[16].xy, src0.xy_, src1.xx_, src2.xx_
 31: src0.xyz = temp[16], src1.xyz = const[4]
     MAD temp[17].xy, src0.xy_, src1.xx_, src0.000
 32: src0.xyz = temp[17], src0.w = const[0]
     MAD temp[18].xy, src0.xy_, src0.ww_, src0.000
 33: TEX temp[19], temp[18].xy__, 2D[0];
 34: src0.xyz = temp[19], src0.w = temp[19], src1.w = const[0]
     MAD temp[20].xyz, src0.xyz, src1.www, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 35: TEX temp[21], input[0].xyz_, CUBE[1];
 36: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = const[1], src1.w = temp[20], src2.xyz = temp[20]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz
     MAD_SAT color[0].w, src0.w, src1.x, src1.w
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[5].xyz, src0.xzx, src1.zzx, src0.000
     MAX temp[8].w, |src1.y|, |src1.z|
  1: src0.xyz = input[0], src0.w = temp[8], src1.xyz = temp[8]
     MAX temp[10].x, |src0.x__|, src0.w__
  2: src0.xyz = temp[10]
     REPL_ALPHA temp[13].x
     RCP, src0.x
  3: src0.xyz = temp[10], src1.xyz = input[0]
     MAD temp[12].xyz, -src0.xxx, |src0.111|, |src1.xyz|
  4: src0.xyz = temp[12]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result >= 0)]
  5: IF aluresult.x___;
  6:   src0.xyz = const[0]
       MAD temp[3].x, src0.x__, src0.111, src0.000
  7: ELSE;
  8:   src0.xyz = const[0]
       MAD temp[3].x, src0.y__, src0.111, src0.000
  9: ENDIF;
 10: src0.xyz = temp[12]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 11: src0.xyz = temp[3]
     MAD temp[3].x, src0.x__, src0.111, src0.000
 12: IF aluresult.x___;
 13:   src0.xyz = const[0]
       MAD temp[4].x, src0.x__, src0.111, src0.000
 14: ELSE;
 15:   src0.xyz = const[0]
       MAD temp[4].x, src0.y__, src0.111, src0.000
 16: ENDIF;
 17: src0.xyz = temp[12]
     MAD aluresult, src0.z__, src0.111, src0.000
      [aluresult = (result >= 0)]
 18: src0.xyz = temp[4]
     MAD temp[3].y, src0._x_, src0.111, src0.000
 19: IF aluresult.x___;
 20:   src0.xyz = const[0]
       MAD temp[2].x, src0.x__, src0.111, src0.000
 21: ELSE;
 22:   src0.xyz = const[0]
       MAD temp[2].x, src0.y__, src0.111, src0.000
 23: ENDIF;
 24: src0.xyz = temp[2]
     MAD temp[3].z, src0.__x, src0.111, src0.000
 25: src0.xyz = temp[3], src1.xyz = temp[5]
     DP3 temp[0].x, src0.xyz, src1.xyz
 26: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[14].xyz, src0.xxz, src1.yxy, src0.000
 27: src0.xyz = temp[3], src1.xyz = temp[14]
     DP3 temp[15].x, src0.xyz, src1.xyz
 28: src0.xyz = temp[15]
     MAD temp[0].y, src0._x_, src0.111, src0.000
 29: src0.xyz = temp[0], src1.xyz = temp[13], src2.xyz = const[0]
     MAD temp[16].xy, src0.xy_, src1.xx_, src2.xx_
 30: src0.xyz = temp[16], src1.xyz = const[4]
     MAD temp[17].xy, src0.xy_, src1.xx_, src0.000
 31: src0.xyz = temp[17], src0.w = const[0]
     MAD temp[18].xy, src0.xy_, src0.ww_, src0.000
 32: BEGIN_TEX;
 33: TEX temp[21], input[0].xyz_, CUBE[1];
 34: TEX temp[19], temp[18].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 35: src0.xyz = temp[19], src0.w = temp[19], src1.w = const[0] SEM_WAIT
     MAD temp[20].xyz, src0.xyz, src1.www, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 36: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = const[1], src1.w = temp[20], src2.xyz = temp[20]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz
     MAD_SAT color[0].w, src0.w, src1.x, src1.w
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[5].xyz, src0.xzx, src1.zzx, src0.000
     MAX temp[8].w, |src1.y|, |src1.z|
  1: src0.xyz = input[0], src0.w = temp[8]
     MAX temp[10].x, |src0.x__|, src0.w__
  2: src0.xyz = temp[10]
     REPL_ALPHA temp[13].x
     RCP, src0.x
  3: src0.xyz = temp[10], src1.xyz = input[0]
     MAD temp[12].xyz, -src0.xxx, |src0.111|, |src1.xyz|
  4: src0.xyz = temp[12]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result >= 0)]
  5: IF aluresult.x___;
  6:   src0.xyz = const[0]
       MAD temp[3].x, src0.x__, src0.111, src0.000
  7: ELSE;
  8:   src0.xyz = const[0]
       MAD temp[3].x, src0.y__, src0.111, src0.000
  9: ENDIF;
 10: src0.xyz = temp[12]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 11: src0.xyz = temp[3]
     MAD temp[3].x, src0.x__, src0.111, src0.000
 12: IF aluresult.x___;
 13:   src0.xyz = const[0]
       MAD temp[4].x, src0.x__, src0.111, src0.000
 14: ELSE;
 15:   src0.xyz = const[0]
       MAD temp[4].x, src0.y__, src0.111, src0.000
 16: ENDIF;
 17: src0.xyz = temp[12]
     MAD aluresult, src0.z__, src0.111, src0.000
      [aluresult = (result >= 0)]
 18: src0.xyz = temp[4]
     MAD temp[3].y, src0._x_, src0.111, src0.000
 19: IF aluresult.x___;
 20:   src0.xyz = const[0]
       MAD temp[2].x, src0.x__, src0.111, src0.000
 21: ELSE;
 22:   src0.xyz = const[0]
       MAD temp[2].x, src0.y__, src0.111, src0.000
 23: ENDIF;
 24: src0.xyz = temp[2]
     MAD temp[3].z, src0.__x, src0.111, src0.000
 25: src0.xyz = temp[3], src1.xyz = temp[5]
     DP3 temp[0].x, src0.xyz, src1.xyz
 26: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[14].xyz, src0.xxz, src1.yxy, src0.000
 27: src0.xyz = temp[3], src1.xyz = temp[14]
     DP3 temp[15].x, src0.xyz, src1.xyz
 28: src0.xyz = temp[15]
     MAD temp[0].y, src0._x_, src0.111, src0.000
 29: src0.xyz = temp[0], src1.xyz = temp[13], src2.xyz = const[0]
     MAD temp[16].xy, src0.xy_, src1.xx_, src2.xx_
 30: src0.xyz = temp[16], src1.xyz = const[4]
     MAD temp[17].xy, src0.xy_, src1.xx_, src0.000
 31: src0.xyz = temp[17], src0.w = const[0]
     MAD temp[18].xy, src0.xy_, src0.ww_, src0.000
 32: BEGIN_TEX;
 33: TEX temp[21], input[0].xyz_, CUBE[1];
 34: TEX temp[19], temp[18].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 35: src0.xyz = temp[19], src0.w = temp[19], src1.w = const[0] SEM_WAIT
     MAD temp[20].xyz, src0.xyz, src1.www, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 36: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = const[1], src1.w = temp[20], src2.xyz = temp[20]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz
     MAD_SAT color[0].w, src0.w, src1.x, src1.w
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[1].xyz, src0.xzx, src1.zzx, src0.000
     MAX temp[0].w, |src1.y|, |src1.z|
  1: src0.xyz = input[0], src0.w = temp[0]
     MAX temp[2].x, |src0.x__|, src0.w__
  2: src0.xyz = temp[2]
     REPL_ALPHA temp[2].y
     RCP, src0.x
  3: src0.xyz = temp[2], src1.xyz = input[0]
     MAD temp[3].xyz, -src0.xxx, |src0.111|, |src1.xyz|
  4: src0.xyz = temp[3]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result >= 0)]
  5: IF aluresult.x___;
  6:   src0.xyz = const[0]
       MAD temp[2].x, src0.x__, src0.1__, src0.0__
  7: ELSE;
  8:   src0.xyz = const[0]
       MAD temp[2].x, src0.y__, src0.1__, src0.0__
  9: ENDIF;
 10: src0.xyz = temp[3]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result >= 0)]
 11: src0.xyz = temp[2]
     MAD temp[4].x, src0.x__, src0.111, src0.000
 12: IF aluresult.x___;
 13:   src0.xyz = const[0]
       MAD temp[2].x, src0.x__, src0.1__, src0.0__
 14: ELSE;
 15:   src0.xyz = const[0]
       MAD temp[2].x, src0.y__, src0.1__, src0.0__
 16: ENDIF;
 17: src0.xyz = temp[3]
     MAD aluresult, src0.z__, src0.111, src0.000
      [aluresult = (result >= 0)]
 18: src0.xyz = temp[2]
     MAD temp[4].y, src0._x_, src0.111, src0.000
 19: IF aluresult.x___;
 20:   src0.xyz = const[0]
       MAD temp[2].x, src0.x__, src0.1__, src0.0__
 21: ELSE;
 22:   src0.xyz = const[0]
       MAD temp[2].x, src0.y__, src0.1__, src0.0__
 23: ENDIF;
 24: src0.xyz = temp[2]
     MAD temp[4].z, src0.__x, src0.111, src0.000
 25: src0.xyz = temp[4], src1.xyz = temp[1]
     DP3 temp[1].x, src0.xyz, src1.xyz
 26: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[3].xyz, src0.xxz, src1.yxy, src0.000
 27: src0.xyz = temp[4], src1.xyz = temp[3]
     DP3 temp[1].z, src0.xyz, src1.xyz
 28: src0.xyz = temp[1]
     MAD temp[1].y, src0._z_, src0.11_, src0.00_
 29: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = const[0]
     MAD temp[1].xy, src0.xy_, src1.yy_, src2.xx_
 30: src0.xyz = temp[1], src1.xyz = const[4]
     MAD temp[1].xy, src0.xy_, src1.xx_, src0.00_
 31: src0.xyz = temp[1], src0.w = const[0]
     MAD temp[1].xy, src0.xy_, src0.ww_, src0.00_
 32: BEGIN_TEX;
 33: TEX temp[0], input[0].xyz_, CUBE[1];
 34: TEX temp[1], temp[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 35: src0.xyz = temp[1], src0.w = temp[1], src1.w = const[0] SEM_WAIT
     MAD temp[1].xyz, src0.xyz, src1.www, src0.000
     MAD temp[1].w, src0.w, src1.w, src0.0
 36: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = temp[1], src2.xyz = temp[1]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz
     MAD_SAT color[0].w, src0.w, src1.x, src1.w
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000100:Addr0: 0c, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00092040:rgb_A_src:0 R/B/R 0 rgb_B_src:1 B/B/R 0 targ: 0
	4 ALPHA_INST:0x024c5003:MAX dest:0 alp_A_src:1 G 2 alp_B_src:1 B 2 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

1	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00919480:rgb_A_src:0 R/0/0 2 rgb_B_src:0 A/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000025:MAX dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

2	0:CMN_INST   0x00001000:ALU     wmask: G omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000000a:RCP dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

3	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x02db0800:rgb_A_src:0 R/R/R 1 rgb_B_src:0 1/1/1 2 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x01221030:MAD dest:3 rgb_C_src:1 R/G/B 2 alp_C_src:0 R 0

4	0:CMN_INST   0x01000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 8 IGN_UNC
	3:FC_ADDR    0x00080000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 8, JMP_GLBL: 0

6	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

7	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

8	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

9	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

10	0:CMN_INST   0x01000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

11	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

12	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC
	3:FC_ADDR    0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0

13	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

14	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 17
	3:FC_ADDR    0x00110000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 17, JMP_GLBL: 0

15	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

16	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 17
	3:FC_ADDR    0x00110000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 17, JMP_GLBL: 0

17	0:CMN_INST   0x01000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

18	0:CMN_INST   0x00001000:ALU     wmask: G omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0410:rgb_A_src:0 0/R/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

19	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 22 IGN_UNC
	3:FC_ADDR    0x00160000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 22, JMP_GLBL: 0

20	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

21	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 24
	3:FC_ADDR    0x00180000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 24, JMP_GLBL: 0

22	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

23	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 24
	3:FC_ADDR    0x00180000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 24, JMP_GLBL: 0

24	0:CMN_INST   0x00002000:ALU     wmask: B omask: NONE
	1:RGB_ADDR   0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0090:rgb_A_src:0 0/0/R 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

25	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08000404:Addr0: 4t, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

26	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x08000100:Addr0: 0c, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0020a200:rgb_A_src:0 R/R/B 0 rgb_B_src:1 G/R/G 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

27	0:CMN_INST   0x00002000:ALU     wmask: B omask: NONE
	1:RGB_ADDR   0x08000c04:Addr0: 4t, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

28	0:CMN_INST   0x00001000:ALU     wmask: G omask: NONE
	1:RGB_ADDR   0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x009b0450:rgb_A_src:0 0/B/0 0 rgb_B_src:0 1/1/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

29	0:CMN_INST   0x00001800:ALU     wmask: RG omask: NONE
	1:RGB_ADDR   0x10000801:Addr0: 1t, Addr1: 2t, Addr2: 0c, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0084a420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 G/G/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00402010:MAD dest:1 rgb_C_src:2 R/R/0 0 alp_C_src:0 R 0

30	0:CMN_INST   0x00001800:ALU     wmask: RG omask: NONE
	1:RGB_ADDR   0x08041001:Addr0: 1t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00802420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/R/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

31	0:CMN_INST   0x00001800:ALU     wmask: RG omask: NONE
	1:RGB_ADDR   0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x008d8420:rgb_A_src:0 R/G/0 0 rgb_B_src:0 A/A/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

32	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00410000: id: 1 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe400e400: src: 0 R/G/B/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

33	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

34	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x006da220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 A/A/A 0 targ: 0
	4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

35	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x00140400:Addr0: 0t, Addr1: 1c, Addr2: 1t, srcp:0
	2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x1a222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:1 A 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL IN[2], GENERIC[14], PERSPECTIVE
DCL IN[3], GENERIC[15], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL TEMP[0..2]
  0: MUL TEMP[0].xy, CONST[0].xyyy, IN[1].xxxx
  1: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D
  2: TEX TEMP[2], IN[0].xyyy, SAMP[1], 2D
  3: MUL TEMP[0], TEMP[1], TEMP[2]
  4: MUL TEMP[0], TEMP[0], IN[2].xxxx
  5: MOV_SAT TEMP[0], TEMP[0]
  6: MUL OUT[0], TEMP[0], IN[3].xxxx
  7: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL output[0], temp[0], input[3].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL output[0], temp[0], input[3].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL output[0], temp[0], input[3].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL output[0], temp[0], input[3].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL_SAT output[0], temp[0], input[3].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL_SAT output[0], temp[0], input[3].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL_SAT output[0], temp[0], input[3].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL_SAT output[0], temp[0], input[3].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MUL temp[0].xy, const[0].xy__, input[1].xx__;
  1: TEX temp[1], temp[0].xy__, 2D[0];
  2: TEX temp[2], input[0].xy__, 2D[1];
  3: MUL temp[0], temp[1], temp[2];
  4: MUL temp[0], temp[0], input[2].xxxx;
  5: MOV_SAT temp[0], temp[0];
  6: MUL_SAT output[0], temp[0], input[3].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MUL temp[3].xy, const[0].xy__, input[1].xx__;
  1: TEX temp[4], temp[3].xy__, 2D[0];
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: MUL temp[6], temp[4], temp[5];
  4: MUL temp[7], temp[6], input[2].xxxx;
  5: MOV_SAT temp[8], temp[7];
  6: MUL_SAT output[0], temp[8], input[3].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MUL temp[3].xy, const[0].xy__, input[1].xx__;
  1: TEX temp[4], temp[3].xy__, 2D[0];
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: MUL temp[6], temp[4], temp[5];
  4: MUL temp[7], temp[6], input[2].xxxx;
  5: MOV_SAT temp[8], temp[7];
  6: MUL_SAT output[0], temp[8], input[3].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MUL temp[3].xy, const[0].xy__, input[1].xx__;
  1: TEX temp[4], temp[3].xy__, 2D[0];
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: MUL temp[6], temp[4], temp[5];
  4: MUL temp[7], temp[6], input[2].xxxx;
  5: MOV_SAT temp[8], temp[7];
  6: MUL_SAT output[0], temp[8], input[3].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MUL temp[3].xy, const[0].xy__, input[1].xx__;
  1: TEX temp[4], temp[3].xy__, 2D[0];
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: MUL temp[6], temp[4], temp[5];
  4: MUL temp[7], temp[6], input[2].xxxx;
  5: MOV_SAT temp[8], temp[7];
  6: MUL_SAT output[0], temp[8], input[3].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[1]
     MAD temp[3].xy, src0.xy_, src1.xx_, src0.000
  1: TEX temp[4], temp[3].xy__, 2D[0];
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = temp[5], src1.w = temp[5]
     MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[6].w, src0.w, src1.w, src0.0
  4: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = input[2]
     MAD temp[7].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[7].w, src0.w, src1.x, src0.0
  5: src0.xyz = temp[7], src0.w = temp[7]
     MAD_SAT temp[8].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT temp[8].w, src0.w, src0.1, src0.0
  6: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[3]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[1]
     MAD temp[3].xy, src0.xy_, src1.xx_, src0.000
  1: BEGIN_TEX;
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: TEX temp[4], temp[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = temp[5], src1.w = temp[5] SEM_WAIT
     MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[6].w, src0.w, src1.w, src0.0
  5: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = input[2]
     MAD temp[7].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[7].w, src0.w, src1.x, src0.0
  6: src0.xyz = temp[7], src0.w = temp[7]
     MAD_SAT temp[8].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT temp[8].w, src0.w, src0.1, src0.0
  7: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[3]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[1]
     MAD temp[3].xy, src0.xy_, src1.xx_, src0.000
  1: BEGIN_TEX;
  2: TEX temp[5], input[0].xy__, 2D[1];
  3: TEX temp[4], temp[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = temp[5], src1.w = temp[5] SEM_WAIT
     MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[6].w, src0.w, src1.w, src0.0
  5: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = input[2]
     MAD temp[7].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[7].w, src0.w, src1.x, src0.0
  6: src0.xyz = temp[7], src0.w = temp[7]
     MAD_SAT temp[8].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT temp[8].w, src0.w, src0.1, src0.0
  7: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[3]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = const[0], src1.xyz = input[1]
     MAD temp[1].xy, src0.xy_, src1.xx_, src0.00_
  1: BEGIN_TEX;
  2: TEX temp[0], input[0].xy__, 2D[1];
  3: TEX temp[1], temp[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] SEM_WAIT
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  5: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[2]
     MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
  6: src0.xyz = temp[0], src0.w = temp[0]
     MAD_SAT temp[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT temp[0].w, src0.w, src0.1, src0.0
  7: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[3]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00001800:ALU     wmask: RG omask: NONE
	1:RGB_ADDR   0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00802420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/R/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

1	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00410000: id: 1 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

2	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

3	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

4	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000800:Addr0: 0t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

5	0:CMN_INST   0x00187800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

6	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL CONST[3..5]
DCL TEMP[0..3]
IMM FLT32 {    0.0000,     1.0000,     0.0000,     0.0000}
  0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D
  1: MUL TEMP[0], TEMP[0], CONST[3]
  2: SEQ TEMP[1].x, CONST[5].xxxx, IMM[0].xxxx
  3: IF TEMP[1].xxxx :0
  4:   MOV TEMP[1].x, IMM[0].yyyy
  5: ELSE :0
  6:   ABS TEMP[2].x, IN[0].zzzz
  7:   POW TEMP[1].x, TEMP[2].xxxx, CONST[5].xxxx
  8: ENDIF
  9: MUL TEMP[0], TEMP[0], TEMP[1].xxxx
 10: ADD TEMP[1].x, CONST[0].xxxx, -IN[0].zzzz
 11: SEQ TEMP[2].x, CONST[5].yyyy, IMM[0].xxxx
 12: IF TEMP[2].xxxx :0
 13:   MOV TEMP[2].x, IMM[0].yyyy
 14: ELSE :0
 15:   ABS TEMP[3].x, TEMP[1].xxxx
 16:   POW TEMP[2].x, TEMP[3].xxxx, CONST[5].yyyy
 17: ENDIF
 18: MUL TEMP[0], TEMP[0], TEMP[2].xxxx
 19: MUL TEMP[0], TEMP[0], CONST[4].zzzz
 20: TEX TEMP[2], IN[0].xyyy, SAMP[0], 2D
 21: ADD TEMP[1], TEMP[2], CONST[0].yyyy
 22: MOV_SAT TEMP[2].x, CONST[4].yyyy
 23: MAD TEMP[1], TEMP[1], TEMP[2].xxxx, CONST[0].xxxx
 24: MUL TEMP[0], TEMP[0], TEMP[1]
 25: MUL OUT[0], TEMP[0], CONST[4].xxxx
 26: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SUB none., const[5].xxxx, temp[0].0000; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SUB none., const[5].yyyy, temp[0].0000; [aluresult = (x == 0)]
 12: IF aluresult.x___;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: ADD none., const[5].xxxx, -temp[0].0000; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   MOV temp[2].x, |input[0].zzzz|;
  7:   LG2 temp[1].w, temp[2].xxxx;
  8:   MUL temp[1].w, temp[1].wwww, const[5].xxxx;
  9:   EX2 temp[1].x, temp[1].wwww;
 10: ENDIF;
 11: MUL temp[0], temp[0], temp[1].xxxx;
 12: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 13: ADD none., const[5].yyyy, -temp[0].0000; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1111;
 16: ELSE;
 17:   MOV temp[3].x, |temp[1].xxxx|;
 18:   LG2 temp[2].w, temp[3].xxxx;
 19:   MUL temp[2].w, temp[2].wwww, const[5].yyyy;
 20:   EX2 temp[2].x, temp[2].wwww;
 21: ENDIF;
 22: MUL temp[0], temp[0], temp[2].xxxx;
 23: MUL temp[0], temp[0], const[4].zzzz;
 24: TEX temp[2], input[0].xyyy, 2D[0];
 25: ADD temp[1], temp[2], const[0].yyyy;
 26: MOV_SAT temp[2].x, const[4].yyyy;
 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 28: MUL temp[0], temp[0], temp[1];
 29: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1___;
  5: ELSE;
  6:   MOV temp[2].x, |input[0].z___|;
  7:   LG2 temp[1].w, temp[2].___x;
  8:   MUL temp[1].w, temp[1].___w, const[5].___x;
  9:   EX2 temp[1].x, temp[1].w___;
 10: ENDIF;
 11: MUL temp[0], temp[0], temp[1].xxxx;
 12: ADD temp[1].x, const[0].x___, -input[0].z___;
 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1___;
 16: ELSE;
 17:   MOV temp[3].x, |temp[1].x___|;
 18:   LG2 temp[2].w, temp[3].___x;
 19:   MUL temp[2].w, temp[2].___w, const[5].___y;
 20:   EX2 temp[2].x, temp[2].w___;
 21: ENDIF;
 22: MUL temp[0], temp[0], temp[2].xxxx;
 23: MUL temp[0], temp[0], const[4].zzzz;
 24: TEX temp[2], input[0].xy__, 2D[0];
 25: ADD temp[1], temp[2], const[0].yyyy;
 26: MOV_SAT temp[2].x, const[4].y___;
 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 28: MUL temp[0], temp[0], temp[1];
 29: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1___;
  5: ELSE;
  6:   MOV temp[6].x, |input[0].z___|;
  7:   LG2 temp[7].w, temp[6].___x;
  8:   MUL temp[8].w, temp[7].___w, const[5].___x;
  9:   EX2 temp[1].x, temp[8].w___;
 10: ENDIF;
 11: MUL temp[9], temp[5], temp[1].xxxx;
 12: ADD temp[10].x, const[0].x___, -input[0].z___;
 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1___;
 16: ELSE;
 17:   MOV temp[11].x, |temp[10].x___|;
 18:   LG2 temp[12].w, temp[11].___x;
 19:   MUL temp[13].w, temp[12].___w, const[5].___y;
 20:   EX2 temp[2].x, temp[13].w___;
 21: ENDIF;
 22: MUL temp[14], temp[9], temp[2].xxxx;
 23: MUL temp[15], temp[14], const[4].zzzz;
 24: TEX temp[16], input[0].xy__, 2D[0];
 25: ADD temp[17], temp[16], const[0].yyyy;
 26: MOV_SAT temp[18].x, const[4].y___;
 27: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 28: MUL temp[20], temp[15], temp[19];
 29: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3]
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: IF aluresult.x___;
  4:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  5: ELSE;
  6:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  7:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  8:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
  9: ENDIF;
 10: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 11: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[10].x, src0.x__, src0.111, -src1.z__
 12: src0.xyz = const[5]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[10]
       LG2 temp[12].w, |src0.x|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 21: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0]
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 26: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 27: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[10].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[10], src0.w = temp[10]
       LG2 temp[12].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[10].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.w = temp[10]
       LG2 temp[12].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[2].x, src0.1__, src0.1__, src0.0__
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[1].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[1]
       MAD temp[1].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[1]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[1].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.1__, src0.0__
 15: ELSE;
 16:   src0.w = temp[1]
       LG2 temp[1].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[1]
       MAD temp[1].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[1]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4]
     MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[0].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[1].x, src0.y__, src0.1__, src0.0__
 25: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[1].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[0]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[1].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1]
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02410000: id: 1 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401f400: src: 0 R/G/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

2	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

3	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 6 IGN_UNC
	3:FC_ADDR    0x00060000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 6, JMP_GLBL: 0

4	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

6	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00048019:LN2 dest:1 alp_A_src:0 B 2 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

7	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

8	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c008:EX2 dest:0 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

9	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

10	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

11	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x00040105:Addr0: 5c, Addr1: 0c, Addr2: 0t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x54490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:2 B 1

12	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC
	3:FC_ADDR    0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0

13	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

14	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 19
	3:FC_ADDR    0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0

15	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0004c019:LN2 dest:1 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

16	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0020c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 G 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

17	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c008:EX2 dest:0 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

18	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 19
	3:FC_ADDR    0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0

19	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A
	3:TEX_DXDY:  0x00000000

20	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

21	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0
	4 ALPHA_INST:0x0048c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 B 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

22	0:CMN_INST   0x00080800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

23	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040003:Addr0: 3t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x0a125020:MAD dest:2 rgb_C_src:1 G/G/G 0 alp_C_src:1 G 0

24	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x10000402:Addr0: 2t, Addr1: 1t, Addr2: 0c, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x04002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:2 R 0

25	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

26	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL CONST[3..5]
DCL TEMP[0..3]
IMM FLT32 {    0.0000,     1.0000,     0.0000,     0.0000}
  0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D
  1: MUL TEMP[0], TEMP[0], CONST[3]
  2: SEQ TEMP[1].x, CONST[5].xxxx, IMM[0].xxxx
  3: IF TEMP[1].xxxx :0
  4:   MOV TEMP[1].x, IMM[0].yyyy
  5: ELSE :0
  6:   ABS TEMP[2].x, IN[0].zzzz
  7:   POW TEMP[1].x, TEMP[2].xxxx, CONST[5].xxxx
  8: ENDIF
  9: MUL TEMP[0], TEMP[0], TEMP[1].xxxx
 10: ADD TEMP[1].x, CONST[0].xxxx, -IN[0].zzzz
 11: SEQ TEMP[2].x, CONST[5].yyyy, IMM[0].xxxx
 12: IF TEMP[2].xxxx :0
 13:   MOV TEMP[2].x, IMM[0].yyyy
 14: ELSE :0
 15:   ABS TEMP[3].x, TEMP[1].xxxx
 16:   POW TEMP[2].x, TEMP[3].xxxx, CONST[5].yyyy
 17: ENDIF
 18: MUL TEMP[0], TEMP[0], TEMP[2].xxxx
 19: MUL TEMP[0], TEMP[0], CONST[4].zzzz
 20: TEX TEMP[2], IN[0].xyyy, SAMP[0], 2D
 21: ADD TEMP[1], TEMP[2], CONST[0].yyyy
 22: MOV_SAT TEMP[2].x, CONST[4].yyyy
 23: MAD TEMP[1], TEMP[1], TEMP[2].xxxx, CONST[0].xxxx
 24: MUL TEMP[0], TEMP[0], TEMP[1]
 25: MUL OUT[0], TEMP[0], CONST[4].xxxx
 26: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SUB none., const[5].xxxx, temp[0].0000; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SUB none., const[5].yyyy, temp[0].0000; [aluresult = (x == 0)]
 12: IF aluresult.x___;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: ADD none., const[5].xxxx, -temp[0].0000; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   MOV temp[2].x, |input[0].zzzz|;
  7:   LG2 temp[1].w, temp[2].xxxx;
  8:   MUL temp[1].w, temp[1].wwww, const[5].xxxx;
  9:   EX2 temp[1].x, temp[1].wwww;
 10: ENDIF;
 11: MUL temp[0], temp[0], temp[1].xxxx;
 12: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 13: ADD none., const[5].yyyy, -temp[0].0000; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1111;
 16: ELSE;
 17:   MOV temp[3].x, |temp[1].xxxx|;
 18:   LG2 temp[2].w, temp[3].xxxx;
 19:   MUL temp[2].w, temp[2].wwww, const[5].yyyy;
 20:   EX2 temp[2].x, temp[2].wwww;
 21: ENDIF;
 22: MUL temp[0], temp[0], temp[2].xxxx;
 23: MUL temp[0], temp[0], const[4].zzzz;
 24: TEX temp[2], input[0].xyyy, 2D[0];
 25: ADD temp[1], temp[2], const[0].yyyy;
 26: MOV_SAT temp[2].x, const[4].yyyy;
 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 28: MUL temp[0], temp[0], temp[1];
 29: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1___;
  5: ELSE;
  6:   MOV temp[2].x, |input[0].z___|;
  7:   LG2 temp[1].w, temp[2].___x;
  8:   MUL temp[1].w, temp[1].___w, const[5].___x;
  9:   EX2 temp[1].x, temp[1].w___;
 10: ENDIF;
 11: MUL temp[0], temp[0], temp[1].xxxx;
 12: ADD temp[1].x, const[0].x___, -input[0].z___;
 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1___;
 16: ELSE;
 17:   MOV temp[3].x, |temp[1].x___|;
 18:   LG2 temp[2].w, temp[3].___x;
 19:   MUL temp[2].w, temp[2].___w, const[5].___y;
 20:   EX2 temp[2].x, temp[2].w___;
 21: ENDIF;
 22: MUL temp[0], temp[0], temp[2].xxxx;
 23: MUL temp[0], temp[0], const[4].zzzz;
 24: TEX temp[2], input[0].xy__, 2D[0];
 25: ADD temp[1], temp[2], const[0].yyyy;
 26: MOV_SAT temp[2].x, const[4].y___;
 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 28: MUL temp[0], temp[0], temp[1];
 29: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1___;
  5: ELSE;
  6:   MOV temp[6].x, |input[0].z___|;
  7:   LG2 temp[7].w, temp[6].___x;
  8:   MUL temp[8].w, temp[7].___w, const[5].___x;
  9:   EX2 temp[1].x, temp[8].w___;
 10: ENDIF;
 11: MUL temp[9], temp[5], temp[1].xxxx;
 12: ADD temp[10].x, const[0].x___, -input[0].z___;
 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1___;
 16: ELSE;
 17:   MOV temp[11].x, |temp[10].x___|;
 18:   LG2 temp[12].w, temp[11].___x;
 19:   MUL temp[13].w, temp[12].___w, const[5].___y;
 20:   EX2 temp[2].x, temp[13].w___;
 21: ENDIF;
 22: MUL temp[14], temp[9], temp[2].xxxx;
 23: MUL temp[15], temp[14], const[4].zzzz;
 24: TEX temp[16], input[0].xy__, 2D[0];
 25: ADD temp[17], temp[16], const[0].yyyy;
 26: MOV_SAT temp[18].x, const[4].y___;
 27: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 28: MUL temp[20], temp[15], temp[19];
 29: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3]
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: IF aluresult.x___;
  4:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  5: ELSE;
  6:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  7:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  8:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
  9: ENDIF;
 10: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 11: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[10].x, src0.x__, src0.111, -src1.z__
 12: src0.xyz = const[5]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[10]
       LG2 temp[12].w, |src0.x|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 21: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0]
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 26: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 27: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[10].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[10], src0.w = temp[10]
       LG2 temp[12].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[10].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.w = temp[10]
       LG2 temp[12].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[2].x, src0.1__, src0.1__, src0.0__
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[1].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[1]
       MAD temp[1].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[1]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[1].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.1__, src0.0__
 15: ELSE;
 16:   src0.w = temp[1]
       LG2 temp[1].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[1]
       MAD temp[1].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[1]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4]
     MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[0].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[1].x, src0.y__, src0.1__, src0.0__
 25: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[1].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[0]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[1].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1]
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02410000: id: 1 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401f400: src: 0 R/G/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

2	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

3	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 6 IGN_UNC
	3:FC_ADDR    0x00060000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 6, JMP_GLBL: 0

4	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

6	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00048019:LN2 dest:1 alp_A_src:0 B 2 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

7	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

8	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c008:EX2 dest:0 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

9	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

10	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

11	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x00040105:Addr0: 5c, Addr1: 0c, Addr2: 0t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x54490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:2 B 1

12	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC
	3:FC_ADDR    0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0

13	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

14	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 19
	3:FC_ADDR    0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0

15	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0004c019:LN2 dest:1 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

16	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0020c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 G 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

17	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c008:EX2 dest:0 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

18	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 19
	3:FC_ADDR    0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0

19	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A
	3:TEX_DXDY:  0x00000000

20	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

21	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0
	4 ALPHA_INST:0x0048c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 B 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

22	0:CMN_INST   0x00080800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

23	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040003:Addr0: 3t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x0a125020:MAD dest:2 rgb_C_src:1 G/G/G 0 alp_C_src:1 G 0

24	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x10000402:Addr0: 2t, Addr1: 1t, Addr2: 0c, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x04002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:2 R 0

25	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

26	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL TEMP[0]
  0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D
  1: MOV OUT[0], TEMP[0]
  2: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV output[0], temp[0];
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV_SAT output[0], temp[0];
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV_SAT output[0], temp[0];
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV_SAT output[0], temp[0];
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[0];
  1: MOV_SAT output[0], temp[0];
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[0];
  1: MOV_SAT output[0], temp[0];
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: MOV_SAT output[0], temp[1];
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: MOV_SAT output[0], temp[1];
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: MOV_SAT output[0], temp[1];
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: MOV_SAT output[0], temp[1];
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[1], input[0].xy__, 2D[0];
  1: src0.xyz = temp[1], src0.w = temp[1]
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT
     MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL CONST[1..4]
DCL TEMP[0..1]
  0: MAD TEMP[0].xy, IN[0].xyyy, CONST[4].xyyy, CONST[3].xyyy
  1: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D
  2: MUL TEMP[0], TEMP[1], CONST[1]
  3: MUL OUT[0], TEMP[0], CONST[2].xxxx
  4: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL output[0], temp[0], const[2].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL output[0], temp[0], const[2].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL output[0], temp[0], const[2].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL output[0], temp[0], const[2].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL_SAT output[0], temp[0], const[2].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL_SAT output[0], temp[0], const[2].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL_SAT output[0], temp[0], const[2].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy;
  1: TEX temp[1], temp[0].xyyy, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL_SAT output[0], temp[0], const[2].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MAD temp[0].xy, input[0].xy__, const[4].xy__, const[3].xy__;
  1: TEX temp[1], temp[0].xy__, 2D[0];
  2: MUL temp[0], temp[1], const[1];
  3: MUL_SAT output[0], temp[0], const[2].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__;
  1: TEX temp[3], temp[2].xy__, 2D[0];
  2: MUL temp[4], temp[3], const[1];
  3: MUL_SAT output[0], temp[4], const[2].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__;
  1: TEX temp[3], temp[2].xy__, 2D[0];
  2: MUL temp[4], temp[3], const[1];
  3: MUL_SAT output[0], temp[4], const[2].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__;
  1: TEX temp[3], temp[2].xy__, 2D[0];
  2: MUL temp[4], temp[3], const[1];
  3: MUL_SAT output[0], temp[4], const[2].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__;
  1: TEX temp[3], temp[2].xy__, 2D[0];
  2: MUL temp[4], temp[3], const[1];
  3: MUL_SAT output[0], temp[4], const[2].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3]
     MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_
  1: TEX temp[3], temp[2].xy__, 2D[0];
  2: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[1], src1.w = const[1]
     MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[4].w, src0.w, src1.w, src0.0
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[2]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3]
     MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_
  1: BEGIN_TEX;
  2: TEX temp[3], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[1], src1.w = const[1] SEM_WAIT
     MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[4].w, src0.w, src1.w, src0.0
  4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[2]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3]
     MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_
  1: BEGIN_TEX;
  2: TEX temp[3], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[1], src1.w = const[1] SEM_WAIT
     MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[4].w, src0.w, src1.w, src0.0
  4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[2]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3]
     MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_
  1: BEGIN_TEX;
  2: TEX temp[0], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] SEM_WAIT
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00001800:ALU     wmask: RG omask: NONE
	1:RGB_ADDR   0x10341000:Addr0: 0t, Addr1: 4c, Addr2: 3c, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00842420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00422000:MAD dest:0 rgb_C_src:2 R/G/0 0 alp_C_src:0 R 0

1	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

2	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040400:Addr0: 0t, Addr1: 1c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08040400:Addr0: 0t, Addr1: 1c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

3	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08040800:Addr0: 0t, Addr1: 2c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL CONST[3..5]
DCL TEMP[0..3]
IMM FLT32 {    0.0000,     1.0000,     0.0000,     0.0000}
  0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D
  1: MUL TEMP[0], TEMP[0], CONST[3]
  2: SEQ TEMP[1].x, CONST[5].xxxx, IMM[0].xxxx
  3: IF TEMP[1].xxxx :0
  4:   MOV TEMP[1].x, IMM[0].yyyy
  5: ELSE :0
  6:   ABS TEMP[2].x, IN[0].zzzz
  7:   POW TEMP[1].x, TEMP[2].xxxx, CONST[5].xxxx
  8: ENDIF
  9: MUL TEMP[0], TEMP[0], TEMP[1].xxxx
 10: ADD TEMP[1].x, CONST[0].xxxx, -IN[0].zzzz
 11: SEQ TEMP[2].x, CONST[5].yyyy, IMM[0].xxxx
 12: IF TEMP[2].xxxx :0
 13:   MOV TEMP[2].x, IMM[0].yyyy
 14: ELSE :0
 15:   ABS TEMP[3].x, TEMP[1].xxxx
 16:   POW TEMP[2].x, TEMP[3].xxxx, CONST[5].yyyy
 17: ENDIF
 18: MUL TEMP[0], TEMP[0], TEMP[2].xxxx
 19: MUL TEMP[0], TEMP[0], CONST[4].zzzz
 20: TEX TEMP[2], IN[0].xyyy, SAMP[0], 2D
 21: ADD TEMP[1], TEMP[2], CONST[0].yyyy
 22: MOV_SAT TEMP[2].x, CONST[4].yyyy
 23: MAD TEMP[1], TEMP[1], TEMP[2].xxxx, CONST[0].xxxx
 24: MUL TEMP[0], TEMP[0], TEMP[1]
 25: MUL OUT[0], TEMP[0], CONST[4].xxxx
 26: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL output[0], temp[0], const[4].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SEQ temp[1].x, const[5].xxxx, temp[0].0000;
  3: IF temp[1].xxxx;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000;
 12: IF temp[2].xxxx;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: SUB none., const[5].xxxx, temp[0].0000; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   ABS temp[2].x, input[0].zzzz;
  7:   POW temp[1].x, temp[2].xxxx, const[5].xxxx;
  8: ENDIF;
  9: MUL temp[0], temp[0], temp[1].xxxx;
 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 11: SUB none., const[5].yyyy, temp[0].0000; [aluresult = (x == 0)]
 12: IF aluresult.x___;
 13:   MOV temp[2].x, temp[0].1111;
 14: ELSE;
 15:   ABS temp[3].x, temp[1].xxxx;
 16:   POW temp[2].x, temp[3].xxxx, const[5].yyyy;
 17: ENDIF;
 18: MUL temp[0], temp[0], temp[2].xxxx;
 19: MUL temp[0], temp[0], const[4].zzzz;
 20: TEX temp[2], input[0].xyyy, 2D[0];
 21: ADD temp[1], temp[2], const[0].yyyy;
 22: MOV_SAT temp[2].x, const[4].yyyy;
 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 24: MUL temp[0], temp[0], temp[1];
 25: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xyyy, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: ADD none., const[5].xxxx, -temp[0].0000; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1111;
  5: ELSE;
  6:   MOV temp[2].x, |input[0].zzzz|;
  7:   LG2 temp[1].w, temp[2].xxxx;
  8:   MUL temp[1].w, temp[1].wwww, const[5].xxxx;
  9:   EX2 temp[1].x, temp[1].wwww;
 10: ENDIF;
 11: MUL temp[0], temp[0], temp[1].xxxx;
 12: ADD temp[1].x, const[0].xxxx, -input[0].zzzz;
 13: ADD none., const[5].yyyy, -temp[0].0000; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1111;
 16: ELSE;
 17:   MOV temp[3].x, |temp[1].xxxx|;
 18:   LG2 temp[2].w, temp[3].xxxx;
 19:   MUL temp[2].w, temp[2].wwww, const[5].yyyy;
 20:   EX2 temp[2].x, temp[2].wwww;
 21: ENDIF;
 22: MUL temp[0], temp[0], temp[2].xxxx;
 23: MUL temp[0], temp[0], const[4].zzzz;
 24: TEX temp[2], input[0].xyyy, 2D[0];
 25: ADD temp[1], temp[2], const[0].yyyy;
 26: MOV_SAT temp[2].x, const[4].yyyy;
 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 28: MUL temp[0], temp[0], temp[1];
 29: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[0], input[0].xy__, 2D[1];
  1: MUL temp[0], temp[0], const[3];
  2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1___;
  5: ELSE;
  6:   MOV temp[2].x, |input[0].z___|;
  7:   LG2 temp[1].w, temp[2].___x;
  8:   MUL temp[1].w, temp[1].___w, const[5].___x;
  9:   EX2 temp[1].x, temp[1].w___;
 10: ENDIF;
 11: MUL temp[0], temp[0], temp[1].xxxx;
 12: ADD temp[1].x, const[0].x___, -input[0].z___;
 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1___;
 16: ELSE;
 17:   MOV temp[3].x, |temp[1].x___|;
 18:   LG2 temp[2].w, temp[3].___x;
 19:   MUL temp[2].w, temp[2].___w, const[5].___y;
 20:   EX2 temp[2].x, temp[2].w___;
 21: ENDIF;
 22: MUL temp[0], temp[0], temp[2].xxxx;
 23: MUL temp[0], temp[0], const[4].zzzz;
 24: TEX temp[2], input[0].xy__, 2D[0];
 25: ADD temp[1], temp[2], const[0].yyyy;
 26: MOV_SAT temp[2].x, const[4].y___;
 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx;
 28: MUL temp[0], temp[0], temp[1];
 29: MUL_SAT output[0], temp[0], const[4].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, temp[0].1___;
  5: ELSE;
  6:   MOV temp[6].x, |input[0].z___|;
  7:   LG2 temp[7].w, temp[6].___x;
  8:   MUL temp[8].w, temp[7].___w, const[5].___x;
  9:   EX2 temp[1].x, temp[8].w___;
 10: ENDIF;
 11: MUL temp[9], temp[5], temp[1].xxxx;
 12: ADD temp[10].x, const[0].x___, -input[0].z___;
 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)]
 14: IF aluresult.x___;
 15:   MOV temp[2].x, temp[0].1___;
 16: ELSE;
 17:   MOV temp[11].x, |temp[10].x___|;
 18:   LG2 temp[12].w, temp[11].___x;
 19:   MUL temp[13].w, temp[12].___w, const[5].___y;
 20:   EX2 temp[2].x, temp[13].w___;
 21: ENDIF;
 22: MUL temp[14], temp[9], temp[2].xxxx;
 23: MUL temp[15], temp[14], const[4].zzzz;
 24: TEX temp[16], input[0].xy__, 2D[0];
 25: ADD temp[17], temp[16], const[0].yyyy;
 26: MOV_SAT temp[18].x, const[4].y___;
 27: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 28: MUL temp[20], temp[15], temp[19];
 29: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: MUL temp[5], temp[4], const[3];
  2: MOV none., const[5].x___; [aluresult = (x == 0)]
  3: IF aluresult.x___;
  4:   MOV temp[1].x, none.1___;
  5: ELSE;
  6:   LG2 temp[7].w, |input[0].___z|;
  7:   MUL temp[8].w, temp[7].___w, const[5].___x;
  8:   EX2 temp[1].x, temp[8].w___;
  9: ENDIF;
 10: MUL temp[9], temp[5], temp[1].xxxx;
 11: ADD temp[10].x, const[0].x___, -input[0].z___;
 12: MOV none., const[5].y___; [aluresult = (x == 0)]
 13: IF aluresult.x___;
 14:   MOV temp[2].x, none.1___;
 15: ELSE;
 16:   LG2 temp[12].w, |temp[10].___x|;
 17:   MUL temp[13].w, temp[12].___w, const[5].___y;
 18:   EX2 temp[2].x, temp[13].w___;
 19: ENDIF;
 20: MUL temp[14], temp[9], temp[2].xxxx;
 21: MUL temp[15], temp[14], const[4].zzzz;
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: ADD temp[17], temp[16], const[0].yyyy;
 24: MOV_SAT temp[18].x, const[4].y___;
 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx;
 26: MUL temp[20], temp[15], temp[19];
 27: MUL_SAT output[0], temp[20], const[4].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[4], input[0].xy__, 2D[1];
  1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3]
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: IF aluresult.x___;
  4:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  5: ELSE;
  6:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  7:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  8:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
  9: ENDIF;
 10: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 11: src0.xyz = const[0], src1.xyz = input[0]
     MAD temp[10].x, src0.x__, src0.111, -src1.z__
 12: src0.xyz = const[5]
     MAD aluresult, src0.y__, src0.111, src0.000
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[10]
       LG2 temp[12].w, |src0.x|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 21: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 22: TEX temp[16], input[0].xy__, 2D[0];
 23: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0]
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 26: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 27: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[10].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.xyz = temp[10], src0.w = temp[10]
       LG2 temp[12].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[5].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[1].x, src0.1__, src0.111, src0.000
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[7].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[7]
       MAD temp[8].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[8]
       REPL_ALPHA temp[1].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1]
     MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[9].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[10].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.111, src0.000
 15: ELSE;
 16:   src0.w = temp[10]
       LG2 temp[12].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[12]
       MAD temp[13].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[13]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2]
     MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[14].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4]
     MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[15].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[18].x, src0.y__, src0.111, src0.000
 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT
     MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[17].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0]
     MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[19].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19]
     MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[20].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = const[5]
     MAD aluresult, src0.x__, src0.111, src0.000
      [aluresult = (result == 0)]
  3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[3], src1.w = const[3] SEM_WAIT
     MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  4: IF aluresult.x___;
  5:   
       MAD temp[2].x, src0.1__, src0.1__, src0.0__
  6: ELSE;
  7:   src0.xyz = input[0]
       LG2 temp[1].w, |src0.z|
  8:   src0.xyz = const[5], src0.w = temp[1]
       MAD temp[1].w, src0.w, src0.x, src0.0
  9:   src0.w = temp[1]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 10: ENDIF;
 11: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0]
     MAD aluresult, src0.y__, src0.111, src0.000
     MAD temp[1].w, src1.x, src0.1, -src2.z
      [aluresult = (result == 0)]
 13: IF aluresult.x___;
 14:   
       MAD temp[2].x, src0.1__, src0.1__, src0.0__
 15: ELSE;
 16:   src0.w = temp[1]
       LG2 temp[1].w, |src0.w|
 17:   src0.xyz = const[5], src0.w = temp[1]
       MAD temp[1].w, src0.w, src0.y, src0.0
 18:   src0.w = temp[1]
       REPL_ALPHA temp[2].x
       EX2, src0.w
 19: ENDIF;
 20: BEGIN_TEX;
 21: TEX temp[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
 22: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD temp[0].w, src0.w, src1.x, src0.0
 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4]
     MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000
     MAD temp[0].w, src0.w, src1.z, src0.0
 24: src0.xyz = const[4]
     MAD_SAT temp[1].x, src0.y__, src0.1__, src0.0__
 25: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src0.111, src1.yyy
     MAD temp[1].w, src0.w, src0.1, src1.y
 26: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[0]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xxx
     MAD temp[1].w, src0.w, src1.x, src2.x
 27: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1]
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02410000: id: 1 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401f400: src: 0 R/G/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00000000:ALU     wmask: NONE omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

2	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

3	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 6 IGN_UNC
	3:FC_ADDR    0x00060000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 6, JMP_GLBL: 0

4	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

6	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00048019:LN2 dest:1 alp_A_src:0 B 2 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

7	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

8	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c008:EX2 dest:0 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

9	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10
	3:FC_ADDR    0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0

10	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

11	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x00040105:Addr0: 5c, Addr1: 0c, Addr2: 0t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x54490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:2 B 1

12	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC
	3:FC_ADDR    0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0

13	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

14	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 19
	3:FC_ADDR    0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0

15	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0004c019:LN2 dest:1 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

16	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0020c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 G 0 targ 0 w:0
	5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0

17	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0000c008:EX2 dest:0 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

18	0:CMN_INST   0x00000402:FC    ALU WAIT wmask: NONE omask: NONE
	2:FC_INST    0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 19
	3:FC_ADDR    0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0

19	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A
	3:TEX_DXDY:  0x00000000

20	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

21	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0
	4 ALPHA_INST:0x0048c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 B 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

22	0:CMN_INST   0x00080800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

23	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08040003:Addr0: 3t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x0a125020:MAD dest:2 rgb_C_src:1 G/G/G 0 alp_C_src:1 G 0

24	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x10000402:Addr0: 2t, Addr1: 1t, Addr2: 0c, srcp:0
	2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x04002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:2 R 0

25	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

26	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #32:
fixme:d3d_shader:print_glsl_info_log     0:84(30): error: array index must be < 245
fixme:d3d_shader:print_glsl_info_log     0:84(35): error: type mismatch
fixme:d3d_shader:print_glsl_info_log     0:84(35): error: Operands to arithmetic operators must be numeric
fixme:d3d_shader:print_glsl_info_log     0:91(30): error: array index must be < 245
fixme:d3d_shader:print_glsl_info_log     0:91(35): error: type mismatch
fixme:d3d_shader:print_glsl_info_log     0:91(35): error: Operands to arithmetic operators must be numeric
fixme:d3d_shader:print_glsl_info_log     0:93(17): error: array index must be < 245
fixme:d3d_shader:print_glsl_info_log     0:93(22): error: type mismatch
fixme:d3d_shader:shader_glsl_validate_link Program 31 link status invalid.
fixme:d3d_shader:shader_glsl_dump_program_source Object 33:
fixme:d3d_shader:shader_glsl_dump_program_source     GL_OBJECT_SUBTYPE_ARB: GL_VERTEX_SHADER_ARB.
fixme:d3d_shader:shader_glsl_dump_program_source     GL_OBJECT_COMPILE_STATUS_ARB: 1.
fixme:d3d_shader:shader_glsl_dump_program_source 
fixme:d3d_shader:shader_glsl_dump_program_source     #version 120
fixme:d3d_shader:shader_glsl_dump_program_source     varying vec4 IN[8];
fixme:d3d_shader:shader_glsl_dump_program_source     void order_ps_input(in vec4 OUT[12]) {
fixme:d3d_shader:shader_glsl_dump_program_source     gl_Position.xyzw = OUT[0].xyzw;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[0].xyzw = OUT[1].xyzw;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[1].xyz = OUT[2].xyz;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[2].xyz = OUT[3].xyz;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[3].xyz = OUT[4].xyz;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[4].xyz = OUT[5].xyz;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[1].w = 0.0;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[2].w = 0.0;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[3].w = 0.0;
fixme:d3d_shader:shader_glsl_dump_program_source     IN[4].w = 0.0;
fixme:d3d_shader:shader_glsl_dump_program_source     }
fixme:d3d_shader:shader_glsl_dump_program_source 
fixme:d3d_shader:shader_glsl_dump_program_source Object 32:
fixme:d3d_shader:shader_glsl_dump_program_source     GL_OBJECT_SUBTYPE_ARB: GL_VERTEX_SHADER_ARB.
fixme:d3d_shader:shader_glsl_dump_program_source     GL_OBJECT_COMPILE_STATUS_ARB: 0.
fixme:d3d_shader:shader_glsl_dump_program_source 
fixme:d3d_shader:shader_glsl_dump_program_source     #version 120
fixme:d3d_shader:shader_glsl_dump_program_source     uniform vec4 VC[245];
fixme:d3d_shader:shader_glsl_dump_program_source     uniform vec4 posFixup;
fixme:d3d_shader:shader_glsl_dump_program_source     void order_ps_input(in vec4[12]);
fixme:d3d_shader:shader_glsl_dump_program_source     ivec4 A0;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 OUT[12];
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R0;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R1;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R2;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R3;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R4;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R5;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R6;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R7;
fixme:d3d_shader:shader_glsl_dump_program_source     attribute vec4 attrib0;
fixme:d3d_shader:shader_glsl_dump_program_source     attribute vec4 attrib1;
fixme:d3d_shader:shader_glsl_dump_program_source     attribute vec4 attrib2;
fixme:d3d_shader:shader_glsl_dump_program_source     attribute vec4 attrib3;
fixme:d3d_shader:shader_glsl_dump_program_source     attribute vec4 attrib4;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 tmp0;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 tmp1;
fixme:d3d_shader:shader_glsl_dump_program_source     void main() {
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (VC[0].x * attrib4.x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (fract(R0.x));
fixme:d3d_shader:shader_glsl_dump_program_source     R1.x = (attrib4.x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.y = ((R1.x * VC[0].x) + attrib1.x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (-R0.x + R0.y);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (R0.x * VC[0].y);
fixme:d3d_shader:shader_glsl_dump_program_source     A0.x = (int(floor(abs(R0.x) + 0.5) * sign(R0.x)));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (fract(attrib4.x));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (-R0.x + attrib4.x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.y = (R0.x * VC[0].z);
fixme:d3d_shader:shader_glsl_dump_program_source     A0.y = (int(floor(abs(R0.x) + 0.5) * sign(R0.x)));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[1].z = (VC[A0.y + 21].x);
fixme:d3d_shader:shader_glsl_dump_program_source     A0.y = (int(floor(abs(R0.y) + 0.5) * sign(R0.y)));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = (VC[A0.x + 37].xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyzw = (R0.xyzw * VC[A0.y + 27].yyyy);
fixme:d3d_shader:shader_glsl_dump_program_source     R2.xyzw = (VC[A0.x + 36].xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyzw = ((R2.xyzw * VC[A0.y + 27].xxxx) + R1.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.xyzw = (VC[A0.x + 38].xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyzw = ((R3.xyzw * VC[A0.y + 27].zzzz) + R1.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R4.xy = (VC[1].xy);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyzw = ((VC[A0.y + 27].wwww * R4.xxxy) + R1.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R5.xyzw = ((attrib0.xyzx * VC[1].yyyx) + VC[1].xxxy);
fixme:d3d_shader:shader_glsl_dump_program_source     R6.w = (dot(R5.xyzw, R1.xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     R1.w = (dot(attrib3.xyz, R1.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = (R0.xyzw * VC[A0.y + 24].yyyy);
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = ((R2.xyzw * VC[A0.y + 24].xxxx) + R7.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = ((R3.xyzw * VC[A0.y + 24].zzzz) + R7.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = ((VC[A0.y + 24].wwww * R4.xxxy) + R7.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R6.x = (dot(R5.xyzw, R7.xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     R1.x = (dot(attrib3.xyz, R7.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = (R0.xyzw * VC[A0.y + 25].yyyy);
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = ((R2.xyzw * VC[A0.y + 25].xxxx) + R7.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = ((R3.xyzw * VC[A0.y + 25].zzzz) + R7.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R7.xyzw = ((VC[A0.y + 25].wwww * R4.xxxy) + R7.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R6.y = (dot(R5.xyzw, R7.xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     R1.y = (dot(attrib3.xyz, R7.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = (R0.xyzw * VC[A0.y + 26].yyyy);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = ((R2.xyzw * VC[A0.y + 26].xxxx) + R0.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = ((R3.xyzw * VC[A0.y + 26].zzzz) + R0.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R2.x = (dot(R5.xyzw, VC[A0.x + 37].xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[1].w = (R2.x + -VC[16].x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = ((VC[A0.y + 26].wwww * R4.xxxy) + R0.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R6.z = (dot(R5.xyzw, R0.xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     R1.z = (dot(attrib3.xyz, R0.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[0].x = (dot(R6.xyzw, VC[224].xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[0].y = (dot(R6.xyzw, VC[225].xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[0].z = (dot(R6.xyzw, VC[226].xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[0].w = (dot(R6.xyzw, VC[227].xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyz = (-R6.xyz + VC[223].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = (dot(R1.xyzw, R1.xyzw));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = (inversesqrt(abs(R0.w)));
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyz = (R1.xyz * R0.www);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = (dot(R0.xyz, R0.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = (inversesqrt(abs(R0.w)));
fixme:d3d_shader:shader_glsl_dump_program_source     R2.xyz = (R0.xyz * R0.www);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyz = ((R0.xyz * R0.www) + VC[244].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     tmp0.x = dot(R0.xyz, R0.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.xyz = (tmp0.x == 0.0 ? vec3(0.0) : (R0.xyz * inversesqrt(tmp0.x)));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (dot(R1.xyz, R3.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = clamp(R0.x, 0.0, 1.0);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.w = (VC[1].z == 0.0 ? 1.0 : pow(abs(R0.x), VC[1].z));
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[4].xyz = (R1.www * VC[245].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (dot(R2.xyz, R1.xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (R0.x + R0.x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyz = ((R1.xyz * -R0.xxx) + R2.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = (dot(R1.xyz, VC[244].xyz));
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = clamp(R0.w, 0.0, 1.0);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.w = (R0.w * VC[0].w);
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[2].xyz = (R0.www * VC[245].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[5].xyz = (-R0.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyz = (VC[245].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[3].xyz = (R0.xyz * VC[0].www);
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[1].xy = (attrib2.xy);
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[5].w = (VC[1].y);
fixme:d3d_shader:shader_glsl_dump_program_source     OUT[6].xyz = (VC[1].xxx);
fixme:d3d_shader:shader_glsl_dump_program_source     order_ps_input(OUT);
fixme:d3d_shader:shader_glsl_dump_program_source     gl_FogFragCoord = 0.0;
fixme:d3d_shader:shader_glsl_dump_program_source     gl_Position.y = gl_Position.y * posFixup.y;
fixme:d3d_shader:shader_glsl_dump_program_source     gl_Position.xy += posFixup.zw * gl_Position.ww;
fixme:d3d_shader:shader_glsl_dump_program_source     gl_Position.z = gl_Position.z * 2.0 - gl_Position.w;
fixme:d3d_shader:shader_glsl_dump_program_source     }
fixme:d3d_shader:shader_glsl_dump_program_source 
fixme:d3d_shader:shader_glsl_dump_program_source Object 34:
fixme:d3d_shader:shader_glsl_dump_program_source     GL_OBJECT_SUBTYPE_ARB: GL_FRAGMENT_SHADER_ARB.
fixme:d3d_shader:shader_glsl_dump_program_source     GL_OBJECT_COMPILE_STATUS_ARB: 1.
fixme:d3d_shader:shader_glsl_dump_program_source 
fixme:d3d_shader:shader_glsl_dump_program_source     #version 120
fixme:d3d_shader:shader_glsl_dump_program_source     #extension GL_ARB_shader_texture_lod : enable
fixme:d3d_shader:shader_glsl_dump_program_source     uniform vec4 PC[224];
fixme:d3d_shader:shader_glsl_dump_program_source     uniform sampler2D Psampler0;
fixme:d3d_shader:shader_glsl_dump_program_source     uniform sampler2D Psampler2;
fixme:d3d_shader:shader_glsl_dump_program_source     uniform samplerCube Psampler4;
fixme:d3d_shader:shader_glsl_dump_program_source     varying vec4 IN[8];
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R0;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R1;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R2;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R3;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 R4;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 tmp0;
fixme:d3d_shader:shader_glsl_dump_program_source     vec4 tmp1;
fixme:d3d_shader:shader_glsl_dump_program_source     uniform vec4 PLC5;
fixme:d3d_shader:shader_glsl_dump_program_source     void main() {
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = (IN[0].wwww);
fixme:d3d_shader:shader_glsl_dump_program_source     if (any(lessThan(R0.xyzw, vec4(0.0)))) discard;
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyzw = (textureCube(Psampler4, IN[4].xyz).xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyz = (IN[2].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyz = ((R1.xyz * PLC5.xxx) + IN[1].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R2.xyzw = (texture2D(Psampler0, IN[0].xy).xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.xyzw = (PC[0].xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.xyzw = (-R3.xyzw + PC[1].xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R4.xyzw = (texture2D(Psampler2, IN[0].xy).xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.xyzw = ((R4.zzzz * R3.xyzw) + PC[0].xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R2.xyzw = (R2.xyzw * R3.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.xyz = (R4.yyy * IN[3].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyz = ((R1.xyz * R2.xyz) + R3.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyz = ((R0.xyz * R4.yyy) + R1.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R2.xyz = ((PC[2].xyz * R4.www) + R0.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (R4.x + IN[0].z);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = (R0.x + PLC5.y);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.x = clamp(R0.x, 0.0, 1.0);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.w = (PLC5.z);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.y = (1.0 / PC[4].x);
fixme:d3d_shader:shader_glsl_dump_program_source     R3.x = (R0.y == 0.0 ? 1.0 : pow(abs(R0.x), R0.y));
fixme:d3d_shader:shader_glsl_dump_program_source     R4.x = (PC[4].x);
fixme:d3d_shader:shader_glsl_dump_program_source     R0.xyz = ((R0.xxx * R4.xxx) + PC[3].xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     R1.xyz = (R3.xxx * R0.xyz);
fixme:d3d_shader:shader_glsl_dump_program_source     gl_FragData[0].xyzw = (R2.xyzw + R1.xyzw);
fixme:d3d_shader:shader_glsl_dump_program_source     }
fixme:d3d_shader:shader_glsl_dump_program_source 
fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #31:
fixme:d3d_shader:print_glsl_info_log     error: linking with uncompiled shader
Mesa: User error: GL_INVALID_OPERATION in glGetUniformfv(program)
err:d3d_shader:set_glsl_shader_program >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from Find glsl program uniform locations @ glsl_shader.c / 4440
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:set_glsl_shader_program >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB(programId) @ glsl_shader.c / 4453
Mesa: User error: GL_INVALID_OPERATION in glGetUniformfv(program)
err:d3d_shader:hardcode_local_constants >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from Hardcoding local constants @ glsl_shader.c / 3965
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL IN[2], GENERIC[14], PERSPECTIVE
DCL IN[3], GENERIC[15], PERSPECTIVE
DCL IN[4], GENERIC[16], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL SAMP[2]
DCL CONST[0]
DCL CONST[4..7]
DCL TEMP[0..4]
IMM FLT32 {    1.0000,     0.0000,     0.0000,     0.0000}
  0: MAD TEMP[0].xyz, IN[2].xyzz, CONST[0].xxxx, IN[1].xyzz
  1: ADD TEMP[1], -CONST[7], CONST[5]
  2: TEX TEMP[2], IN[0].xyyy, SAMP[1], 2D
  3: MAD TEMP[1], TEMP[2].xxxx, TEMP[1], CONST[7]
  4: TEX TEMP[3], IN[0].xyyy, SAMP[2], 2D
  5: ADD TEMP[4], IMM[0].xxxx, -TEMP[2].zzzz
  6: MUL TEMP[4], CONST[4], TEMP[4]
  7: MAD TEMP[4], TEMP[1], TEMP[2].zzzz, TEMP[4]
  8: MUL TEMP[3], TEMP[3], TEMP[4]
  9: MUL TEMP[1].xyz, TEMP[2].yyyy, IN[3].xyzz
 10: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[3].xyzz, TEMP[1].xyzz
 11: MOV OUT[0].w, TEMP[3].wwww
 12: TEX TEMP[1].xyz, IN[4].xyzz, SAMP[0], CUBE
 13: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[2].yyyy, TEMP[0].xyzz
 14: MAD OUT[0].xyz, CONST[6].xyzz, TEMP[2].wwww, TEMP[0].xyzz
 15: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV_SAT output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV_SAT output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV_SAT output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xyyy, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xyyy, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz;
 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz;
 11: MOV_SAT output[0].w, temp[3].wwww;
 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz;
 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: ADD temp[1], -const[7], const[5];
  2: TEX temp[2], input[0].xy__, 2D[1];
  3: MAD temp[1], temp[2].xxxx, temp[1], const[7];
  4: TEX temp[3], input[0].xy__, 2D[2];
  5: ADD temp[4], temp[0].1111, -temp[2].zzzz;
  6: MUL temp[4], const[4], temp[4];
  7: MAD temp[4], temp[1], temp[2].zzzz, temp[4];
  8: MUL temp[3], temp[3], temp[4];
  9: MUL temp[1].xyz, temp[2].yyy_, input[3].xyz_;
 10: MAD temp[0].xyz, temp[0].xyz_, temp[3].xyz_, temp[1].xyz_;
 11: MOV_SAT output[0].w, temp[3].___w;
 12: TEX temp[1].xyz, input[4].xyz_, CUBE[0];
 13: MAD temp[0].xyz, temp[1].xyz_, temp[2].yyy_, temp[0].xyz_;
 14: MAD_SAT output[0].xyz, const[6].xyz_, temp[2].www_, temp[0].xyz_;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: ADD temp[6], -const[7], const[5];
  2: TEX temp[7], input[0].xy__, 2D[1];
  3: MAD temp[8], temp[7].xxxx, temp[6], const[7];
  4: TEX temp[9], input[0].xy__, 2D[2];
  5: ADD temp[10], temp[0].1111, -temp[7].zzzz;
  6: MUL temp[11], const[4], temp[10];
  7: MAD temp[12], temp[8], temp[7].zzzz, temp[11];
  8: MUL temp[13], temp[9], temp[12];
  9: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_;
 10: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_;
 11: MOV_SAT output[0].w, temp[13].___w;
 12: TEX temp[16].xyz, input[4].xyz_, CUBE[0];
 13: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_;
 14: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[7], input[0].xy__, 2D[1];
  2: MAD temp[8], temp[7].xxxx, (const[5] - const[7]), const[7];
  3: TEX temp[9], input[0].xy__, 2D[2];
  4: MUL temp[11], const[4], (1 - temp[7]).zzzz;
  5: MAD temp[12], temp[8], temp[7].zzzz, temp[11];
  6: MUL temp[13], temp[9], temp[12];
  7: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_;
  8: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_;
  9: MOV_SAT output[0].w, temp[13].___w;
 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0];
 11: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_;
 12: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[7], input[0].xy__, 2D[1];
  2: MAD temp[8], temp[7].xxxx, (const[5] - const[7]), const[7];
  3: TEX temp[9], input[0].xy__, 2D[2];
  4: MUL temp[11], const[4], (1 - temp[7]).zzzz;
  5: MAD temp[12], temp[8], temp[7].zzzz, temp[11];
  6: MUL temp[13], temp[9], temp[12];
  7: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_;
  8: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_;
  9: MOV_SAT output[0].w, temp[13].___w;
 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0];
 11: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_;
 12: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[7], input[0].xy__, 2D[1];
  2: MAD temp[8], temp[7].xxxx, (const[5] - const[7]), const[7];
  3: TEX temp[9], input[0].xy__, 2D[2];
  4: MUL temp[11], const[4], (1 - temp[7]).zzzz;
  5: MAD temp[12], temp[8], temp[7].zzzz, temp[11];
  6: MUL temp[13], temp[9], temp[12];
  7: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_;
  8: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_;
  9: MOV_SAT output[0].w, temp[13].___w;
 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0];
 11: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_;
 12: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz
  1: TEX temp[7], input[0].xy__, 2D[1];
  2: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[7], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0)
     MAD temp[8].xyz, src2.xxx, srcp.xyz, src0.xyz
     MAD temp[8].w, src2.x, srcp.w, src0.w
  3: TEX temp[9], input[0].xy__, 2D[2];
  4: src0.xyz = temp[7], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0)
     MAD temp[11].xyz, src1.xyz, srcp.zzz, src0.000
     MAD temp[11].w, src0.w, srcp.z, src0.0
  5: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = temp[7], src1.w = temp[11], src2.xyz = temp[11]
     MAD temp[12].xyz, src0.xyz, src1.zzz, src2.xyz
     MAD temp[12].w, src0.w, src1.z, src1.w
  6: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[12], src1.w = temp[12]
     MAD temp[13].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[13].w, src0.w, src1.w, src0.0
  7: src0.xyz = temp[7], src1.xyz = input[3]
     MAD temp[14].xyz, src0.yyy, src1.xyz, src0.000
  8: src0.xyz = temp[5], src1.xyz = temp[13], src2.xyz = temp[14]
     MAD temp[15].xyz, src0.xyz, src1.xyz, src2.xyz
  9: src0.w = temp[13]
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0];
 11: src0.xyz = temp[16], src1.xyz = temp[7], src2.xyz = temp[15]
     MAD temp[17].xyz, src0.xyz, src1.yyy, src2.xyz
 12: src0.xyz = const[6], src0.w = temp[7], src1.xyz = temp[17]
     MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[7], input[0].xy__, 2D[1];
  2: TEX temp[9], input[0].xy__, 2D[2];
  3: TEX temp[16].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz
  5: src0.xyz = temp[7], src1.xyz = input[3] SEM_WAIT
     MAD temp[14].xyz, src0.yyy, src1.xyz, src0.000
  6: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[7], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0)
     MAD temp[8].xyz, src2.xxx, srcp.xyz, src0.xyz
     MAD temp[8].w, src2.x, srcp.w, src0.w
  7: src0.xyz = temp[7], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0)
     MAD temp[11].xyz, src1.xyz, srcp.zzz, src0.000
     MAD temp[11].w, src0.w, srcp.z, src0.0
  8: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = temp[7], src1.w = temp[11], src2.xyz = temp[11]
     MAD temp[12].xyz, src0.xyz, src1.zzz, src2.xyz
     MAD temp[12].w, src0.w, src1.z, src1.w
  9: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[12], src1.w = temp[12]
     MAD temp[13].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[13].w, src0.w, src1.w, src0.0
 10: src0.xyz = temp[5], src1.xyz = temp[13], src2.xyz = temp[14]
     MAD temp[15].xyz, src0.xyz, src1.xyz, src2.xyz
 11: src0.xyz = temp[16], src1.xyz = temp[7], src2.xyz = temp[15]
     MAD temp[17].xyz, src0.xyz, src1.yyy, src2.xyz
 12: src0.xyz = const[6], src0.w = temp[7], src1.xyz = temp[17], src1.w = temp[13]
     MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz
     MAD_SAT color[0].w, src1.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[7], input[0].xy__, 2D[1];
  2: TEX temp[9], input[0].xy__, 2D[2];
  3: TEX temp[16].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz
  5: src0.xyz = temp[7], src1.xyz = input[3] SEM_WAIT
     MAD temp[14].xyz, src0.yyy, src1.xyz, src0.000
  6: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[7], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0)
     MAD temp[8].xyz, src2.xxx, srcp.xyz, src0.xyz
     MAD temp[8].w, src2.x, srcp.w, src0.w
  7: src0.xyz = temp[7], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0)
     MAD temp[11].xyz, src1.xyz, srcp.zzz, src0.000
     MAD temp[11].w, src0.w, srcp.z, src0.0
  8: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = temp[7], src1.w = temp[11], src2.xyz = temp[11]
     MAD temp[12].xyz, src0.xyz, src1.zzz, src2.xyz
     MAD temp[12].w, src0.w, src1.z, src1.w
  9: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[12], src1.w = temp[12]
     MAD temp[13].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[13].w, src0.w, src1.w, src0.0
 10: src0.xyz = temp[5], src1.xyz = temp[13], src2.xyz = temp[14]
     MAD temp[15].xyz, src0.xyz, src1.xyz, src2.xyz
 11: src0.xyz = temp[16], src1.xyz = temp[7], src2.xyz = temp[15]
     MAD temp[17].xyz, src0.xyz, src1.yyy, src2.xyz
 12: src0.xyz = const[6], src0.w = temp[7], src1.xyz = temp[17], src1.w = temp[13]
     MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz
     MAD_SAT color[0].w, src1.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[5], input[0].xy__, 2D[1];
  2: TEX temp[0], input[0].xy__, 2D[2];
  3: TEX temp[4].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz
  5: src0.xyz = temp[5], src1.xyz = input[3] SEM_WAIT
     MAD temp[2].xyz, src0.yyy, src1.xyz, src0.000
  6: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[5], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0)
     MAD temp[3].xyz, src2.xxx, srcp.xyz, src0.xyz
     MAD temp[1].w, src2.x, srcp.w, src0.w
  7: src0.xyz = temp[5], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0)
     MAD temp[6].xyz, src1.xyz, srcp.zzz, src0.000
     MAD temp[2].w, src0.w, srcp.z, src0.0
  8: src0.xyz = temp[3], src0.w = temp[1], src1.xyz = temp[5], src1.w = temp[2], src2.xyz = temp[6]
     MAD temp[3].xyz, src0.xyz, src1.zzz, src2.xyz
     MAD temp[1].w, src0.w, src1.z, src1.w
  9: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[3], src1.w = temp[1]
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
 10: src0.xyz = temp[1], src1.xyz = temp[0], src2.xyz = temp[2]
     MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz
 11: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = temp[0]
     MAD temp[0].xyz, src0.xyz, src1.yyy, src2.xyz
 12: src0.xyz = const[6], src0.w = temp[5], src1.xyz = temp[0], src1.w = temp[0]
     MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz
     MAD_SAT color[0].w, src1.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00410000: id: 1 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe405f400: src: 0 R/G/A/A dst: 5 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00420000: id: 2 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

2	0:CMN_INST   0x00003807:TEX TEX_WAIT    wmask: RGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe404e404: src: 4 R/G/B/A dst: 4 R/G/B/A
	3:TEX_DXDY:  0x00000000

3	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x00140002:Addr0: 2t, Addr1: 0c, Addr2: 1t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0

4	0:CMN_INST   0x00003804:ALU TEX_WAIT    wmask: RGB omask: NONE
	1:RGB_ADDR   0x08000c05:Addr0: 5t, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442124:rgb_A_src:0 G/G/G 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x40541507:Addr0: 7c, Addr1: 5c, Addr2: 5t, srcp:1
	2:ALPHA_ADDR 0x48041507:Addr0: 7c, Addr1: 5c, Addr2: 128t, srcp:1
	3 RGB_INST:  0x00446002:rgb_A_src:2 R/R/R 0 rgb_B_src:3 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00782010:MAD dest:1 alp_A_src:2 R 0 alp_B_src:3 A 0 targ 0 w:0
	5 RGBA_INST: 0x18220030:MAD dest:3 rgb_C_src:0 R/G/B 0 alp_C_src:0 A 0

6	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0xc8041005:Addr0: 5t, Addr1: 4c, Addr2: 128t, srcp:3
	2:ALPHA_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00496221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 B/B/B 0 targ: 0
	4 ALPHA_INST:0x0058c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:3 B 0 targ 0 w:0
	5 RGBA_INST: 0x20490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

7	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x00601403:Addr0: 3t, Addr1: 5t, Addr2: 6t, srcp:0
	2:ALPHA_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0
	4 ALPHA_INST:0x0048c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 B 0 targ 0 w:0
	5 RGBA_INST: 0x1a222030:MAD dest:3 rgb_C_src:2 R/G/B 0 alp_C_src:1 A 0

8	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

9	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x00200001:Addr0: 1t, Addr1: 0t, Addr2: 2t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0

10	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x00001404:Addr0: 4t, Addr1: 5t, Addr2: 0t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0024a220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 G/G/G 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0

11	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08000106:Addr0: 6c, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x006d8220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 A/A/A 0 targ: 0
	4 ALPHA_INST:0x00c0d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL IN[2], GENERIC[14], PERSPECTIVE
DCL IN[3], GENERIC[15], PERSPECTIVE
DCL IN[4], GENERIC[16], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL SAMP[2]
DCL CONST[0]
DCL CONST[4]
DCL TEMP[0..3]
  0: MAD TEMP[0].xyz, IN[2].xyzz, CONST[0].xxxx, IN[1].xyzz
  1: TEX TEMP[1].y, IN[0].xyyy, SAMP[1], 2D
  2: MUL TEMP[2].xyz, TEMP[1].yyyy, IN[3].xyzz
  3: TEX TEMP[3], IN[0].xyyy, SAMP[2], 2D
  4: MUL TEMP[3], TEMP[3], CONST[4]
  5: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[3].xyzz, TEMP[2].xyzz
  6: MOV OUT[0].w, TEMP[3].wwww
  7: TEX TEMP[2].xyz, IN[4].xyzz, SAMP[0], CUBE
  8: MAD OUT[0].xyz, TEMP[2].xyzz, TEMP[1].yyyy, TEMP[0].xyzz
  9: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV_SAT output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV_SAT output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV_SAT output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz;
  1: TEX temp[1].y, input[0].xyyy, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz;
  3: TEX temp[3], input[0].xyyy, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz;
  6: MOV_SAT output[0].w, temp[3].wwww;
  7: TEX temp[2].xyz, input[4].xyzz, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MAD temp[0].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[1].y, input[0].xy__, 2D[1];
  2: MUL temp[2].xyz, temp[1].yyy_, input[3].xyz_;
  3: TEX temp[3], input[0].xy__, 2D[2];
  4: MUL temp[3], temp[3], const[4];
  5: MAD temp[0].xyz, temp[0].xyz_, temp[3].xyz_, temp[2].xyz_;
  6: MOV_SAT output[0].w, temp[3].___w;
  7: TEX temp[2].xyz, input[4].xyz_, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[2].xyz_, temp[1].yyy_, temp[0].xyz_;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_;
  3: TEX temp[7], input[0].xy__, 2D[2];
  4: MUL temp[8], temp[7], const[4];
  5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_;
  6: MOV_SAT output[0].w, temp[8].___w;
  7: TEX temp[10].xyz, input[4].xyz_, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_;
  3: TEX temp[7], input[0].xy__, 2D[2];
  4: MUL temp[8], temp[7], const[4];
  5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_;
  6: MOV_SAT output[0].w, temp[8].___w;
  7: TEX temp[10].xyz, input[4].xyz_, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_;
  3: TEX temp[7], input[0].xy__, 2D[2];
  4: MUL temp[8], temp[7], const[4];
  5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_;
  6: MOV_SAT output[0].w, temp[8].___w;
  7: TEX temp[10].xyz, input[4].xyz_, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_;
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_;
  3: TEX temp[7], input[0].xy__, 2D[2];
  4: MUL temp[8], temp[7], const[4];
  5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_;
  6: MOV_SAT output[0].w, temp[8].___w;
  7: TEX temp[10].xyz, input[4].xyz_, CUBE[0];
  8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[4].xyz, src0.xyz, src1.xxx, src2.xyz
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: src0.xyz = temp[5], src1.xyz = input[3]
     MAD temp[6].xyz, src0.yyy, src1.xyz, src0.000
  3: TEX temp[7], input[0].xy__, 2D[2];
  4: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4]
     MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[8].w, src0.w, src1.w, src0.0
  5: src0.xyz = temp[4], src1.xyz = temp[8], src2.xyz = temp[6]
     MAD temp[9].xyz, src0.xyz, src1.xyz, src2.xyz
  6: src0.w = temp[8]
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
  7: TEX temp[10].xyz, input[4].xyz_, CUBE[0];
  8: src0.xyz = temp[10], src1.xyz = temp[5], src2.xyz = temp[9]
     MAD_SAT color[0].xyz, src0.xyz, src1.yyy, src2.xyz
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: TEX temp[7], input[0].xy__, 2D[2];
  3: TEX temp[10].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[4].xyz, src0.xyz, src1.xxx, src2.xyz
  5: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[8].w, src0.w, src1.w, src0.0
  6: src0.xyz = temp[5], src1.xyz = input[3]
     MAD temp[6].xyz, src0.yyy, src1.xyz, src0.000
  7: src0.xyz = temp[4], src1.xyz = temp[8], src2.xyz = temp[6]
     MAD temp[9].xyz, src0.xyz, src1.xyz, src2.xyz
  8: src0.xyz = temp[10], src0.w = temp[8], src1.xyz = temp[5], src2.xyz = temp[9]
     MAD_SAT color[0].xyz, src0.xyz, src1.yyy, src2.xyz
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[5].y, input[0].xy__, 2D[1];
  2: TEX temp[7], input[0].xy__, 2D[2];
  3: TEX temp[10].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[4].xyz, src0.xyz, src1.xxx, src2.xyz
  5: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[8].w, src0.w, src1.w, src0.0
  6: src0.xyz = temp[5], src1.xyz = input[3]
     MAD temp[6].xyz, src0.yyy, src1.xyz, src0.000
  7: src0.xyz = temp[4], src1.xyz = temp[8], src2.xyz = temp[6]
     MAD temp[9].xyz, src0.xyz, src1.xyz, src2.xyz
  8: src0.xyz = temp[10], src0.w = temp[8], src1.xyz = temp[5], src2.xyz = temp[9]
     MAD_SAT color[0].xyz, src0.xyz, src1.yyy, src2.xyz
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0].z, input[0].xy__, 2D[1];
  2: TEX temp[5], input[0].xy__, 2D[2];
  3: TEX temp[4].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1]
     MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz
  5: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  6: src0.xyz = temp[0], src1.xyz = input[3]
     MAD temp[3].xyz, src0.zzz, src1.xyz, src0.000
  7: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[3]
     MAD temp[1].xyz, src0.xyz, src1.xyz, src2.xyz
  8: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = temp[0], src2.xyz = temp[1]
     MAD_SAT color[0].xyz, src0.xyz, src1.zzz, src2.xyz
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00002003:TEX     wmask: B omask: NONE
	1:TEX_INST:  0x00410000: id: 1 op:LD, ,  SCALED
	2:TEX_ADDR:  0xd400f400: src: 0 R/G/A/A dst: 0 R/G/G/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00420000: id: 2 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe405f400: src: 0 R/G/A/A dst: 5 R/G/B/A
	3:TEX_DXDY:  0x00000000

2	0:CMN_INST   0x00003807:TEX TEX_WAIT    wmask: RGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe404e404: src: 4 R/G/B/A dst: 4 R/G/B/A
	3:TEX_DXDY:  0x00000000

3	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x00140002:Addr0: 2t, Addr1: 0c, Addr2: 1t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0

4	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08041005:Addr0: 5t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08041005:Addr0: 5t, Addr1: 4c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

5	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442248:rgb_A_src:0 B/B/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

6	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x00300801:Addr0: 1t, Addr1: 2t, Addr2: 3t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0

7	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x00100004:Addr0: 4t, Addr1: 0t, Addr2: 1t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0

fixme:d3d:resource_check_usage Unhandled usage flags 0x8.
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL CONST[3..5]
DCL TEMP[0..2]
  0: MAD TEMP[0].x, CONST[5].xxxx, CONST[3].xxxx, IN[1].xxxx
  1: FRC TEMP[1].x, TEMP[0].xxxx
  2: ADD TEMP[1].x, TEMP[1].xxxx, IN[0].yyyy
  3: MOV TEMP[0].y, TEMP[1].xxxx
  4: MOV TEMP[0].x, IN[0].xxxx
  5: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D
  6: TEX TEMP[2], IN[0].xyyy, SAMP[1], 2D
  7: MUL TEMP[2], TEMP[2], CONST[4]
  8: MUL TEMP[0], TEMP[1], TEMP[2]
  9: MUL TEMP[0], TEMP[0], IN[1].yyyy
 10: MUL OUT[0], TEMP[0], CONST[0].xxxx
 11: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx;
  1: FRC temp[1].x, temp[0].xxxx;
  2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy;
  3: MOV temp[0].y, temp[1].xxxx;
  4: MOV temp[0].x, input[0].xxxx;
  5: TEX temp[1], temp[0].xyyy, 2D[0];
  6: TEX temp[2], input[0].xyyy, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: MAD temp[0].x, const[5].x___, const[3].x___, input[1].x___;
  1: FRC temp[1].x, temp[0].x___;
  2: ADD temp[1].x, temp[1].x___, input[0].y___;
  3: MOV temp[0].y, temp[1]._x__;
  4: MOV temp[0].x, input[0].x___;
  5: TEX temp[1], temp[0].xy__, 2D[0];
  6: TEX temp[2], input[0].xy__, 2D[1];
  7: MUL temp[2], temp[2], const[4];
  8: MUL temp[0], temp[1], temp[2];
  9: MUL temp[0], temp[0], input[1].yyyy;
 10: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___;
  1: FRC temp[4].x, temp[3].x___;
  2: ADD temp[5].x, temp[4].x___, input[0].y___;
  3: MOV temp[0].y, temp[5]._x__;
  4: MOV temp[0].x, input[0].x___;
  5: TEX temp[6], temp[0].xy__, 2D[0];
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: MUL temp[8], temp[7], const[4];
  8: MUL temp[9], temp[6], temp[8];
  9: MUL temp[10], temp[9], input[1].yyyy;
 10: MUL_SAT output[0], temp[10], const[0].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___;
  1: FRC temp[4].x, temp[3].x___;
  2: ADD temp[5].x, temp[4].x___, input[0].y___;
  3: MOV temp[0].y, temp[5]._x__;
  4: MOV temp[0].x, input[0].x___;
  5: TEX temp[6], temp[0].xy__, 2D[0];
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: MUL temp[8], temp[7], const[4];
  8: MUL temp[9], temp[6], temp[8];
  9: MUL temp[10], temp[9], input[1].yyyy;
 10: MUL_SAT output[0], temp[10], const[0].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___;
  1: FRC temp[4].x, temp[3].x___;
  2: ADD temp[5].x, temp[4].x___, input[0].y___;
  3: MOV temp[0].y, temp[5]._x__;
  4: MOV temp[0].x, input[0].x___;
  5: TEX temp[6], temp[0].xy__, 2D[0];
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: MUL temp[8], temp[7], const[4];
  8: MUL temp[9], temp[6], temp[8];
  9: MUL temp[10], temp[9], input[1].yyyy;
 10: MUL_SAT output[0], temp[10], const[0].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___;
  1: FRC temp[4].x, temp[3].x___;
  2: ADD temp[5].x, temp[4].x___, input[0].y___;
  3: MOV temp[0].y, temp[5]._x__;
  4: MOV temp[0].x, input[0].x___;
  5: TEX temp[6], temp[0].xy__, 2D[0];
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: MUL temp[8], temp[7], const[4];
  8: MUL temp[9], temp[6], temp[8];
  9: MUL temp[10], temp[9], input[1].yyyy;
 10: MUL_SAT output[0], temp[10], const[0].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1]
     MAD temp[3].x, src0.x__, src1.x__, src2.x__
  1: src0.xyz = temp[3]
     FRC temp[4].x, src0.x__
  2: src0.xyz = temp[4], src1.xyz = input[0]
     MAD temp[5].x, src0.x__, src0.111, src1.y__
  3: src0.xyz = temp[5]
     MAD temp[0].y, src0._x_, src0.111, src0.000
  4: src0.xyz = input[0]
     MAD temp[0].x, src0.x__, src0.111, src0.000
  5: TEX temp[6], temp[0].xy__, 2D[0];
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4]
     MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[8].w, src0.w, src1.w, src0.0
  8: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8]
     MAD temp[9].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[9].w, src0.w, src1.w, src0.0
  9: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = input[1]
     MAD temp[10].xyz, src0.xyz, src1.yyy, src0.000
     MAD temp[10].w, src0.w, src1.y, src0.0
 10: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: src0.xyz = input[0]
     MAD temp[0].x, src0.x__, src0.111, src0.000
  1: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1]
     MAD temp[3].w, src0.x, src1.x, src2.x
  2: src0.xyz = temp[3], src0.w = temp[3]
     FRC temp[4].x, src0.w__
  3: src0.xyz = temp[4], src1.xyz = input[0]
     MAD temp[5].x, src0.x__, src0.111, src1.y__
  4: src0.xyz = temp[5]
     MAD temp[0].y, src0._x_, src0.111, src0.000
  5: BEGIN_TEX;
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: TEX temp[6], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  8: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[8].w, src0.w, src1.w, src0.0
  9: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8]
     MAD temp[9].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[9].w, src0.w, src1.w, src0.0
 10: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = input[1]
     MAD temp[10].xyz, src0.xyz, src1.yyy, src0.000
     MAD temp[10].w, src0.w, src1.y, src0.0
 11: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: src0.xyz = input[0]
     MAD temp[0].x, src0.x__, src0.111, src0.000
  1: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1]
     MAD temp[3].w, src0.x, src1.x, src2.x
  2: src0.w = temp[3]
     FRC temp[4].x, src0.w__
  3: src0.xyz = temp[4], src1.xyz = input[0]
     MAD temp[5].x, src0.x__, src0.111, src1.y__
  4: src0.xyz = temp[5]
     MAD temp[0].y, src0._x_, src0.111, src0.000
  5: BEGIN_TEX;
  6: TEX temp[7], input[0].xy__, 2D[1];
  7: TEX temp[6], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  8: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[8].w, src0.w, src1.w, src0.0
  9: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8]
     MAD temp[9].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[9].w, src0.w, src1.w, src0.0
 10: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = input[1]
     MAD temp[10].xyz, src0.xyz, src1.yyy, src0.000
     MAD temp[10].w, src0.w, src1.y, src0.0
 11: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: src0.xyz = input[0]
     MAD temp[2].x, src0.x__, src0.11_, src0.00_
  1: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1]
     MAD temp[0].w, src0.x, src1.x, src2.x
  2: src0.w = temp[0]
     FRC temp[0].z, src0.__w
  3: src0.xyz = temp[0], src1.xyz = input[0]
     MAD temp[0].z, src0.__z, src0.__1, src1.__y
  4: src0.xyz = temp[0]
     MAD temp[2].y, src0._z_, src0.11_, src0.00_
  5: BEGIN_TEX;
  6: TEX temp[0], input[0].xy__, 2D[1];
  7: TEX temp[2], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  8: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4], src1.w = const[4] SEM_WAIT
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  9: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = temp[0], src1.w = temp[0]
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
 10: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[1]
     MAD temp[0].xyz, src0.xyz, src1.yyy, src0.000
     MAD temp[0].w, src0.w, src1.y, src0.0
 11: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00000800:ALU     wmask: R omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x009b0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

1	0:CMN_INST   0x00004000:ALU     wmask: A omask: NONE
	1:RGB_ADDR   0x00140d05:Addr0: 5c, Addr1: 3c, Addr2: 1t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00080000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x04000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:2 R 0

2	0:CMN_INST   0x00002000:ALU     wmask: B omask: NONE
	1:RGB_ADDR   0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00000390:rgb_A_src:0 0/0/A 0 rgb_B_src:0 R/R/R 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00000009:FRC dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0

3	0:CMN_INST   0x00002000:ALU     wmask: B omask: NONE
	1:RGB_ADDR   0x08000000:Addr0: 0t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00d20290:rgb_A_src:0 0/0/B 0 rgb_B_src:0 0/0/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00191000:MAD dest:0 rgb_C_src:1 0/0/G 0 alp_C_src:0 R 0

4	0:CMN_INST   0x00001000:ALU     wmask: G omask: NONE
	1:RGB_ADDR   0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x009b0450:rgb_A_src:0 0/B/0 0 rgb_B_src:0 1/1/0 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

5	0:CMN_INST   0x00007803:TEX     wmask: ARGB omask: NONE
	1:TEX_INST:  0x00410000: id: 1 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

6	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A
	3:TEX_DXDY:  0x00000000

7	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

8	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

9	0:CMN_INST   0x00007800:ALU     wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x0024a220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 G/G/G 0 targ: 0
	4 ALPHA_INST:0x0028c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 G 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

10	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08040000:Addr0: 0t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL CONST[0]
DCL TEMP[0]
  0: TEX TEMP[0], IN[1].xyyy, SAMP[0], 2D
  1: MUL TEMP[0], TEMP[0], IN[0]
  2: MUL OUT[0], TEMP[0], CONST[0].xxxx
  3: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL output[0], temp[0], const[0].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xyyy, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[0], input[1].xy__, 2D[0];
  1: MUL temp[0], temp[0], input[0];
  2: MUL_SAT output[0], temp[0], const[0].xxxx;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[1], input[1].xy__, 2D[0];
  1: MUL temp[2], temp[1], input[0];
  2: MUL_SAT output[0], temp[2], const[0].xxxx;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[1], input[1].xy__, 2D[0];
  1: MUL temp[2], temp[1], input[0];
  2: MUL_SAT output[0], temp[2], const[0].xxxx;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[1], input[1].xy__, 2D[0];
  1: MUL temp[2], temp[1], input[0];
  2: MUL_SAT output[0], temp[2], const[0].xxxx;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[1], input[1].xy__, 2D[0];
  1: MUL temp[2], temp[1], input[0];
  2: MUL_SAT output[0], temp[2], const[0].xxxx;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[1], input[1].xy__, 2D[0];
  1: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0]
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[2].w, src0.w, src1.w, src0.0
  2: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[2].w, src0.w, src1.w, src0.0
  3: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
     MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[2].w, src0.w, src1.w, src0.0
  3: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE;
  2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD temp[0].w, src0.w, src1.w, src0.0
  3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000
     MAD_SAT color[0].w, src0.w, src1.x, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00007807:TEX TEX_WAIT    wmask: ARGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00007804:ALU TEX_WAIT    wmask: ARGB omask: NONE
	1:RGB_ADDR   0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

2	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x08040000:Addr0: 0t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0
	4 ALPHA_INST:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL IN[1], GENERIC[13], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[0]
DCL CONST[3]
DCL TEMP[0..1]
  0: TEX TEMP[0].xyz, IN[0].xyyy, SAMP[1], 2D
  1: MUL TEMP[0].xyz, TEMP[0].xyzz, CONST[3].xyzz
  2: TEX TEMP[1].xyz, IN[1].xyzz, SAMP[0], CUBE
  3: ADD TEMP[1].xyz, -TEMP[1].xyzz, CONST[0].xxxx
  4: MUL OUT[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz
  5: MOV OUT[0].w, CONST[0].xxxx
  6: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV output[0].w, const[0].xxxx;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV output[0].w, const[0].xxxx;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV output[0].w, const[0].xxxx;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV output[0].w, const[0].xxxx;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV_SAT output[0].w, const[0].xxxx;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV_SAT output[0].w, const[0].xxxx;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV_SAT output[0].w, const[0].xxxx;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xyyy, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz;
  2: TEX temp[1].xyz, input[1].xyzz, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx;
  4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  5: MOV_SAT output[0].w, const[0].xxxx;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: TEX temp[0].xyz, input[0].xy__, 2D[1];
  1: MUL temp[0].xyz, temp[0].xyz_, const[3].xyz_;
  2: TEX temp[1].xyz, input[1].xyz_, CUBE[0];
  3: ADD temp[1].xyz, -temp[1].xyz_, const[0].xxx_;
  4: MUL_SAT output[0].xyz, temp[0].xyz_, temp[1].xyz_;
  5: MOV_SAT output[0].w, const[0].___x;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: TEX temp[2].xyz, input[0].xy__, 2D[1];
  1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_;
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0];
  3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_;
  4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_;
  5: MOV_SAT output[0].w, const[0].___x;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[2].xyz, input[0].xy__, 2D[1];
  1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_;
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0];
  3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_;
  4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_;
  5: MOV_SAT output[0].w, const[0].___x;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[2].xyz, input[0].xy__, 2D[1];
  1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_;
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0];
  3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_;
  4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_;
  5: MOV_SAT output[0].w, const[0].___x;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[2].xyz, input[0].xy__, 2D[1];
  1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_;
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0];
  3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_;
  4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_;
  5: MOV_SAT output[0].w, const[0].___x;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[2].xyz, input[0].xy__, 2D[1];
  1: src0.xyz = temp[2], src1.xyz = const[3]
     MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0];
  3: src0.xyz = temp[4], src1.xyz = const[0]
     MAD temp[5].xyz, -src0.xyz, src0.111, src1.xxx
  4: src0.xyz = temp[3], src1.xyz = temp[5]
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
  5: src0.xyz = const[0]
     MAD_SAT color[0].w, src0.x, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[2].xyz, input[0].xy__, 2D[1];
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = temp[2], src1.xyz = const[3] SEM_WAIT
     MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000
  4: src0.xyz = temp[4], src1.xyz = const[0]
     MAD temp[5].xyz, -src0.xyz, src0.111, src1.xxx
  5: src0.xyz = temp[3], src1.xyz = temp[5], src2.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src2.x, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[2].xyz, input[0].xy__, 2D[1];
  2: TEX temp[4].xyz, input[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = temp[2], src1.xyz = const[3] SEM_WAIT
     MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000
  4: src0.xyz = temp[4], src1.xyz = const[0]
     MAD temp[5].xyz, -src0.xyz, src0.111, src1.xxx
  5: src0.xyz = temp[3], src1.xyz = temp[5], src2.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src2.x, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[0].xyz, input[0].xy__, 2D[1];
  2: TEX temp[1].xyz, input[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = temp[0], src1.xyz = const[3] SEM_WAIT
     MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000
  4: src0.xyz = temp[1], src1.xyz = const[0]
     MAD temp[1].xyz, -src0.xyz, src0.111, src1.xxx
  5: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[0]
     MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000
     MAD_SAT color[0].w, src2.x, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00003803:TEX     wmask: RGB omask: NONE
	1:TEX_INST:  0x00410000: id: 1 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00003807:TEX TEX_WAIT    wmask: RGB omask: NONE
	1:TEX_INST:  0x02400000: id: 0 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe401e401: src: 1 R/G/B/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

2	0:CMN_INST   0x00003804:ALU TEX_WAIT    wmask: RGB omask: NONE
	1:RGB_ADDR   0x08040c00:Addr0: 0t, Addr1: 3c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0

3	0:CMN_INST   0x00003800:ALU     wmask: RGB omask: NONE
	1:RGB_ADDR   0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00db0a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 1/1/1 0 targ: 0
	4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0
	5 RGBA_INST: 0x00001010:MAD dest:1 rgb_C_src:1 R/R/R 0 alp_C_src:0 R 0

4	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x10000400:Addr0: 0t, Addr1: 1t, Addr2: 0c, srcp:0
	2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00c02000:MAD dest:0 alp_A_src:2 R 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
r300: Initial fragment program
FRAG
DCL IN[0], GENERIC[12], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL CONST[2]
DCL TEMP[0..1]
  0: ADD TEMP[0].xyz, CONST[2].xyzz, CONST[2].xyzz
  1: TEX TEMP[1].xyz, IN[0].zwww, SAMP[0], 2D
  2: MUL OUT[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz
  3: TEX TEMP[0].w, IN[0].xyyy, SAMP[1], 2D
  4: MOV OUT[0].w, TEMP[0].wwww
  5: END
Fragment Program: before compilation
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV output[0].w, temp[0].wwww;
Fragment Program: after 'rewrite depth out'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV output[0].w, temp[0].wwww;
Fragment Program: after 'transform KILP'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV output[0].w, temp[0].wwww;
Fragment Program: after 'unroll loops'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV output[0].w, temp[0].wwww;
Fragment Program: after 'saturate output writes'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV_SAT output[0].w, temp[0].wwww;
Fragment Program: after 'transform TEX'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV_SAT output[0].w, temp[0].wwww;
Fragment Program: after 'transform IF'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV_SAT output[0].w, temp[0].wwww;
Fragment Program: after 'native rewrite'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz;
  1: TEX temp[1].xyz, input[0].zwww, 2D[0];
  2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz;
  3: TEX temp[0].w, input[0].xyyy, 2D[1];
  4: MOV_SAT output[0].w, temp[0].wwww;
Fragment Program: after 'deadcode'
# Radeon Compiler Program
  0: ADD temp[0].xyz, const[2].xyz_, const[2].xyz_;
  1: TEX temp[1].xyz, input[0].zw__, 2D[0];
  2: MUL_SAT output[0].xyz, temp[0].xyz_, temp[1].xyz_;
  3: TEX temp[0].w, input[0].xy__, 2D[1];
  4: MOV_SAT output[0].w, temp[0].___w;
Fragment Program: after 'register rename'
# Radeon Compiler Program
  0: ADD temp[2].xyz, const[2].xyz_, const[2].xyz_;
  1: TEX temp[3].xyz, input[0].zw__, 2D[0];
  2: MUL_SAT output[0].xyz, temp[2].xyz_, temp[3].xyz_;
  3: TEX temp[4].w, input[0].xy__, 2D[1];
  4: MOV_SAT output[0].w, temp[4].___w;
Fragment Program: after 'dataflow optimize'
# Radeon Compiler Program
  0: TEX temp[3].xyz, input[0].zw__, 2D[0];
  1: MUL_SAT output[0].xyz, (const[2] + const[2]).xyz_, temp[3].xyz_;
  2: TEX temp[4].w, input[0].xy__, 2D[1];
  3: MOV_SAT output[0].w, temp[4].___w;
Fragment Program: after 'dataflow swizzles'
# Radeon Compiler Program
  0: TEX temp[3].xyz, input[0].zw__, 2D[0];
  1: MUL_SAT output[0].xyz, (const[2] + const[2]).xyz_, temp[3].xyz_;
  2: TEX temp[4].w, input[0].xy__, 2D[1];
  3: MOV_SAT output[0].w, temp[4].___w;
Fragment Program: after 'dead constants'
# Radeon Compiler Program
  0: TEX temp[3].xyz, input[0].zw__, 2D[0];
  1: MUL_SAT output[0].xyz, (const[2] + const[2]).xyz_, temp[3].xyz_;
  2: TEX temp[4].w, input[0].xy__, 2D[1];
  3: MOV_SAT output[0].w, temp[4].___w;
Fragment Program: after 'pair translate'
# Radeon Compiler Program
  0: TEX temp[3].xyz, input[0].zw__, 2D[0];
  1: src0.xyz = const[2], src1.xyz = const[2], src2.xyz = temp[3], srcp.xyz = (src1 + src0)
     MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000
  2: TEX temp[4].w, input[0].xy__, 2D[1];
  3: src0.w = temp[4]
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'pair scheduling'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[3].xyz, input[0].zw__, 2D[0];
  2: TEX temp[4].w, input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = const[2], src0.w = temp[4], src1.xyz = const[2], src2.xyz = temp[3], srcp.xyz = (src1 + src0) SEM_WAIT
     MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'dead sources'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[3].xyz, input[0].zw__, 2D[0];
  2: TEX temp[4].w, input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = const[2], src0.w = temp[4], src1.xyz = const[2], src2.xyz = temp[3], srcp.xyz = (src1 + src0) SEM_WAIT
     MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
Fragment Program: after 'register allocation'
# Radeon Compiler Program
  0: BEGIN_TEX;
  1: TEX temp[1].xyz, input[0].zw__, 2D[0];
  2: TEX temp[0].w, input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE;
  3: src0.xyz = const[2], src0.w = temp[0], src1.xyz = const[2], src2.xyz = temp[1], srcp.xyz = (src1 + src0) SEM_WAIT
     MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000
     MAD_SAT color[0].w, src0.w, src0.1, src0.0
R500 Fragment Program:
--------
0	0:CMN_INST   0x00003803:TEX     wmask: RGB omask: NONE
	1:TEX_INST:  0x00400000: id: 0 op:LD, ,  SCALED
	2:TEX_ADDR:  0xe401fe00: src: 0 B/A/A/A dst: 1 R/G/B/A
	3:TEX_DXDY:  0x00000000

1	0:CMN_INST   0x00004007:TEX TEX_WAIT    wmask: A omask: NONE
	1:TEX_INST:  0x02410000: id: 1 op:LD, ACQ,  SCALED
	2:TEX_ADDR:  0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A
	3:TEX_DXDY:  0x00000000

2	0:CMN_INST   0x001f8005:OUT TEX_WAIT    wmask: NONE omask: ARGB
	1:RGB_ADDR   0x80140902:Addr0: 2c, Addr1: 2c, Addr2: 1t, srcp:2
	2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0
	3 RGB_INST:  0x00444223:rgb_A_src:3 R/G/B 0 rgb_B_src:2 R/G/B 0 targ: 0
	4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0
	5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0

Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked)
err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618
fixme:imm:NotifyIME NI_CLOSECANDIDATE
EVE Client version 7.11 build 306979 starting  14:28:02
Network layer using: CarbonIO
Multi-Language System: Client using language [CS]
Starting up Trinity through _trinity_deploy.dll ...
Registering new 'alignCount' stat
Registering new 'flagNextCount' stat
Registering new 'CarbonUI/labelLayout' stat
EVE Client version 7.11 build 306979 started  14:28:10
Starting services
Service settings: 0.004s
Service dataconfig: 0.015s
Service machoNet: 0.002s
Service objectCaching: 0.000s
Service addressbook: 0.000s
Service clientStatsSvc: 0.000s
Service godma: 0.000s
Service photo: 0.000s
Service mailSvc: 0.000s
Service notificationSvc: 0.000s
Service LSC: 0.000s
Service patch: 0.000s
Service inv: 0.000s
Service pwn: 0.000s
Service focus: 0.000s
Service debug: 0.000s
Service jumpQueue: 0.000s
Service scanSvc: 0.000s
Service browserHostManager: 0.000s
Service jumpMonitor: 0.000s
Service calendar: 0.000s
Service liveUpdateSvc: 0.000s
Service monitor: 0.000s
Service processHealth: 0.000s
Service devToolsClient: 0.000s
Service invCache: 0.000s
Service counter: 0.000s
Service michelle: 0.000s
Starting services - Done
Service device: 2.007s
Service sceneManager: 0.001s
Service gameui: 0.126s
Service cider: 0.000s
Service mouseInput: 0.000s
Service gameWorldClient: 0.000s
Service cameraClient: 0.011s
Service cmd: 0.063s
Service zactionClient: 0.023s
Service actionObjectClientSvc: 0.033s
Service contextMenuClient: 0.113s
Service navigation: 0.000s
Service movementClient: 0.000s
Service paperDollClient: 0.015s
Service apertureClient: 0.000s
Service minigameClient: 0.000s
Service collisionMeshClient: 0.000s
Service playerComponentClient: 0.000s
Service animationClient: 0.000s
Service perceptionClient: 0.000s
Service proximityTrigger: 0.000s
Service position: 0.000s
Service boundingVolume: 0.000s
Service elevatorClient: 0.000s
Service aimingClient: 0.000s
Service simpleTestClient: 0.000s
Service netStateClient: 0.000s
Service selectionClient: 0.000s
Service worldSpaceClient: 0.000s
Service info: 0.000s
Service character: 0.000s
Service entityRecipeSvc: 0.000s
Service graphicClient: 0.000s
Service infoClient: 0.000s
Service interiorPlaceableClient: 0.000s
Service particleObjectClient: 0.000s
Service entityProcSvc: 0.000s
Service tutorial: 0.004s
Service interiorStaticClient: 0.000s
Service decisionTreeClient: 0.000s
Service lensFlareClient: 0.000s
Service spotLightClient: 0.000s
Service holoscreen: 0.000s
Service genericProcClient: 0.000s
Service LightAnimationComponentManager: 0.000s
Service uvPickingClient: 0.000s
Service physicalPortalClient: 0.000s
Service boxLightClient: 0.000s
Service loadedLightClient: 0.000s
Service occluderClient: 0.000s
Service entitySpawnClient: 0.391s
Service proximity: 0.427s
Service UIDesktopComponentManager: 0.000s
Service bracketClient: 0.000s
Service shipHologram: 0.000s
Service uipointerSvc: 0.000s
Service pointLightClient: 0.000s
Service station: 0.000s
Service audio: 1.114s
Service highlightClient: 0.000s
Service journal: 0.000s
Service insurance: 0.000s
Service window: 0.000s
Service form: 0.000s
Service entityClient: 1.846s
Service gps: 1.760s
Service font: 0.002s
Service registry: 0.000s
Service loading: 0.000s
Service log: 0.000s
Service ime: 0.001s
Service connection: 0.000s
Service damage: 0.000s
Service logger: 0.002s
Service vivox: 0.000s
Service ownerprimer: 0.000s
Service petition: 0.000s
Service ui: 0.000s
Service z: 0.000s
Service consider: 0.000s
Service incursion: 0.000s
Service moonScan: 0.000s
Service webtools: 0.000s
Service war: 0.000s
Service jukebox: 0.001s