  b L1                       |  nop
  nop                        |  nop
  b L2                       |  nop
  nop                        |  nop
  b L13                      |  nop
  nop                        |  nop
  b L21                      |  nop
  nop                        |  nop
  nop                        |  nop :e
  nop                        |  nop

;; ---------- memory layout
;; 0 - 4    camera
;; 4 - 119  upload4

;; 174 - 289 upload174

;; 344 - ??  upload344

;; 600 - ?? upload 600

;; 856 - 868 output0
;; 868 - 880 output1

;; 880   hmgescale
;; 881   invhscale
;; 882   texoffset
;; 883   texscale
;; 884   hvdfoff
;; 885   fog
;; 886   clrs[0]
;; 887   clrs[1]

;; 940   mystery[0]
;; 941   mystery[1]
;; 942   mystery[2]
;; 943   mystery[3]

;; ---------- vi's
;; vi01 - temp
;; vi02 - output addr

;; ----------- vf's
;; vf01 - output buffer addresses (rotated)
;; vf02 - hmgescale (constant)
;; vf03 - texoffset (constant)
;; vf04 - texscale  (constant)
;; vf05 - hvdfoffset (constant)
;; vf06 - cpersx
;; vf07 - cpersy
;; vf08 - cpersz
;; vf09 - cpersw
;; vf12 - fog (constant)
;; vf13 - invhscale (constant)

;; MSCAL 10
L1:
  iaddiu vi01, vi00, 0x358   |  nop
  iaddiu vi02, vi00, 0x364   |  nop
  mfir.x vf01, vi01          |  nop
  mfir.y vf01, vi02          |  nop
  mfir.z vf01, vi01          |  nop
  mfir.w vf01, vi02          |  nop ;; vf01 = [856, 868, 856, 868]
  lq.xyzw vf02, 880(vi00)    |  nop
  lq.xyzw vf03, 882(vi00)    |  nop
  lq.xyzw vf04, 883(vi00)    |  nop
  lq.xyzw vf05, 884(vi00)    |  nop
  lq.xyzw vf12, 885(vi00)    |  nop :e
  lq.xyzw vf13, 881(vi00)    |  nop
;; END

;; mscal 2 init block.
L2:
  iaddiu vi03, vi00, 0x158   |  nop                       ;; vi03 = 344 (addr list)
  ilwr.x vi08, vi03          |  nop                       ;; vi08 = num tris
  mtir vi02, vf01.x          |  nop                       ;; vi02 = output addr
  iaddi vi03, vi03, 0x1      |  addw.z vf25, vf00, vf00   ;; inc input ptr, set vf25.z = 1.
  lq.xyzw vf25, 888(vi00)    |  addw.z vf26, vf00, vf00   ;; vf25 = adgif, vf26.z = 1.
  lq.xyzw vf29, 889(vi00)    |  addw.z vf27, vf00, vf00   ;; vf29 = texflush, vf27.z = 1.
  lq.xyzw vf30, 891(vi00)    |  addw.z vf28, vf00, vf00   ;; vf30 = trigif, vf28.z = 1.
  lq.xyzw vf06, 0(vi00)      |  nop                       ;; vf06 -> vf09 = camera
  lq.xyzw vf07, 1(vi00)      |  nop
  lq.xyzw vf08, 2(vi00)      |  nop
  lq.xyzw vf09, 3(vi00)      |  nop
  mtir vi01, vf01.y          |  nop                       ;; vi01 is the second output buffer
  sq.xyzw vf25, 0(vi02)      |  nop                       ;; init output buffers
  sq.xyzw vf29, 1(vi02)      |  nop
  sq.xyzw vf30, 2(vi02)      |  nop
  sq.xyzw vf25, 0(vi01)      |  nop
  sq.xyzw vf29, 1(vi01)      |  nop
  sq.xyzw vf30, 2(vi01)      |  nop

