jak-project/test/decompiler/vu_reference/sprite-result.txt
water111 f0ceea8b2e
[sparticle] 2d hud particles (#849)
* wip, taking a break to work on asm stuff first

* the goal code for sparticle

* mips2c the first sparticle asm function

* temp

* particle processing no longer crashing

* temp

* working texture cache for vi1 and hud textures

* sprites

* cleanup 1

* temp

* temp

* add zstd library

* temp

* working

* tests

* include fix

* uncomment

* better decomp of sparticle stuff, part 1

* update references
2021-09-26 11:41:58 -04:00

899 lines
49 KiB
Plaintext

lq.xyzw vf29, 996(vi00) | nop
lq.xyzw vf31, 997(vi00) | nop :e
iaddiu vi15, vi00, 0x320 | nop
xtop vi02 | nop
nop | nop
ilwr.x vi04, vi02 | nop
iaddi vi02, vi02, 0x1 | nop
iaddiu vi03, vi02, 0x90 | nop
L1:
ilw.y vi08, 1(vi02) | nop
lq.xyzw vf25, 900(vi00) | nop
lq.xyzw vf26, 901(vi00) | nop
lq.xyzw vf27, 902(vi00) | nop
lq.xyzw vf28, 903(vi00) | nop
lq.xyzw vf30, 904(vi00) | nop
lqi.xyzw vf01, vi02 | nop
lqi.xyzw vf05, vi02 | nop
lqi.xyzw vf11, vi02 | nop
lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00
nop | maddax.xyzw ACC, vf25, vf01
nop | madday.xyzw ACC, vf26, vf01
nop | maddz.xyzw vf02, vf27, vf01
move.w vf05, vf00 | addw.z vf01, vf00, vf05
nop | nop
div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31
nop | mul.xyzw vf03, vf02, vf29
nop | nop
nop | nop
nop | mulz.z vf04, vf05, vf05
lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03
iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11
L2:
ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q
lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04
lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14
fmand vi01, vi06 | mul.xyz vf02, vf02, Q
ibne vi00, vi01, L5 | addz.x vf01, vf00, vf01
lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04
lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14
lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30
lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01
sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04
lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14
sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12
sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31
sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04
lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14
lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31
lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12
lq.xyzw vf08, 999(vi08) | miniz.zw vf01, vf01, vf12
ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14
lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00
nop | suby.w vf02, vf10, vf12
lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01
fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00
lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23
fmand vi09, vi06 | nop
ibne vi00, vi09, L6 | nop
lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23
L3:
lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11
lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23
lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05
lq.xyzw vf22, 983(vi07) | msubz.xyzw vf12, vf18, vf05
sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05
lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05
move.w vf24, vf00 | addw.z vf23, vf00, vf24
div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01
ibne vi00, vi01, L4 | muly.z vf24, vf24, vf31
ilw.y vi08, -2(vi02) | mulz.xyzw vf13, vf13, vf01
sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29
sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00
sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19
lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19
lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00
lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20
lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20
sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00
sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21
sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21
sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00
nop | maddax.xyzw ACC, vf12, vf22
nop | maddy.xyzw vf22, vf13, vf22
lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19
lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20
move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21
move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22
sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24
sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03
sq.xyzw vf21, 6(vi05) | nop
sq.xyzw vf22, 8(vi05) | nop
xgkick vi15 | nop
iaddi vi04, vi04, -0x1 | nop
iaddiu vi01, vi00, 0x672 | nop
ibne vi00, vi04, L2 | nop
isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11
nop | nop :e
nop | nop
L4:
iaddi vi04, vi04, -0x1 | nop
iaddi vi02, vi02, -0x3 | nop
ibne vi00, vi04, L1 | nop
nop | nop
nop | nop :e
nop | nop
L5:
iaddi vi04, vi04, -0x1 | nop
iaddi vi03, vi03, 0x4 | nop
ibne vi00, vi04, L1 | nop
nop | nop
nop | nop :e
nop | nop
L6:
b L3 | nop
lq.xyzw vf08, 1000(vi00) | nop
xtop vi02 | nop
nop | nop
ilwr.x vi04, vi02 | nop
iaddi vi02, vi02, 0x1 | nop
iaddiu vi03, vi02, 0x90 | nop
L7:
ilw.y vi08, 1(vi02) | nop
lq.xyzw vf25, 900(vi00) | nop
lq.xyzw vf26, 901(vi00) | nop
lq.xyzw vf27, 902(vi00) | nop
lq.xyzw vf28, 903(vi00) | nop
lq.xyzw vf30, 904(vi08) | nop
lqi.xyzw vf01, vi02 | nop
lqi.xyzw vf05, vi02 | nop
lqi.xyzw vf11, vi02 | nop
lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00
ilw.y vi08, 1(vi02) | maddax.xyzw ACC, vf25, vf01
nop | madday.xyzw ACC, vf26, vf01
nop | maddz.xyzw vf02, vf27, vf01
move.w vf05, vf00 | addw.z vf01, vf00, vf05
nop | nop
div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31
nop | mul.xyzw vf03, vf02, vf29
nop | nop
nop | nop
nop | mulz.z vf04, vf05, vf05
lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03
iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11
L8:
ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q
lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04
lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14
fmand vi01, vi06 | mul.xyz vf02, vf02, Q
ibne vi00, vi01, L10 | addz.x vf01, vf00, vf01
lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04
lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14
lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30
lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01
sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04
lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14
sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12
sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31
sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04
lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14
lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31
lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12
lq.xyzw vf08, 1000(vi00) | nop
ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14
lq.xyzw vf30, 904(vi08) | nop
lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00
lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01
fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00
lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23
lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23
lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11
lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23
lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05
lq.xyzw vf22, 983(vi07) | msubz.xyzw vf12, vf18, vf05
sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05
lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05
move.w vf24, vf00 | addw.z vf23, vf00, vf24
div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01
ibne vi00, vi01, L9 | muly.z vf24, vf24, vf31
ilw.y vi08, 1(vi02) | mulz.xyzw vf13, vf13, vf01
sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29
sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00
sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19
lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19
lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00
lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20
lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20
sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00
sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21
sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21
sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00
nop | maddax.xyzw ACC, vf12, vf22
nop | maddy.xyzw vf22, vf13, vf22
lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19
lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20
move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21
move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22
sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24
sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03
sq.xyzw vf21, 6(vi05) | nop
sq.xyzw vf22, 8(vi05) | nop
xgkick vi15 | nop
iaddi vi04, vi04, -0x1 | nop
iaddiu vi01, vi00, 0x672 | nop
ibne vi00, vi04, L8 | nop
isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11
nop | nop :e
nop | nop
L9:
iaddi vi04, vi04, -0x1 | nop
iaddi vi02, vi02, -0x3 | nop
ibne vi00, vi04, L7 | nop
nop | nop
nop | nop :e
nop | nop
L10:
iaddi vi04, vi04, -0x1 | nop
iaddi vi03, vi03, 0x4 | nop
ibne vi00, vi04, L7 | nop
nop | nop
nop | nop :e
nop | nop
lq.xyzw vf25, 900(vi00) | nop
lq.xyzw vf26, 901(vi00) | nop
lq.xyzw vf27, 902(vi00) | nop
lq.xyzw vf28, 903(vi00) | nop
lq.xyzw vf30, 904(vi00) | nop
xtop vi02 | nop
nop | nop
ilwr.x vi04, vi02 | nop
iaddi vi02, vi02, 0x1 | nop
iaddiu vi03, vi02, 0x90 | nop
lq.xyzw vf23, 1020(vi00) | nop
iaddi vi06, vi00, 0x1 | nop
L11:
lq.xyzw vf06, 1(vi02) | nop
lq.xyzw vf07, 2(vi02) | nop
iaddi vi01, vi00, 0x2 | nop
nop | nop
nop | mul.xyzw vf05, vf06, vf06
nop | addw.y vf08, vf00, vf06
nop | subw.w vf06, vf06, vf06
nop | adda.xyzw ACC, vf07, vf07
nop | addy.x vf05, vf05, vf05
nop | nop
nop | nop
fmand vi01, vi06 | nop
ibne vi00, vi01, L15 | addz.x vf05, vf05, vf05
nop | nop
nop | nop
nop | nop
nop | subx.w vf05, vf00, vf05
nop | nop
nop | nop
nop | nop
sqrt Q, vf05.w | nop
nop | nop
nop | nop
nop | nop
nop | nop
nop | nop
nop | nop
nop | addq.w vf06, vf06, Q
nop | nop
nop | nop
nop | nop
nop | add.xyzw vf13, vf06, vf06
nop | addw.x vf09, vf00, vf06
nop | addz.y vf09, vf00, vf06
nop | suby.z vf09, vf00, vf06
nop | subw.w vf09, vf00, vf00
nop | subz.x vf10, vf00, vf06
nop | addw.y vf10, vf00, vf06
nop | addx.z vf10, vf00, vf06
nop | subw.w vf10, vf00, vf00
nop | addy.x vf11, vf00, vf06
nop | subx.y vf11, vf00, vf06
nop | addw.z vf11, vf00, vf06
nop | subw.w vf11, vf00, vf00
L12:
lq.xyzw vf12, 0(vi02) | opmula.xyz ACC, vf13, vf09
lq.xyzw vf07, 2(vi02) | opmsub.xyz vf09, vf09, vf13
iaddi vi02, vi02, 0x3 | opmula.xyz ACC, vf13, vf10
lq.xyzw vf06, 1(vi02) | opmsub.xyz vf10, vf10, vf13
ior vi05, vi15, vi00 | opmula.xyz ACC, vf13, vf11
lq.xyzw vf01, 998(vi00) | opmsub.xyz vf11, vf11, vf13
lqi.xyzw vf02, vi03 | addw.x vf09, vf09, vf00
lqi.xyzw vf03, vi03 | addw.y vf10, vf10, vf00
lqi.xyzw vf04, vi03 | addw.z vf11, vf11, vf00
sqi.xyzw vf01, vi05 | mul.xyzw vf05, vf06, vf06
move.w vf12, vf00 | mulw.xyzw vf09, vf09, vf12
iaddi vi06, vi00, 0x1 | muly.xyzw vf11, vf11, vf08
lq.xyzw vf14, 992(vi00) | adda.xyzw ACC, vf07, vf07
lq.xyzw vf15, 993(vi00) | ftoi0.xyzw vf07, vf07
lq.xyzw vf16, 994(vi00) | addw.y vf08, vf00, vf06
lq.xyzw vf17, 995(vi00) | subw.w vf06, vf06, vf06
fmand vi01, vi06 | mulax.xyzw ACC, vf09, vf14
ibne vi00, vi01, L14 | madday.xyzw ACC, vf10, vf14
sq.xyzw vf07, 7(vi05) | maddaz.xyzw ACC, vf11, vf14
sq.xyzw vf07, 10(vi05) | maddw.xyzw vf14, vf12, vf00
sqi.xyzw vf02, vi05 | addy.x vf05, vf05, vf05
sq.xyzw vf07, 12(vi05) | mulax.xyzw ACC, vf09, vf15
sq.xyzw vf07, 15(vi05) | madday.xyzw ACC, vf10, vf15
sqi.xyzw vf03, vi05 | maddaz.xyzw ACC, vf11, vf15
sqi.xyzw vf04, vi05 | addz.x vf05, vf05, vf05
lqi.xyzw vf01, vi03 | maddw.xyzw vf15, vf12, vf00
lqi.xyzw vf02, vi03 | mulax.xyzw ACC, vf09, vf16
lq.xyzw vf03, 1008(vi00) | madday.xyzw ACC, vf10, vf16
nop | subx.w vf05, vf00, vf05
sqi.xyzw vf01, vi05 | maddaz.xyzw ACC, vf11, vf16
sqi.xyzw vf02, vi05 | maddw.xyzw vf16, vf12, vf00
sqi.xyzw vf03, vi05 | mulax.xyzw ACC, vf09, vf17
sqrt Q, vf05.w | madday.xyzw ACC, vf10, vf17
nop | maddaz.xyzw ACC, vf11, vf17
nop | maddw.xyzw vf17, vf12, vf00
lq.xyzw vf18, 988(vi00) | mulax.xyzw ACC, vf25, vf14
lq.xyzw vf19, 989(vi00) | madday.xyzw ACC, vf26, vf14
lq.xyzw vf20, 990(vi00) | maddaz.xyzw ACC, vf27, vf14
lq.xyzw vf21, 991(vi00) | maddw.xyzw vf14, vf28, vf00
nop | addq.w vf06, vf06, Q
nop | mulax.xyzw ACC, vf25, vf15
nop | madday.xyzw ACC, vf26, vf15
nop | maddaz.xyzw ACC, vf27, vf15
div Q, vf31.x, vf14.w | mul.xyzw vf09, vf14, vf29
nop | maddw.xyzw vf15, vf28, vf00
nop | mulax.xyzw ACC, vf25, vf16
nop | madday.xyzw ACC, vf26, vf16
nop | maddaz.xyzw ACC, vf27, vf16
nop | mul.xyzw vf10, vf15, vf29
nop | maddw.xyzw vf16, vf28, vf00
div Q, vf31.x, vf15.w | mul.xyz vf14, vf14, Q
nop | mul.xyzw vf18, vf18, Q
nop | mulax.xyzw ACC, vf25, vf17
nop | madday.xyzw ACC, vf26, vf17
nop | maddaz.xyzw ACC, vf27, vf17
sq.xyzw vf18, 0(vi05) | mul.xyzw vf11, vf16, vf29
nop | maddw.xyzw vf17, vf28, vf00
div Q, vf31.x, vf16.w | mul.xyz vf15, vf15, Q
nop | mul.xyzw vf19, vf19, Q
nop | add.xyzw vf14, vf14, vf30
nop | add.xyzw vf15, vf15, vf30
nop | mul.xyzw vf12, vf17, vf29
sq.xyzw vf19, 3(vi05) | clipw.xyz vf09, vf09
nop | clipw.xyz vf10, vf10
div Q, vf31.x, vf17.w | mul.xyz vf16, vf16, Q
nop | mul.xyzw vf20, vf20, Q
nop | clipw.xyz vf11, vf11
nop | clipw.xyz vf12, vf12
nop | add.xyzw vf16, vf16, vf30
sq.xyzw vf20, 6(vi05) | maxx.w vf14, vf14, vf23
nop | maxx.w vf15, vf15, vf23
fcand vi01, 0x410410 | mul.xyz vf17, vf17, Q
ibne vi00, vi01, L13 | mul.xyzw vf21, vf21, Q
fcand vi01, 0xffffff | maxx.w vf16, vf16, vf23
ibne vi00, vi01, L16 | miniy.w vf14, vf14, vf23
nop | add.xyzw vf17, vf17, vf30
sq.xyzw vf21, 9(vi05) | miniy.w vf15, vf15, vf23
nop | miniy.w vf16, vf16, vf23
nop | ftoi4.xyzw vf14, vf14
nop | maxx.w vf17, vf17, vf23
nop | ftoi4.xyzw vf15, vf15
nop | ftoi4.xyzw vf16, vf16
sq.xyzw vf14, 2(vi05) | add.xyzw vf13, vf06, vf06
nop | miniy.w vf17, vf17, vf23
sq.xyzw vf15, 5(vi05) | addw.x vf09, vf00, vf06
sq.xyzw vf16, 8(vi05) | addz.y vf09, vf00, vf06
nop | suby.z vf09, vf00, vf06
nop | ftoi4.xyzw vf17, vf17
nop | subw.w vf09, vf00, vf00
nop | subz.x vf10, vf00, vf06
nop | addw.y vf10, vf00, vf06
sq.xyzw vf17, 11(vi05) | addx.z vf10, vf00, vf06
xgkick vi15 | subw.w vf10, vf00, vf00
iaddi vi04, vi04, -0x1 | addy.x vf11, vf00, vf06
iaddiu vi01, vi00, 0x672 | subx.y vf11, vf00, vf06
ibne vi00, vi04, L12 | addw.z vf11, vf00, vf06
isub vi15, vi01, vi15 | subw.w vf11, vf00, vf00
nop | nop :e
nop | nop
L13:
iaddi vi04, vi04, -0x1 | nop
nop | nop
ibne vi00, vi04, L11 | nop
nop | nop
nop | nop :e
nop | nop
L14:
iaddi vi04, vi04, -0x1 | nop
iaddi vi03, vi03, 0x2 | nop
ibne vi00, vi04, L11 | nop
nop | nop
nop | nop :e
nop | nop
L15:
iaddi vi04, vi04, -0x1 | nop
iaddi vi03, vi03, 0x5 | nop
ibne vi00, vi04, L11 | nop
iaddi vi02, vi02, 0x3 | nop
nop | nop :e
nop | nop
L16:
fcor vi01, 0x7df7df | nop
ibne vi00, vi01, L13 | nop
fcor vi01, 0xdf7df7 | nop
ibne vi00, vi01, L13 | nop
fcor vi01, 0xefbefb | nop
ibne vi00, vi01, L13 | nop
fcor vi01, 0xf7df7d | nop
ibne vi00, vi01, L13 | nop
fcor vi01, 0xfbefbe | nop
ibne vi00, vi01, L13 | nop
ior vi07, vi05, vi00 | nop
nop | itof0.xyzw vf07, vf07
sq.xyzw vf09, 2(vi07) | nop
sq.xyzw vf10, 5(vi07) | nop
sq.xyzw vf11, 8(vi07) | nop
sq.xyzw vf12, 11(vi07) | nop
sq.xyzw vf09, 14(vi07) | nop
lq.xyzw vf18, 988(vi00) | nop
lq.xyzw vf19, 989(vi00) | nop
lq.xyzw vf20, 990(vi00) | nop
lq.xyzw vf21, 991(vi00) | nop
sq.xyzw vf18, 0(vi07) | nop
sq.xyzw vf19, 3(vi07) | nop
sq.xyzw vf20, 6(vi07) | nop
sq.xyzw vf21, 9(vi07) | nop
sq.xyzw vf18, 12(vi07) | nop
sq.xyzw vf07, 1(vi07) | nop
sq.xyzw vf07, 4(vi07) | nop
sq.xyzw vf07, 7(vi07) | nop
sq.xyzw vf07, 10(vi07) | nop
sq.xyzw vf07, 13(vi07) | nop
iaddi vi09, vi00, 0x4 | nop
bal vi11, L18 | nop
nop | nop
lq.xyzw vf01, 1014(vi00) | nop
ibeq vi00, vi09, L13 | nop
iaddiu vi10, vi09, 0x4000 | nop
iaddiu vi10, vi10, 0x4000 | nop
sqd.xyzw vf01, vi05 | nop
iswr.x vi10, vi05 | nop
iaddi vi05, vi05, 0x1 | nop
lq.xyzw vf29, 1015(vi00) | nop
L17:
lqi.xyzw vf17, vi05 | nop
lqi.xyzw vf20, vi05 | nop
lqi.xyzw vf14, vi05 | nop
nop | nop
nop | nop
nop | nop
div Q, vf00.w, vf14.w | mul.xyzw vf14, vf14, vf29
nop | nop
nop | nop
nop | nop
nop | nop
nop | nop
nop | nop
nop | mul.xyz vf14, vf14, Q
nop | mul.xyzw vf17, vf17, Q
nop | nop
nop | nop
nop | add.xyzw vf14, vf14, vf30
nop | nop
nop | nop
nop | nop
nop | maxx.w vf14, vf14, vf23
nop | nop
nop | nop
nop | nop
nop | miniy.w vf14, vf14, vf23
nop | nop
nop | nop
nop | ftoi0.xyzw vf20, vf20
nop | ftoi4.xyzw vf14, vf14
nop | nop
sq.xyzw vf17, -3(vi05) | nop
sq.xyzw vf20, -2(vi05) | nop
sq.xyzw vf14, -1(vi05) | nop
iaddi vi09, vi09, -0x1 | nop
nop | nop
ibne vi00, vi09, L17 | nop
nop | nop
lq.xyzw vf29, 996(vi00) | nop
xgkick vi15 | nop
iaddi vi04, vi04, -0x1 | nop
iaddiu vi01, vi00, 0x672 | nop
ibne vi00, vi04, L11 | nop
isub vi15, vi01, vi15 | nop
nop | nop :e
nop | nop
L18:
ior vi08, vi07, vi00 | nop
lq.xyzw vf14, 2(vi07) | nop
ior vi10, vi09, vi00 | nop
lq.xyzw vf17, 0(vi07) | nop
lq.xyzw vf20, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
L19:
lq.xyzw vf15, 2(vi07) | nop
lq.xyzw vf18, 0(vi07) | nop
lq.xyzw vf21, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | nop
nop | clipw.xyz vf15, vf15
nop | nop
nop | nop
nop | nop
fcor vi01, 0xfff7df | nop
ibne vi00, vi01, L30 | nop
fcand vi01, 0x20 | nop
ibne vi00, vi01, L31 | nop
fcand vi01, 0x800 | nop
ibne vi00, vi01, L32 | nop
nop | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
L20:
move.xyzw vf17, vf18 | nop
iaddi vi09, vi09, -0x1 | nop
move.xyzw vf20, vf21 | nop
ibne vi00, vi09, L19 | nop
move.xyzw vf14, vf15 | nop
lq.xyzw vf17, 0(vi05) | nop
lq.xyzw vf20, 1(vi05) | nop
lq.xyzw vf14, 2(vi05) | nop
ior vi07, vi05, vi00 | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
ibeq vi00, vi10, L29 | nop
ior vi09, vi10, vi00 | nop
ior vi08, vi07, vi00 | nop
lq.xyzw vf14, 2(vi07) | nop
ior vi10, vi09, vi00 | nop
lq.xyzw vf17, 0(vi07) | nop
lq.xyzw vf20, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
L21:
lq.xyzw vf15, 2(vi07) | nop
lq.xyzw vf18, 0(vi07) | nop
lq.xyzw vf21, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | nop
nop | clipw.xyz vf15, vf15
nop | nop
nop | nop
nop | nop
fcor vi01, 0xfffdf7 | nop
ibne vi00, vi01, L33 | nop
fcand vi01, 0x8 | nop
ibne vi00, vi01, L34 | nop
fcand vi01, 0x200 | nop
ibne vi00, vi01, L35 | nop
nop | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
L22:
move.xyzw vf17, vf18 | nop
iaddi vi09, vi09, -0x1 | nop
move.xyzw vf20, vf21 | nop
ibne vi00, vi09, L21 | nop
move.xyzw vf14, vf15 | nop
lq.xyzw vf17, 0(vi05) | nop
lq.xyzw vf20, 1(vi05) | nop
lq.xyzw vf14, 2(vi05) | nop
ior vi07, vi05, vi00 | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
ibeq vi00, vi10, L29 | nop
ior vi09, vi10, vi00 | nop
ior vi08, vi07, vi00 | nop
lq.xyzw vf14, 2(vi07) | nop
ior vi10, vi09, vi00 | nop
lq.xyzw vf17, 0(vi07) | nop
lq.xyzw vf20, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
L23:
lq.xyzw vf15, 2(vi07) | nop
lq.xyzw vf18, 0(vi07) | nop
lq.xyzw vf21, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | nop
nop | clipw.xyz vf15, vf15
nop | nop
nop | nop
nop | nop
fcor vi01, 0xfffefb | nop
ibne vi00, vi01, L36 | nop
fcand vi01, 0x4 | nop
ibne vi00, vi01, L37 | nop
fcand vi01, 0x100 | nop
ibne vi00, vi01, L38 | nop
nop | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
L24:
move.xyzw vf17, vf18 | nop
iaddi vi09, vi09, -0x1 | nop
move.xyzw vf20, vf21 | nop
ibne vi00, vi09, L23 | nop
move.xyzw vf14, vf15 | nop
lq.xyzw vf17, 0(vi05) | nop
lq.xyzw vf20, 1(vi05) | nop
lq.xyzw vf14, 2(vi05) | nop
ior vi07, vi05, vi00 | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
ibeq vi00, vi10, L29 | nop
ior vi09, vi10, vi00 | nop
ior vi08, vi07, vi00 | nop
lq.xyzw vf14, 2(vi07) | nop
ior vi10, vi09, vi00 | nop
lq.xyzw vf17, 0(vi07) | nop
lq.xyzw vf20, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
L25:
lq.xyzw vf15, 2(vi07) | nop
lq.xyzw vf18, 0(vi07) | nop
lq.xyzw vf21, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | nop
nop | clipw.xyz vf15, vf15
nop | nop
nop | nop
nop | nop
fcor vi01, 0xffff7d | nop
ibne vi00, vi01, L39 | nop
fcand vi01, 0x2 | nop
ibne vi00, vi01, L40 | nop
fcand vi01, 0x80 | nop
ibne vi00, vi01, L41 | nop
nop | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
L26:
move.xyzw vf17, vf18 | nop
iaddi vi09, vi09, -0x1 | nop
move.xyzw vf20, vf21 | nop
ibne vi00, vi09, L25 | nop
move.xyzw vf14, vf15 | nop
lq.xyzw vf17, 0(vi05) | nop
lq.xyzw vf20, 1(vi05) | nop
lq.xyzw vf14, 2(vi05) | nop
ior vi07, vi05, vi00 | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
ibeq vi00, vi10, L29 | nop
ior vi09, vi10, vi00 | nop
ior vi08, vi07, vi00 | nop
lq.xyzw vf14, 2(vi07) | nop
ior vi10, vi09, vi00 | nop
lq.xyzw vf17, 0(vi07) | nop
lq.xyzw vf20, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
L27:
lq.xyzw vf15, 2(vi07) | nop
lq.xyzw vf18, 0(vi07) | nop
lq.xyzw vf21, 1(vi07) | nop
iaddi vi07, vi07, 0x3 | nop
nop | clipw.xyz vf15, vf15
nop | nop
nop | nop
nop | nop
fcor vi01, 0xffffbe | nop
ibne vi00, vi01, L42 | nop
fcand vi01, 0x1 | nop
ibne vi00, vi01, L43 | nop
fcand vi01, 0x40 | nop
ibne vi00, vi01, L44 | nop
nop | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
L28:
move.xyzw vf17, vf18 | nop
iaddi vi09, vi09, -0x1 | nop
move.xyzw vf20, vf21 | nop
ibne vi00, vi09, L27 | nop
move.xyzw vf14, vf15 | nop
lq.xyzw vf17, 0(vi05) | nop
lq.xyzw vf20, 1(vi05) | nop
lq.xyzw vf14, 2(vi05) | nop
ior vi07, vi05, vi00 | nop
sqi.xyzw vf17, vi08 | nop
sqi.xyzw vf20, vi08 | nop
sqi.xyzw vf14, vi08 | nop
ibeq vi00, vi10, L29 | nop
ior vi09, vi10, vi00 | nop
L29:
jr vi11 | nop
nop | nop
L30:
b L20 | nop
iaddi vi10, vi10, -0x1 | nop
L31:
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
ibeq vi07, vi08, L20 | nop
nop | addz.w vf13, vf16, vf16
nop | addw.z vf13, vf14, vf14
div Q, vf13.z, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | sub.xyzw vf19, vf17, vf19
nop | sub.xyzw vf22, vf20, vf22
nop | sub.xyzw vf16, vf14, vf16
iaddi vi10, vi10, 0x1 | nop
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L20 | nop
sqi.xyzw vf16, vi08 | nop
L32:
nop | sub.xyzw vf16, vf14, vf15
nop | sub.xyzw vf19, vf17, vf18
nop | sub.xyzw vf22, vf20, vf21
nop | addz.w vf13, vf16, vf16
nop | addw.z vf13, vf15, vf15
div Q, vf13.z, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | sub.xyzw vf19, vf18, vf19
nop | sub.xyzw vf22, vf21, vf22
nop | sub.xyzw vf16, vf15, vf16
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L20 | nop
sqi.xyzw vf16, vi08 | nop
L33:
b L22 | nop
iaddi vi10, vi10, -0x1 | nop
L34:
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
ibeq vi07, vi08, L22 | nop
nop | addy.w vf13, vf16, vf16
nop | addw.y vf13, vf14, vf14
div Q, vf13.y, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | sub.xyzw vf19, vf17, vf19
nop | sub.xyzw vf22, vf20, vf22
nop | sub.xyzw vf16, vf14, vf16
iaddi vi10, vi10, 0x1 | nop
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L22 | nop
sqi.xyzw vf16, vi08 | nop
L35:
nop | sub.xyzw vf16, vf14, vf15
nop | sub.xyzw vf19, vf17, vf18
nop | sub.xyzw vf22, vf20, vf21
nop | addy.w vf13, vf16, vf16
nop | addw.y vf13, vf15, vf15
div Q, vf13.y, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | sub.xyzw vf19, vf18, vf19
nop | sub.xyzw vf22, vf21, vf22
nop | sub.xyzw vf16, vf15, vf16
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L22 | nop
sqi.xyzw vf16, vi08 | nop
L36:
b L24 | nop
iaddi vi10, vi10, -0x1 | nop
L37:
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
ibeq vi07, vi08, L24 | nop
nop | suby.w vf13, vf16, vf16
nop | subw.y vf13, vf14, vf14
div Q, vf13.y, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | add.xyzw vf19, vf17, vf19
nop | add.xyzw vf22, vf20, vf22
nop | add.xyzw vf16, vf14, vf16
iaddi vi10, vi10, 0x1 | nop
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L24 | nop
sqi.xyzw vf16, vi08 | nop
L38:
nop | sub.xyzw vf16, vf14, vf15
nop | sub.xyzw vf19, vf17, vf18
nop | sub.xyzw vf22, vf20, vf21
nop | suby.w vf13, vf16, vf16
nop | subw.y vf13, vf15, vf15
div Q, vf13.y, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | add.xyzw vf19, vf18, vf19
nop | add.xyzw vf22, vf21, vf22
nop | add.xyzw vf16, vf15, vf16
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L24 | nop
sqi.xyzw vf16, vi08 | nop
L39:
b L26 | nop
iaddi vi10, vi10, -0x1 | nop
L40:
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
ibeq vi07, vi08, L26 | nop
nop | addx.w vf13, vf16, vf16
nop | addw.x vf13, vf14, vf14
div Q, vf13.x, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | sub.xyzw vf19, vf17, vf19
nop | sub.xyzw vf22, vf20, vf22
nop | sub.xyzw vf16, vf14, vf16
iaddi vi10, vi10, 0x1 | nop
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L26 | nop
sqi.xyzw vf16, vi08 | nop
L41:
nop | sub.xyzw vf16, vf14, vf15
nop | sub.xyzw vf19, vf17, vf18
nop | sub.xyzw vf22, vf20, vf21
nop | addx.w vf13, vf16, vf16
nop | addw.x vf13, vf15, vf15
div Q, vf13.x, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | sub.xyzw vf19, vf18, vf19
nop | sub.xyzw vf22, vf21, vf22
nop | sub.xyzw vf16, vf15, vf16
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L26 | nop
sqi.xyzw vf16, vi08 | nop
L42:
b L28 | nop
iaddi vi10, vi10, -0x1 | nop
L43:
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
ibeq vi07, vi08, L28 | nop
nop | subx.w vf13, vf16, vf16
nop | subw.x vf13, vf14, vf14
div Q, vf13.x, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | add.xyzw vf19, vf17, vf19
nop | add.xyzw vf22, vf20, vf22
nop | add.xyzw vf16, vf14, vf16
iaddi vi10, vi10, 0x1 | nop
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L28 | nop
sqi.xyzw vf16, vi08 | nop
L44:
nop | sub.xyzw vf16, vf14, vf15
nop | sub.xyzw vf19, vf17, vf18
nop | sub.xyzw vf22, vf20, vf21
nop | subx.w vf13, vf16, vf16
nop | subw.x vf13, vf15, vf15
div Q, vf13.x, vf13.w | nop
waitq | nop
nop | mul.xyzw vf19, vf19, Q
nop | mul.xyzw vf22, vf22, Q
nop | mul.xyzw vf16, vf16, Q
nop | add.xyzw vf19, vf18, vf19
nop | add.xyzw vf22, vf21, vf22
nop | add.xyzw vf16, vf15, vf16
sqi.xyzw vf19, vi08 | nop
sqi.xyzw vf22, vi08 | nop
b L28 | nop
sqi.xyzw vf16, vi08 | nop