; Ambient light:
	NOP				LQ VF26, ambientLight(VI00)
	NOP				XITOP VI01
	NOP				IADDIU VI03, VI12, 2
Ambloop:
	NOP				LQ VF03, 0(VI03)	; output color
	NOP				NOP
	NOP				NOP
	NOP				NOP
	ITOF0 VF03, VF03		NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	ADD.xyz VF03, VF03, VF26	NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	FTOI0 VF03, VF03		NOP
	NOP				IADDI VI01, VI01, -1
	NOP				IADDIU VI03, VI03, numOutAttribs
	NOP				IBNE VI01, VI00, Ambloop
	NOP				SQ VF03, -numOutAttribs(VI03)
; end amblight

; Direct Light
	NOP				LQ VF26, lightDir(VI00)
	NOP				XITOP VI01
	NOP				XTOP VI02
	NOP				IADDIU VI03, VI12, 2
	SUB.xyz VF26, VF00, VF26	NOP
Dirloop:
	NOP				LQ VF01, 3(VI02);	; normal
	NOP				LQ VF02, 0(VI03);	; output color
	NOP				NOP
	NOP				NOP
	MUL VF03, VF01, VF26		NOP
	ITOF0 VF02, VF02		NOP
	NOP				NOP
	NOP				NOP
	ADDy.x VF03, VF03, VF03y	NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	ADDz.x VF03, VF03, VF03z	NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	MAX.x VF03, VF00, VF03		NOP	; clamp to 0
	NOP[I]				LOI 255
	NOP				NOP
	NOP				NOP
	MULi.x VF03, VF03, I		NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	ADDx.xyz VF02, VF02, VF03x	NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	FTOI0 VF02, VF02		NOP
	NOP				IADDI VI01, VI01, -1
	NOP				IADDIU VI02, VI02, numInAttribs
	NOP				IADDIU VI03, VI03, numOutAttribs
	NOP				IBNE VI01, VI00, Dirloop
	NOP				SQ VF02, -numOutAttribs(VI03)
; end dirlight

; Material color and clamp
	NOP				LQ VF27, matColor(VI00)
	NOP				XITOP VI01
	NOP				IADDIU VI03, VI12, 2
Colorloop:
	NOP				LQ VF03, 0(VI03)
	NOP				NOP
	NOP				NOP
	NOP				NOP
	ITOF0 VF03, VF03		NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	MUL VF03, VF03, VF27		NOP
	NOP[I]				LOI 255
	NOP				NOP
	NOP				NOP
	MINIi VF03, VF03, I		NOP
	NOP				NOP
	NOP				NOP
	NOP				NOP
	FTOI0 VF03, VF03		NOP
	NOP				IADDI VI01, VI01, -1
	NOP				IADDIU VI03, VI03, numOutAttribs
	NOP				IBNE VI01, VI00, Colorloop
	NOP				SQ VF03, -numOutAttribs(VI03)
; end material color