;; mscal happy loop, from in344.
L3:
  lqi.xyzw vf16, vi03        |  nop ;; load tri addrs
  nop                        |  nop
  nop                        |  nop
  nop                        |  nop
  mtir vi04, vf16.x          |  nop ;; vi04 = v0 addr
  mtir vi05, vf16.y          |  nop ;; vi05 = v1 addr
  mtir vi06, vf16.z          |  nop ;; vi06 = v2 add4r
  nop                        |  nop
  lq.xyzw vf17, 4(vi04)      |  nop ;; load vertices from upload4 data: vf17 = v0 pos
  lq.xyzw vf18, 4(vi05)      |  nop ;; vf18 = v1 pos
  lq.xyzw vf19, 4(vi06)      |  nop ;; vf19 = v2 pos
  nop                        |  mulaw.xyzw ACC, vf09, vf00   ;; transform v0
  move.xyzw vf15, vf17       |  maddax.xyzw ACC, vf06, vf17  ;; vf15 = pre-transformed v0
  nop                        |  madday.xyzw ACC, vf07, vf17
  nop                        |  maddz.xyzw vf17, vf08, vf17  ;; vf17 = transformed(v0)
  nop                        |  mulaw.xyzw ACC, vf09, vf00   ;; start v1 trans
  nop                        |  sub.xyzw vf29, vf18, vf15    ;; vf29 = (v1 - v0) (pre-trans)
  nop                        |  sub.xyzw vf30, vf19, vf15    ;; vf30 = (v2 - v0) (pre-trans)
  div Q, vf12.x, vf17.w      |  maddax.xyzw ACC, vf06, vf18  ;; Q = fog.x / transformed(v0).w, v1 trans
  nop                        |  mul.xyzw vf21, vf17, vf02    ;; vf21 = hmge_scale * transformed(v0)
  nop                        |  madday.xyzw ACC, vf07, vf18  ;; v1 trans
  nop                        |  maddz.xyzw vf18, vf08, vf18  ;; v1 trans, vf18 = transformed(v1)
  nop                        |  mulaw.xyzw ACC, vf09, vf00   ;; v2 trans
  nop                        |  maddax.xyzw ACC, vf06, vf19  ;; v2 trans
  nop                        |  madday.xyzw ACC, vf07, vf19  ;; v2 trans
  div Q, vf12.x, vf18.w      |  mul.xyz vf17, vf17, Q        ;; do perspective divide (transform(v0).xyz * fog.x / tf(v0).w)
  nop                        |  maddz.xyzw vf19, vf08, vf19  ;; vf19 = transformed(v2)
  nop                        |  mul.xyzw vf22, vf18, vf02    ;; vf22 = hmge_scale * transformed(v1)
  nop                        |  opmula.xyz ACC, vf29, vf30   ;; cross (v1 - v0) x (v2 - v0)
  nop                        |  add.xy vf25, vf17, vf03      ;; vf25 = v0's texture
  nop                        |  mulw.z vf17, vf17, vf12      ;; multiply by weird fog value.
  nop                        |  opmsub.xyz vf29, vf30, vf29  ;; vf29 = finish cross
  div Q, vf12.x, vf19.w      |  mul.xyz vf18, vf18, Q        ;; v1's perspective
  nop                        |  mul.xyzw vf23, vf19, vf02    ;; v2's hmge
  nop                        |  mul.xyz vf29, vf29, vf15     ;; dot with pre-trans v0 (kind sketch?)
  nop                        |  add.xy vf26, vf18, vf03      ;; v1's texture
  nop                        |  add.xyzw vf17, vf17, vf05    ;; v0's hvdf offset
  nop                        |  mulw.z vf18, vf18, vf12      ;; v1's fog 1/-1
  nop                        |  mul.xy vf25, vf25, vf04      ;; v0's texture scale
  nop                        |  mul.xyz vf19, vf19, Q        ;; v2's perspective
  nop                        |  ftoi4.xyzw vf17, vf17        ;; v0 to GS format
  fcset 0x0                  |  addy.x vf29, vf29, vf29      ;; dot product sum, clear add flags
  nop                        |  add.xyzw vf18, vf18, vf05    ;; v1's hvdf
  nop                        |  clipw.xyz vf21, vf21         ;; v0's clip
  nop                        |  mulw.z vf19, vf19, vf12      ;; v2's fog mult
  sq.xyzw vf25, 4(vi02)      |  mul.xy vf26, vf26, vf04      ;; texscale
  sq.xyzw vf17, 5(vi02)      |  addz.x vf29, vf29, vf29      ;; dot PRODUCT!
  nop                        |  ftoi4.xyzw vf18, vf18        ;; v1's ftoi
  nop                        |  add.xy vf27, vf19, vf03      ;; v2's texoffset
  sq.xyzw vf26, 6(vi02)      |  add.xyzw vf19, vf19, vf05    ;; v2's hvdf
  fsand vi01, 0x2            |  clipw.xyz vf22, vf22         ;; check dp, clip v1
  sq.xyzw vf18, 7(vi02)      |  clipw.xyz vf23, vf23         ;; clip v1
  ibeq vi00, vi01, L4        |  mul.xy vf27, vf27, vf04      ;; texscale
  nop                        |  nop
  b L5                       |  nop
  lq.xyzw vf31, 887(vi00)    |  nop ;; vf31 is one of the colors.
L4:
  lq.xyzw vf31, 886(vi00)    |  nop
L5:
  fcand vi01, 0x3ffff        |  ftoi4.xyzw vf19, vf19 ;; last ftoi
  ibne vi00, vi01, L11       |  nop  ;; ssee if we need to do clipping.
  iaddi vi08, vi08, -0x1     |  nop  ;; dec tri count
  sq.xyzw vf27, 8(vi02)      |  nop
  sq.xyzw vf31, 3(vi02)      |  nop
  sq.xyzw vf19, 9(vi02)      |  nop
  xgkick vi02                |  nop  ;; KICK
  mtir vi02, vf01.y          |  nop ;; next output buffer
  mr32.xyzw vf01, vf01       |  nop
L6:
  ibgtz vi08, L3             |  nop ;; check tri count
  nop                        |  nop
;; next happy loop
  iaddiu vi03, vi00, 0x158   |  nop
  ilwr.x vi08, vi03          |  nop
  ilwr.y vi01, vi03          |  nop
  iaddi vi03, vi03, 0x1      |  nop
L7:
  lqi.xyzw vf16, vi03        |  nop
  nop                        |  nop
  nop                        |  nop
  mtir vi04, vf16.x          |  nop
  mtir vi05, vf16.y          |  nop
  mtir vi06, vf16.z          |  nop
  nop                        |  nop
  lq.xyzw vf17, 174(vi04)    |  nop
  lq.xyzw vf18, 174(vi06)    |  nop
  lq.xyzw vf19, 174(vi05)    |  nop
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  move.xyzw vf15, vf17       |  maddax.xyzw ACC, vf06, vf17
  nop                        |  madday.xyzw ACC, vf07, vf17
  nop                        |  maddz.xyzw vf17, vf08, vf17
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  sub.xyzw vf29, vf18, vf15
  nop                        |  sub.xyzw vf30, vf19, vf15
  div Q, vf12.x, vf17.w      |  maddax.xyzw ACC, vf06, vf18
  nop                        |  mul.xyzw vf21, vf17, vf02
  nop                        |  madday.xyzw ACC, vf07, vf18
  nop                        |  maddz.xyzw vf18, vf08, vf18
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  maddax.xyzw ACC, vf06, vf19
  nop                        |  madday.xyzw ACC, vf07, vf19
  div Q, vf12.x, vf18.w      |  mul.xyz vf17, vf17, Q
  nop                        |  maddz.xyzw vf19, vf08, vf19
  nop                        |  mul.xyzw vf22, vf18, vf02
  nop                        |  opmula.xyz ACC, vf29, vf30
  nop                        |  add.xy vf25, vf17, vf03
  nop                        |  mulw.z vf17, vf17, vf12
  nop                        |  opmsub.xyz vf29, vf30, vf29
  div Q, vf12.x, vf19.w      |  mul.xyz vf18, vf18, Q
  nop                        |  mul.xyzw vf23, vf19, vf02
  nop                        |  mul.xyz vf29, vf29, vf15
  nop                        |  add.xy vf26, vf18, vf03
  nop                        |  add.xyzw vf17, vf17, vf05
  nop                        |  mulw.z vf18, vf18, vf12
  nop                        |  mul.xy vf25, vf25, vf04
  nop                        |  mul.xyz vf19, vf19, Q
  nop                        |  ftoi4.xyzw vf17, vf17
  fcset 0x0                  |  addy.x vf29, vf29, vf29
  nop                        |  add.xyzw vf18, vf18, vf05
  nop                        |  clipw.xyz vf21, vf21
  sq.xyzw vf25, 4(vi02)      |  mulw.z vf19, vf19, vf12
  sq.xyzw vf17, 5(vi02)      |  mul.xy vf26, vf26, vf04
  iaddi vi08, vi08, -0x1     |  addz.x vf29, vf29, vf29
  nop                        |  ftoi4.xyzw vf18, vf18
  nop                        |  add.xy vf27, vf19, vf03
  sq.xyzw vf26, 6(vi02)      |  add.xyzw vf19, vf19, vf05
  fsand vi01, 0x2            |  clipw.xyz vf22, vf22
  sq.xyzw vf18, 7(vi02)      |  clipw.xyz vf23, vf23
  ibeq vi00, vi01, L8        |  mul.xy vf27, vf27, vf04
  nop                        |  nop
  b L9                       |  nop
  lq.xyzw vf31, 887(vi00)    |  nop
L8:
  lq.xyzw vf31, 886(vi00)    |  nop
L9:
  fcand vi01, 0x3ffff        |  ftoi4.xyzw vf19, vf19
  ibne vi00, vi01, L12       |  nop
  sq.xyzw vf27, 8(vi02)      |  nop
  sq.xyzw vf31, 3(vi02)      |  nop
  sq.xyzw vf19, 9(vi02)      |  nop
  xgkick vi02                |  nop
  mtir vi02, vf01.y          |  nop
  mr32.xyzw vf01, vf01       |  nop
L10:
  ibgtz vi08, L7             |  nop
  nop                        |  nop
  nop                        |  nop :e
  nop                        |  nop
L11:
  sq.xyzw vf21, 1000(vi00)   |  nop
  sq.xyzw vf22, 1003(vi00)   |  nop
  sq.xyzw vf23, 1006(vi00)   |  nop
  sq.xyzw vf31, 942(vi00)    |  nop
  mfir.x vf29, vi02          |  nop
  mfir.y vf29, vi03          |  nop
  mfir.z vf29, vi07          |  nop
  bal vi15, L36              |  nop
  mfir.w vf29, vi08          |  nop
  mtir vi08, vf29.w          |  nop
  mtir vi03, vf29.y          |  nop
  mtir vi07, vf29.z          |  nop
  b L6                       |  nop
  mtir vi02, vf29.x          |  nop
L12:
  sq.xyzw vf21, 1000(vi00)   |  nop
  sq.xyzw vf22, 1003(vi00)   |  nop
  sq.xyzw vf23, 1006(vi00)   |  nop
  sq.xyzw vf31, 942(vi00)    |  nop
  mfir.x vf29, vi02          |  nop
  mfir.y vf29, vi03          |  nop
  mfir.z vf29, vi07          |  nop
  bal vi15, L36              |  nop
  mfir.w vf29, vi08          |  nop
  mtir vi08, vf29.w          |  nop
  mtir vi03, vf29.y          |  nop
  mtir vi07, vf29.z          |  nop
  b L10                      |  nop
  mtir vi02, vf29.x          |  nop
L13:
  iaddiu vi03, vi00, 0x258   |  nop ;; vi03 = 600
  ilwr.x vi08, vi03          |  nop ;; num quads
  mtir vi02, vf01.x          |  nop ;; output buffer
  iaddi vi03, vi03, 0x1      |  addw.z vf25, vf00, vf00 ;; set 1's in texture
  lq.xyzw vf25, 888(vi00)    |  addw.z vf26, vf00, vf00
  lq.xyzw vf29, 889(vi00)    |  addw.z vf27, vf00, vf00
  lq.xyzw vf30, 892(vi00)    |  nop ;;oops they forget vf28??
  lq.xyzw vf06, 0(vi00)      |  nop
  lq.xyzw vf07, 1(vi00)      |  nop
  lq.xyzw vf08, 2(vi00)      |  nop
  lq.xyzw vf09, 3(vi00)      |  nop
  mtir vi01, vf01.y          |  nop
  sq.xyzw vf25, 0(vi02)      |  nop
  sq.xyzw vf29, 1(vi02)      |  nop
  sq.xyzw vf30, 2(vi02)      |  nop
  sq.xyzw vf25, 0(vi01)      |  nop
  sq.xyzw vf29, 1(vi01)      |  nop
  sq.xyzw vf30, 2(vi01)      |  nop
L14:
  lqi.xyzw vf16, vi03        |  nop
  nop                        |  nop
  nop                        |  nop
  nop                        |  nop
  mtir vi06, vf16.z          |  nop
  mtir vi04, vf16.x          |  nop
  mtir vi05, vf16.y          |  nop
  nop                        |  nop
  ibeq vi00, vi06, L15       |  nop
  nop                        |  nop
  lq.xyzw vf17, 4(vi04)      |  nop
  lq.xyzw vf18, 4(vi05)      |  nop
  lq.xyzw vf19, 174(vi05)    |  nop
  b L16                      |  nop
  lq.xyzw vf20, 174(vi04)    |  nop
L15:
  lq.xyzw vf17, 4(vi05)      |  nop
  lq.xyzw vf18, 4(vi04)      |  nop
  lq.xyzw vf19, 174(vi04)    |  nop
  lq.xyzw vf20, 174(vi05)    |  nop
L16:
  move.xyzw vf15, vf17       |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  maddax.xyzw ACC, vf06, vf17
  nop                        |  madday.xyzw ACC, vf07, vf17
  nop                        |  maddz.xyzw vf17, vf08, vf17
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  sub.xyzw vf29, vf18, vf15
  nop                        |  sub.xyzw vf30, vf19, vf15
  div Q, vf12.x, vf17.w      |  maddax.xyzw ACC, vf06, vf18
  nop                        |  mul.xyzw vf21, vf17, vf02
  nop                        |  madday.xyzw ACC, vf07, vf18
  nop                        |  maddz.xyzw vf18, vf08, vf18
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  maddax.xyzw ACC, vf06, vf19
  nop                        |  madday.xyzw ACC, vf07, vf19
  div Q, vf12.x, vf18.w      |  mul.xyz vf17, vf17, Q
  nop                        |  maddz.xyzw vf19, vf08, vf19
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  maddax.xyzw ACC, vf06, vf20
  nop                        |  madday.xyzw ACC, vf07, vf20
  nop                        |  maddz.xyzw vf20, vf08, vf20
  nop                        |  mul.xyzw vf22, vf18, vf02
  div Q, vf12.x, vf19.w      |  mul.xyz vf18, vf18, Q
  nop                        |  add.xy vf25, vf17, vf03
  nop                        |  mulw.z vf17, vf17, vf12
  nop                        |  opmula.xyz ACC, vf29, vf30
  nop                        |  opmsub.xyz vf29, vf30, vf29
  nop                        |  mul.xyzw vf23, vf19, vf02
  nop                        |  mul.xyz vf29, vf29, vf15
  div Q, vf12.x, vf20.w      |  mul.xyz vf19, vf19, Q
  nop                        |  add.xyzw vf17, vf17, vf05
  nop                        |  mul.xyzw vf24, vf20, vf02
  nop                        |  mul.xy vf25, vf25, vf04
  nop                        |  nop
  nop                        |  ftoi4.xyzw vf17, vf17
  nop                        |  add.xy vf26, vf18, vf03
  nop                        |  mul.xyz vf20, vf20, Q
  nop                        |  mulw.z vf18, vf18, vf12
  nop                        |  addy.x vf29, vf29, vf29
  sq.xyzw vf25, 4(vi02)      |  nop
  sq.xyzw vf17, 5(vi02)      |  nop
  nop                        |  add.xyzw vf18, vf18, vf05
  nop                        |  clipw.xyz vf21, vf21
  nop                        |  mul.xy vf26, vf26, vf04
  nop                        |  addz.x vf29, vf29, vf29
  nop                        |  ftoi4.xyzw vf18, vf18
  nop                        |  add.xy vf27, vf19, vf03
  sq.xyzw vf26, 6(vi02)      |  mulw.z vf19, vf19, vf12
  fsand vi01, 0x2            |  clipw.xyz vf22, vf22
  sq.xyzw vf18, 7(vi02)      |  clipw.xyz vf23, vf23
  nop                        |  clipw.xyz vf24, vf24
  nop                        |  add.xy vf28, vf20, vf03
  nop                        |  mulw.z vf20, vf20, vf12
  nop                        |  mul.xy vf27, vf27, vf04
  nop                        |  add.xyzw vf19, vf19, vf05
  nop                        |  nop
  ibeq vi00, vi01, L17       |  mul.xy vf28, vf28, vf04
  nop                        |  add.xyzw vf20, vf20, vf05
  b L18                      |  nop
  lq.xyzw vf31, 887(vi00)    |  nop
L17:
  lq.xyzw vf31, 886(vi00)    |  nop
L18:
  fcand vi01, 0xffffff       |  ftoi4.xyzw vf19, vf19
  ibne vi00, vi01, L20       |  nop
  iaddi vi08, vi08, -0x1     |  nop
  sq.xyzw vf27, 8(vi02)      |  ftoi4.xyzw vf20, vf20
  sq.xyzw vf31, 3(vi02)      |  nop
  sq.xyzw vf19, 9(vi02)      |  nop
  sq.xyzw vf28, 10(vi02)     |  nop
  sq.xyzw vf20, 11(vi02)     |  nop
  xgkick vi02                |  nop
  mtir vi02, vf01.y          |  nop
  mr32.xyzw vf01, vf01       |  nop
L19:
  ibgtz vi08, L14            |  nop
  nop                        |  nop
  nop                        |  nop :e
  nop                        |  nop
L20:
  sq.xyzw vf21, 1000(vi00)   |  nop
  sq.xyzw vf22, 1003(vi00)   |  nop
  sq.xyzw vf23, 1006(vi00)   |  nop
  sq.xyzw vf24, 1009(vi00)   |  nop
  sq.xyzw vf31, 942(vi00)    |  nop
  mfir.x vf29, vi02          |  nop
  mfir.y vf29, vi03          |  nop
  mfir.z vf29, vi07          |  nop
  bal vi15, L37              |  nop
  mfir.w vf29, vi08          |  nop
  mtir vi08, vf29.w          |  nop
  mtir vi03, vf29.y          |  nop
  mtir vi07, vf29.z          |  nop
  b L19                      |  nop
  mtir vi02, vf29.x          |  nop

  ;;;;;;;;;; WEIRD TRIANGLES
L21:
  iaddiu vi03, vi00, 0x158   |  nop
  ilwr.x vi08, vi03          |  nop
  mtir vi02, vf01.x          |  nop
  iaddi vi03, vi03, 0x1      |  addw.z vf25, vf00, vf00
  lq.xyzw vf25, 888(vi00)    |  addw.z vf26, vf00, vf00
  lq.xyzw vf29, 889(vi00)    |  addw.z vf27, vf00, vf00
  lq.xyzw vf30, 891(vi00)    |  addw.z vf28, vf00, vf00
  lq.xyzw vf06, 0(vi00)      |  nop
  lq.xyzw vf07, 1(vi00)      |  nop
  lq.xyzw vf08, 2(vi00)      |  nop
  lq.xyzw vf09, 3(vi00)      |  nop
  mtir vi01, vf01.y          |  nop
  sq.xyzw vf25, 0(vi02)      |  nop
  sq.xyzw vf29, 1(vi02)      |  nop
  sq.xyzw vf30, 2(vi02)      |  nop
  sq.xyzw vf25, 0(vi01)      |  nop
  sq.xyzw vf29, 1(vi01)      |  nop
  sq.xyzw vf30, 2(vi01)      |  nop
L22:
  lqi.xyzw vf16, vi03        |  nop
  nop                        |  nop
  nop                        |  nop
  nop                        |  nop
  mtir vi01, vf16.w          |  nop
  mtir vi04, vf16.x          |  nop
  mtir vi05, vf16.y          |  nop
  mtir vi06, vf16.z          |  nop
  ibeq vi00, vi01, L23       |  nop
  lq.xyzw vf17, 4(vi04)      |  nop
  lq.xyzw vf18, 4(vi05)      |  nop
  b L24                      |  nop
  lq.xyzw vf19, 4(vi06)      |  nop
L23:
  lq.xyzw vf19, 4(vi05)      |  nop
  lq.xyzw vf18, 4(vi06)      |  nop
L24:
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  move.xyzw vf15, vf17       |  maddax.xyzw ACC, vf06, vf17
  nop                        |  madday.xyzw ACC, vf07, vf17
  nop                        |  sub.xyzw vf29, vf18, vf17
  nop                        |  sub.xyzw vf30, vf19, vf17
  nop                        |  maddz.xyzw vf17, vf08, vf17
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  div Q, vf12.x, vf17.w      |  maddax.xyzw ACC, vf06, vf18
  nop                        |  madday.xyzw ACC, vf07, vf18
  nop                        |  mul.xyzw vf21, vf17, vf02
  nop                        |  maddz.xyzw vf18, vf08, vf18
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  maddax.xyzw ACC, vf06, vf19
  nop                        |  madday.xyzw ACC, vf07, vf19
  div Q, vf12.x, vf18.w      |  mul.xyz vf17, vf17, Q
  nop                        |  maddz.xyzw vf19, vf08, vf19
  nop                        |  mul.xyzw vf22, vf18, vf02
  nop                        |  opmula.xyz ACC, vf29, vf30
  nop                        |  opmsub.xyz vf29, vf30, vf29
  nop                        |  add.xy vf25, vf17, vf03
  nop                        |  mulw.z vf17, vf17, vf12
  div Q, vf12.x, vf19.w      |  mul.xyz vf18, vf18, Q
  nop                        |  mul.xyzw vf23, vf19, vf02
  nop                        |  mul.xyz vf29, vf29, vf15
  nop                        |  add.xyzw vf17, vf17, vf05
  nop                        |  mul.xy vf25, vf25, vf04
  nop                        |  nop
  nop                        |  ftoi4.xyzw vf17, vf17
  nop                        |  add.xy vf26, vf18, vf03
  nop                        |  mulw.z vf18, vf18, vf12
  fcset 0x0                  |  addy.x vf29, vf29, vf29
  nop                        |  mul.xyz vf19, vf19, Q
  sq.xyzw vf25, 4(vi02)      |  nop
  sq.xyzw vf17, 5(vi02)      |  add.xyzw vf18, vf18, vf05
  nop                        |  clipw.xyz vf21, vf21
  nop                        |  mul.xy vf26, vf26, vf04
  nop                        |  addz.x vf29, vf29, vf29
  nop                        |  ftoi4.xyzw vf18, vf18
  nop                        |  add.xy vf27, vf19, vf03
  sq.xyzw vf26, 6(vi02)      |  mulw.z vf19, vf19, vf12
  fsand vi01, 0x2            |  clipw.xyz vf22, vf22
  sq.xyzw vf18, 7(vi02)      |  clipw.xyz vf23, vf23
  ibeq vi00, vi01, L25       |  mul.xy vf27, vf27, vf04
  nop                        |  add.xyzw vf19, vf19, vf05
  b L26                      |  nop
  lq.xyzw vf31, 887(vi00)    |  nop
L25:
  lq.xyzw vf31, 886(vi00)    |  nop
L26:
  fcand vi01, 0x3ffff        |  ftoi4.xyzw vf19, vf19
  ibne vi00, vi01, L34       |  nop
  iaddi vi08, vi08, -0x1     |  nop
  sq.xyzw vf27, 8(vi02)      |  nop
  sq.xyzw vf31, 3(vi02)      |  nop
  sq.xyzw vf19, 9(vi02)      |  nop
  xgkick vi02                |  nop
  mtir vi02, vf01.y          |  nop
  mr32.xyzw vf01, vf01       |  nop
L27:
  ibgtz vi08, L22            |  nop
  nop                        |  nop
  iaddiu vi03, vi00, 0x158   |  nop
  ilwr.x vi08, vi03          |  nop
  ilwr.y vi01, vi03          |  nop
  iaddi vi03, vi03, 0x1      |  nop
L28:
  lqi.xyzw vf16, vi03        |  nop
  nop                        |  nop
  nop                        |  nop
  mtir vi01, vf16.w          |  nop
  mtir vi04, vf16.x          |  nop
  mtir vi05, vf16.y          |  nop
  mtir vi06, vf16.z          |  nop
  ibne vi00, vi01, L29       |  nop
  lq.xyzw vf17, 174(vi04)    |  nop
  lq.xyzw vf18, 174(vi05)    |  nop
  b L30                      |  nop
  lq.xyzw vf19, 174(vi06)    |  nop
L29:
  lq.xyzw vf19, 174(vi05)    |  nop
  lq.xyzw vf18, 174(vi06)    |  nop
L30:
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  move.xyzw vf15, vf17       |  maddax.xyzw ACC, vf06, vf17
  nop                        |  madday.xyzw ACC, vf07, vf17
  nop                        |  maddz.xyzw vf17, vf08, vf17
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  sub.xyzw vf29, vf18, vf15
  nop                        |  sub.xyzw vf30, vf19, vf15
  div Q, vf12.x, vf17.w      |  maddax.xyzw ACC, vf06, vf18
  nop                        |  mul.xyzw vf21, vf17, vf02
  nop                        |  madday.xyzw ACC, vf07, vf18
  nop                        |  maddz.xyzw vf18, vf08, vf18
  nop                        |  mulaw.xyzw ACC, vf09, vf00
  nop                        |  maddax.xyzw ACC, vf06, vf19
  nop                        |  madday.xyzw ACC, vf07, vf19
  div Q, vf12.x, vf18.w      |  mul.xyz vf17, vf17, Q
  nop                        |  maddz.xyzw vf19, vf08, vf19
  nop                        |  mul.xyzw vf22, vf18, vf02
  nop                        |  opmula.xyz ACC, vf29, vf30
  nop                        |  opmsub.xyz vf29, vf30, vf29
  nop                        |  add.xy vf25, vf17, vf03
  nop                        |  mulw.z vf17, vf17, vf12
  div Q, vf12.x, vf19.w      |  mul.xyz vf18, vf18, Q
  nop                        |  mul.xyzw vf23, vf19, vf02
  nop                        |  mul.xyz vf29, vf29, vf15
  nop                        |  add.xyzw vf17, vf17, vf05
  nop                        |  mul.xy vf25, vf25, vf04
  nop                        |  nop
  nop                        |  add.xy vf26, vf18, vf03
  nop                        |  ftoi4.xyzw vf17, vf17
  nop                        |  mulw.z vf18, vf18, vf12
  fcset 0x0                  |  addy.x vf29, vf29, vf29
  nop                        |  mul.xyz vf19, vf19, Q
  sq.xyzw vf25, 4(vi02)      |  nop
  sq.xyzw vf17, 5(vi02)      |  add.xyzw vf18, vf18, vf05
  nop                        |  clipw.xyz vf21, vf21
  nop                        |  mul.xy vf26, vf26, vf04
  nop                        |  addz.x vf29, vf29, vf29
  nop                        |  ftoi4.xyzw vf18, vf18
  nop                        |  add.xy vf27, vf19, vf03
  sq.xyzw vf26, 6(vi02)      |  mulw.z vf19, vf19, vf12
  fsand vi01, 0x2            |  clipw.xyz vf22, vf22
  sq.xyzw vf18, 7(vi02)      |  clipw.xyz vf23, vf23
  ibeq vi00, vi01, L31       |  mul.xy vf27, vf27, vf04
  nop                        |  add.xyzw vf19, vf19, vf05
  b L32                      |  nop
  lq.xyzw vf31, 887(vi00)    |  nop
L31:
  lq.xyzw vf31, 886(vi00)    |  nop
L32:
  fcand vi01, 0x3ffff        |  ftoi4.xyzw vf19, vf19
  ibne vi00, vi01, L35       |  nop
  iaddi vi08, vi08, -0x1     |  nop
  sq.xyzw vf27, 8(vi02)      |  nop
  sq.xyzw vf31, 3(vi02)      |  nop
  sq.xyzw vf19, 9(vi02)      |  nop
  xgkick vi02                |  nop
  mtir vi02, vf01.y          |  nop
  mr32.xyzw vf01, vf01       |  nop
L33:
  ibgtz vi08, L28            |  nop
  nop                        |  nop
  nop                        |  nop :e
  nop                        |  nop
L34:
  sq.xyzw vf21, 1000(vi00)   |  nop
  sq.xyzw vf22, 1003(vi00)   |  nop
  sq.xyzw vf23, 1006(vi00)   |  nop
  sq.xyzw vf31, 942(vi00)    |  nop
  mfir.x vf29, vi02          |  nop
  mfir.y vf29, vi03          |  nop
  mfir.z vf29, vi07          |  nop
  bal vi15, L36              |  nop
  mfir.w vf29, vi08          |  nop
  mtir vi08, vf29.w          |  nop
  mtir vi03, vf29.y          |  nop
  mtir vi07, vf29.z          |  nop
  b L27                      |  nop
  mtir vi02, vf29.x          |  nop
L35:
  sq.xyzw vf21, 1000(vi00)   |  nop
  sq.xyzw vf22, 1003(vi00)   |  nop
  sq.xyzw vf23, 1006(vi00)   |  nop
  sq.xyzw vf31, 942(vi00)    |  nop
  mfir.x vf29, vi02          |  nop
  mfir.y vf29, vi03          |  nop
  mfir.z vf29, vi07          |  nop
  bal vi15, L36              |  nop
  mfir.w vf29, vi08          |  nop
  mtir vi08, vf29.w          |  nop
  mtir vi03, vf29.y          |  nop
  mtir vi07, vf29.z          |  nop
  b L33                      |  nop
  mtir vi02, vf29.x          |  nop
L36:
  sq.xyzw vf00, 893(vi00)    |  nop
  sq.xyzw vf00, 900(vi00)    |  nop
  sq.xyzw vf00, 907(vi00)    |  nop
  sq.xyzw vf00, 914(vi00)    |  nop
  sq.xyzw vf00, 921(vi00)    |  nop
  sq.xyzw vf00, 928(vi00)    |  nop
  iaddiu vi01, vi00, 0x2d3   |  nop
  isw.z vi01, 893(vi00)      |  nop
  iaddiu vi01, vi00, 0x2d5   |  nop
  isw.z vi01, 900(vi00)      |  nop
  iaddiu vi01, vi00, 0x2d7   |  nop
  isw.z vi01, 907(vi00)      |  nop
  iaddiu vi01, vi00, 0x2d9   |  nop
  isw.z vi01, 914(vi00)      |  nop
  iaddiu vi01, vi00, 0x2db   |  nop
  isw.z vi01, 921(vi00)      |  nop
  iaddiu vi01, vi00, 0x2dd   |  nop
  isw.z vi01, 928(vi00)      |  nop
  iaddiu vi03, vi00, 0x3b0   |  nop
  iaddiu vi04, vi00, 0x3af   |  nop
  mfir.x vf31, vi15          |  nop
  iaddi vi05, vi00, 0x0      |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3e8   |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3eb   |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3ee   |  nop
  b L47                      |  nop
  nop                        |  nop
L37:
  sq.xyzw vf00, 893(vi00)    |  nop
  sq.xyzw vf00, 900(vi00)    |  nop
  sq.xyzw vf00, 907(vi00)    |  nop
  sq.xyzw vf00, 914(vi00)    |  nop
  sq.xyzw vf00, 921(vi00)    |  nop
  sq.xyzw vf00, 928(vi00)    |  nop
  iaddiu vi01, vi00, 0x2d3   |  nop
  isw.z vi01, 893(vi00)      |  nop
  iaddiu vi01, vi00, 0x2d5   |  nop
  isw.z vi01, 900(vi00)      |  nop
  iaddiu vi01, vi00, 0x2d7   |  nop
  isw.z vi01, 907(vi00)      |  nop
  iaddiu vi01, vi00, 0x2d9   |  nop
  isw.z vi01, 914(vi00)      |  nop
  iaddiu vi01, vi00, 0x2db   |  nop
  isw.z vi01, 921(vi00)      |  nop
  iaddiu vi01, vi00, 0x2dd   |  nop
  isw.z vi01, 928(vi00)      |  nop
  iaddiu vi03, vi00, 0x3b0   |  nop
  iaddiu vi04, vi00, 0x3af   |  nop
  mfir.x vf31, vi15          |  nop
  iaddi vi05, vi00, 0x0      |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3e8   |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3eb   |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3ee   |  nop
  bal vi15, L38              |  nop
  iaddiu vi07, vi00, 0x3f1   |  nop
  b L47                      |  nop
  nop                        |  nop
L38:
  iaddiu vi09, vi00, 0x37d   |  nop
L39:
  iaddi vi10, vi00, 0x0      |  nop
L40:
  isubiu vi01, vi09, 0x3a7   |  nop
  ilwr.y vi08, vi09          |  nop
  ibgez vi01, L44            |  nop
  ilwr.z vi06, vi09          |  nop
  lq.xyzw vf15, 0(vi07)      |  nop
  lq.xyzw vf14, 0(vi08)      |  nop
  ibne vi00, vi08, L41       |  nop
  iswr.y vi07, vi09          |  nop
  jalr vi11, vi06            |  nop
  iswr.x vi07, vi09          |  nop
  nop                        |  nop
  nop                        |  nop
  nop                        |  nop
  fsand vi02, 0x2            |  nop
  ibne vi00, vi02, L45       |  nop
  nop                        |  nop
  b L40                      |  nop
  iaddi vi09, vi09, 0x7      |  nop
L41:
  jalr vi11, vi06            |  nop
  nop                        |  nop
  nop                        |  nop
  nop                        |  nop
  fsand vi01, 0x2            |  nop
  fsand vi02, 0x2            |  nop
  ibne vi00, vi01, L43       |  nop
  nop                        |  nop
  ibne vi00, vi02, L42       |  nop
  nop                        |  nop
  b L40                      |  nop
  iaddi vi09, vi09, 0x7      |  nop
L42:
  bal vi11, L52              |  nop
  iaddi vi07, vi09, 0x1      |  nop
  sq.xyzw vf16, 1(vi09)      |  nop
  b L40                      |  nop
  iaddi vi09, vi09, 0x7      |  nop
L43:
  ibne vi00, vi02, L45       |  nop
  nop                        |  nop
  bal vi11, L53              |  nop
  nop                        |  nop
  sq.xyzw vf16, 4(vi09)      |  nop
  iaddi vi09, vi09, 0x7      |  nop
  isw.x vi09, 935(vi10)      |  nop
  isw.y vi07, 935(vi10)      |  nop
  iaddi vi10, vi10, 0x1      |  nop
  b L40                      |  nop
  iaddi vi07, vi09, -0x3     |  nop
L44:
  lq.xyzw vf14, 0(vi07)      |  nop
  iaddi vi05, vi05, 0x1      |  nop
  div Q, vf00.w, vf14.w      |  nop
  nop                        |  mul.xyzw vf14, vf14, vf13
  iaddi vi03, vi03, 0x2      |  nop
  waitq                      |  subw.w vf14, vf00, vf00
  nop                        |  mul.xyz vf14, vf14, Q
  nop                        |  add.xy vf26, vf14, vf03
  nop                        |  mulw.z vf14, vf14, vf12
  nop                        |  add.xyzw vf14, vf14, vf05
  nop                        |  mul.xy vf26, vf26, vf04
  sq.xyzw vf26, -2(vi03)     |  ftoi4.xyzw vf14, vf14
  sq.xyzw vf14, -1(vi03)     |  nop
L45:
  iblez vi10, L46            |  nop
  nop                        |  nop
  ilw.x vi09, 934(vi10)      |  nop
  ilw.y vi07, 934(vi10)      |  nop
  b L40                      |  nop
  iaddi vi10, vi10, -0x1     |  nop
L46:
  jr vi15                    |  nop
  nop                        |  nop
L47:
  iaddiu vi09, vi00, 0x37d   |  nop
L48:
  ilwr.x vi08, vi09          |  nop
  ilwr.y vi07, vi09          |  nop
  ilwr.z vi06, vi09          |  nop
  nop                        |  nop
  ibeq vi00, vi08, L50       |  nop
  lq.xyzw vf14, 0(vi07)      |  nop
  ibeq vi07, vi08, L50       |  nop
  lq.xyzw vf15, 0(vi08)      |  nop
  jalr vi11, vi06            |  nop
  nop                        |  nop
  nop                        |  nop
  nop                        |  nop
  fsand vi01, 0x2            |  nop
  fsand vi02, 0x2            |  nop
  ibeq vi02, vi01, L50       |  nop
  nop                        |  nop
  ibeq vi00, vi01, L49       |  nop
  nop                        |  nop
  bal vi11, L53              |  nop
  nop                        |  nop
  sq.xyzw vf16, 4(vi09)      |  nop
  iaddi vi07, vi09, 0x4      |  nop
  ior vi12, vi09, vi00       |  nop
  bal vi15, L39              |  nop
  iaddi vi09, vi09, 0x7      |  nop
  b L50                      |  nop
  ior vi09, vi12, vi00       |  nop
L49:
  bal vi11, L52              |  nop
  nop                        |  nop
  sq.xyzw vf16, 1(vi09)      |  nop
  iaddi vi07, vi09, 0x1      |  nop
  ior vi12, vi09, vi00       |  nop
  bal vi15, L39              |  nop
  iaddi vi09, vi09, 0x7      |  nop
  ior vi09, vi12, vi00       |  nop
L50:
  isubiu vi01, vi09, 0x3a0   |  nop
  iswr.x vi00, vi09          |  nop
  iswr.y vi00, vi09          |  nop
  ibltz vi01, L48            |  nop
  iaddi vi09, vi09, 0x7      |  nop
  ibeq vi00, vi05, L51       |  nop
  mtir vi15, vf31.x          |  nop
  iaddiu vi05, vi05, 0x4000  |  nop
  iaddiu vi05, vi05, 0x4000  |  nop
  iswr.x vi05, vi04          |  nop
  iaddiu vi01, vi00, 0x3ac   |  nop
  xgkick vi01                |  nop
  lq.xyzw vf30, 888(vi00)    |  nop
  lq.xyzw vf31, 890(vi00)    |  nop
  iaddiu vi01, vi00, 0x3fe   |  nop
  isubiu vi02, vi00, 0x7fff  |  nop
  sq.xyzw vf30, 0(vi01)      |  nop
  iswr.x vi02, vi01          |  nop
  sq.xyzw vf31, 1(vi01)      |  nop
  nop                        |  nop
  xgkick vi01                |  nop
L51:
  nop                        |  nop
  jr vi15                    |  nop
  nop                        |  nop
  jr vi11                    |  addx.w vf30, vf14, vf14
  nop                        |  addx.w vf31, vf15, vf15
  jr vi11                    |  subx.w vf30, vf14, vf14
  nop                        |  subx.w vf31, vf15, vf15
  jr vi11                    |  addy.w vf30, vf14, vf14
  nop                        |  addy.w vf31, vf15, vf15
  jr vi11                    |  suby.w vf30, vf14, vf14
  nop                        |  suby.w vf31, vf15, vf15
  jr vi11                    |  addz.w vf30, vf14, vf14
  nop                        |  addz.w vf31, vf15, vf15
  jr vi11                    |  subz.w vf30, vf14, vf14
  nop                        |  subz.w vf31, vf15, vf15
L52:
  nop                        |  subw.w vf31, vf30, vf31
  div Q, vf30.w, vf31.w      |  sub.xyzw vf16, vf15, vf14
  waitq                      |  mul.xyzw vf16, vf16, Q
  jr vi11                    |  add.xyzw vf16, vf14, vf16
  nop                        |  nop
L53:
  nop                        |  subw.w vf30, vf30, vf31
  div Q, vf31.w, vf30.w      |  sub.xyzw vf16, vf14, vf15
  waitq                      |  mul.xyzw vf16, vf16, Q
  jr vi11                    |  sub.xyzw vf16, vf15, vf16
  nop                        |  nop
  lq. vf00, 0(vi00)          |  addx. vf00, vf00, vf00
