From 7339b2b965eb460ab75b1090c19ce67ca5b11faf Mon Sep 17 00:00:00 2001 From: Hat Kid <6624576+Hat-Kid@users.noreply.github.com> Date: Sun, 11 Sep 2022 01:02:58 +0200 Subject: [PATCH] decomp: `merc`, `merc-vu1` (#1865) The merc VU1 program is identical to Jak 1. Jak 2's merc is doing some new texture login stuff and the DMA buffer setup is a bit different, but overall very similar. --- decompiler/config/jak2/all-types.gc | 28 +- decompiler/config/jak2/label_types.jsonc | 3 +- decompiler/config/jak2/type_casts.jsonc | 33 + decompiler/config/jak2/var_names.jsonc | 28 + decompiler/config/jak2_ntsc_v1.jsonc | 2 +- goal_src/jak2/engine/gfx/hw/display-h.gc | 2 +- goal_src/jak2/engine/gfx/merc/emerc.gc | 2 +- goal_src/jak2/engine/gfx/merc/merc-h.gc | 2 +- goal_src/jak2/engine/gfx/merc/merc-vu1.gc | 1 + goal_src/jak2/engine/gfx/merc/merc.gc | 649 +++ goal_src/jak2/engine/gfx/vu1-user-h.gc | 4 +- .../jak2/engine/gfx/hw/display-h_REF.gc | 8 +- .../jak2/engine/gfx/merc/emerc_REF.gc | 2 +- .../jak2/engine/gfx/merc/merc-h_REF.gc | 4 +- .../jak2/engine/gfx/merc/merc-vu1_REF.gc | 9 + .../jak2/engine/gfx/merc/merc_REF.gc | 713 +++ test/decompiler/test_VuDisasm.cpp | 7 + .../vu_reference/jak2/merc-vu1-result.txt | 2198 +++++++++ .../decompiler/vu_reference/jak2/merc-vu1.txt | 4042 +++++++++++++++++ 19 files changed, 7709 insertions(+), 28 deletions(-) create mode 100644 test/decompiler/reference/jak2/engine/gfx/merc/merc-vu1_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc create mode 100644 test/decompiler/vu_reference/jak2/merc-vu1-result.txt create mode 100644 test/decompiler/vu_reference/jak2/merc-vu1.txt diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index a10bbcd3e5..c77e338ce7 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -3016,8 +3016,8 @@ (rn10) (rn11) (rn12) - (rn13) - (rn14) + (merc) + (emerc) (rn15) (rn16) (rn17) @@ -7461,7 +7461,7 @@ (define-extern adgif-shader-update! (function adgif-shader texture none)) ;; (define-extern adgif-shader<-texture-with-update! function) ;; (function adgif-shader texture adgif-shader) ;; (define-extern hack-texture function) -;; (define-extern adgif-shader-login function) ;; (function adgif-shader texture) +(define-extern adgif-shader-login (function adgif-shader texture)) (define-extern adgif-shader-login-no-remap (function adgif-shader texture)) ;; (define-extern adgif-shader-login-fast function) ;; (function adgif-shader texture) ;; (define-extern adgif-shader-login-no-remap-fast function) ;; (function adgif-shader texture) @@ -10344,7 +10344,7 @@ :size-assert #x18 :flag-assert #xa00000018 (:methods - (login-adgifs (_type_) none 9) + (login-adgifs (_type_) merc-fragment 9) ) ) @@ -22016,7 +22016,7 @@ ;; merc-vu1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern merc-vu1-block object) ;; vu-function +(define-extern merc-vu1-block vu-function) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; emerc-vu1 ;; @@ -22107,7 +22107,6 @@ ;; merc ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype texture-login-data (structure) ((default-texture-index int32 :offset-assert 0) (current-texture-index int32 :offset-assert 4) @@ -22119,7 +22118,6 @@ :size-assert #x14 :flag-assert #x900000014 ) -|# #| (deftype merc-fragment-control (structure) @@ -22143,15 +22141,15 @@ ) |# -;; (define-extern *texture-login-data* object) -;; (define-extern texture-usage-init function) -;; (define-extern texture-usage-update function) -;; (define-extern merc-stats-display function) ;; (function merc-ctrl none) +(define-extern *texture-login-data* texture-login-data) +(define-extern texture-usage-init (function merc-ctrl symbol)) +(define-extern texture-usage-update (function texture symbol)) +(define-extern merc-stats-display (function merc-ctrl none)) (define-extern merc-stats (function none)) -;; (define-extern merc-edge-stats function) ;; (function none) +(define-extern merc-edge-stats (function none)) (define-extern merc-vu1-add-vu-function (function dma-packet vu-function int dma-gif-packet)) -;; (define-extern merc-vu1-initialize-chain function) ;; (function dma-gif-packet dma-packet) -;; (define-extern merc-vu1-init-buffer function) ;; (function bucket-id gs-test int none) +(define-extern merc-vu1-initialize-chain (function dma-gif-packet int dma-packet)) +(define-extern merc-vu1-init-buffer (function bucket-id int symbol int)) (define-extern merc-vu1-init-buffers (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -28927,7 +28925,7 @@ ;; (define-extern render-eyes-64-different function) ;; (define-extern debug-eyes function) (define-extern update-eyes (function none)) -;; (define-extern get-eye-block function) ;; (function int int int) +(define-extern get-eye-block (function int int int)) ;; (define-extern convert-eye-data function) ;; (function eye uint float) ;; (define-extern merc-eye-anim function) ;; (function process-drawable none) ;; (define-extern set-eye-draw-flag function) diff --git a/decompiler/config/jak2/label_types.jsonc b/decompiler/config/jak2/label_types.jsonc index 8680c8f5be..909391388f 100644 --- a/decompiler/config/jak2/label_types.jsonc +++ b/decompiler/config/jak2/label_types.jsonc @@ -165,5 +165,6 @@ ["L480", "vector"], ["L479", "vector"], ["L474", "vector"] - ] + ], + "merc-vu1": [["L1", "vu-function"]] } diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index d163e877a2..8b43d50eae 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -1909,6 +1909,39 @@ [9, "t9", "(function editable-light editable-array none)"] ], "(method 25 editable)": [[[12, 17], "a0", "editable"]], + "merc-edge-stats": [[31, "v1", "merc-ctrl"]], + "(method 8 merc-ctrl)": [ + [46, "s2", "pointer"], // was merc-fragment-control + [[22, 45], "s2", "merc-fragment-control"], + [[89, 93], "a1", "merc-blend-ctrl"], + [103, "a1", "pointer"] + ], + "merc-vu1-initialize-chain": [ + [[13, 19], "gp", "(pointer vif-tag)"], + [[19, 116], "s5", "merc-vu1-low-mem"], + [127, "gp", "(inline-array dma-packet)"] + ], + "(method 9 merc-fragment)": [[[13, 265], "s3", "adgif-shader"]], + "(method 9 merc-effect)": [ + [46, "s4", "pointer"], + [47, "s5", "pointer"], + [[0, 46], "s4", "merc-fragment"], + [[0, 47], "s5", "merc-fragment-control"] + ], + "merc-vu1-init-buffer": [ + [[21, 37], "a0", "dma-packet"], + [[37, 40], "a0", "gs-gif-tag"], + [45, "a0", "(pointer gs-test)"], + [47, "a0", "(pointer gs-reg64)"], + [49, "a1", "(pointer gs-reg64)"], + [52, "a0", "(pointer gs-test)"], + [54, "a0", "(pointer gs-test)"], + [[63, 68], "v1", "dma-packet"] + ], + "texture-usage-init": [ + [23, "a1", "texture-masks"], + [24, "a1", "texture-mask"] + ], // placeholder "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak2/var_names.jsonc b/decompiler/config/jak2/var_names.jsonc index e6eddaf686..17233c7fb4 100644 --- a/decompiler/config/jak2/var_names.jsonc +++ b/decompiler/config/jak2/var_names.jsonc @@ -665,5 +665,33 @@ "v1-48": "time-after-vsync", "s5-1": "next-dma-buf" } + }, + "merc-vu1-add-vu-function": { + "args": ["dma", "func", "flush-mode"], + "vars": { + "v1-0": "func-data", + "a3-0": "qwc", + "a1-1": "dst", + "t0-1": "qwc-this-time" + } + }, + "merc-vu1-init-buffer": { + "args": ["dma-bucket"], + "vars": { + "gp-0": "bucket", + "s4-0": "dma-buf" + } + }, + "(method 9 merc-effect)": { + "vars": { + "v1-0": "data", + "v1-1": "tex", + "a0-8": "seg", + "s3-0": "frag-idx", + "s2-0": "ctrl-size", + "s1-0": "geo-size", + "s4-0": ["geo", "merc-fragment"], + "s5-0": ["ctrl", "merc-fragment-control"] + } } } diff --git a/decompiler/config/jak2_ntsc_v1.jsonc b/decompiler/config/jak2_ntsc_v1.jsonc index cca07de9e1..873b2858fb 100644 --- a/decompiler/config/jak2_ntsc_v1.jsonc +++ b/decompiler/config/jak2_ntsc_v1.jsonc @@ -8,7 +8,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. "allowed_objects": [], - "banned_objects": ["effect-control"], + "banned_objects": ["effect-control", "time-of-day"], //////////////////////////// // CODE ANALYSIS OPTIONS diff --git a/goal_src/jak2/engine/gfx/hw/display-h.gc b/goal_src/jak2/engine/gfx/hw/display-h.gc index f4d54882c1..433f1649f6 100644 --- a/goal_src/jak2/engine/gfx/hw/display-h.gc +++ b/goal_src/jak2/engine/gfx/hw/display-h.gc @@ -94,7 +94,7 @@ (defconstant DEFAULT_ALL_RENDERERS (vu1-renderer-mask - rn3 rn4 rn5 rn6 rn7 rn8 rn9 rn10 rn11 rn12 rn13 rn14 rn15 rn16 + rn3 rn4 rn5 rn6 rn7 rn8 rn9 rn10 rn11 rn12 merc emerc rn15 rn16 rn17 rn18 rn19 rn20 rn21 rn22 rn23 rn24 rn25 rn26 rn27 rn28 rn29 rn30 rn31 rn32 rn34 ) diff --git a/goal_src/jak2/engine/gfx/merc/emerc.gc b/goal_src/jak2/engine/gfx/merc/emerc.gc index 6bc7c9661a..9f22a5ff09 100644 --- a/goal_src/jak2/engine/gfx/merc/emerc.gc +++ b/goal_src/jak2/engine/gfx/merc/emerc.gc @@ -117,7 +117,7 @@ ) (defun emerc-vu1-init-buffers () - (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask rn14)) + (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask emerc)) (emerc-vu1-init-buffer (bucket-id bucket-15) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)) 0) (emerc-vu1-init-buffer (bucket-id bucket-26) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)) 0) (emerc-vu1-init-buffer (bucket-id bucket-37) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)) 0) diff --git a/goal_src/jak2/engine/gfx/merc/merc-h.gc b/goal_src/jak2/engine/gfx/merc/merc-h.gc index 3e9cef04a2..7f5be33299 100644 --- a/goal_src/jak2/engine/gfx/merc/merc-h.gc +++ b/goal_src/jak2/engine/gfx/merc/merc-h.gc @@ -49,7 +49,7 @@ :size-assert #x18 :flag-assert #xa00000018 (:methods - (login-adgifs (_type_) none 9) + (login-adgifs (_type_) merc-fragment 9) ) ) diff --git a/goal_src/jak2/engine/gfx/merc/merc-vu1.gc b/goal_src/jak2/engine/gfx/merc/merc-vu1.gc index 8d85047bcf..66a6c385e0 100644 --- a/goal_src/jak2/engine/gfx/merc/merc-vu1.gc +++ b/goal_src/jak2/engine/gfx/merc/merc-vu1.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define merc-vu1-block (new 'static 'vu-function :length #x7e5 :qlength #x3f3)) \ No newline at end of file diff --git a/goal_src/jak2/engine/gfx/merc/merc.gc b/goal_src/jak2/engine/gfx/merc/merc.gc index 197b572351..bc8ddc65a2 100644 --- a/goal_src/jak2/engine/gfx/merc/merc.gc +++ b/goal_src/jak2/engine/gfx/merc/merc.gc @@ -5,5 +5,654 @@ ;; name in dgo: merc ;; dgos: ENGINE, GAME +;; TODO uncomment usages of adgif-shader-login and get-eye-block once their respective files are finished +;; (define-extern adgif-shader-login (function adgif-shader texture)) +;; (define-extern get-eye-block (function int int int)) + ;; DECOMP BEGINS +(format 0 "SKIP: calls to adgif-shader-login and get-eye-block in merc~%") + +(deftype texture-login-data (structure) + ((default-texture-index int32 :offset-assert 0) + (current-texture-index int32 :offset-assert 4) + (texture-usage-group texture-usage-group :offset-assert 8) + (merc-ctrl-header merc-ctrl-header :offset-assert 12) + (name basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(define *texture-login-data* (new 'global 'texture-login-data)) + +(defmethod login art-joint-geo ((obj art-joint-geo)) + (let ((s5-0 *texture-login-data*)) + (set! (-> s5-0 default-texture-index) + (res-lump-value (-> obj extra) 'texture-bucket int :default (the-as uint128 1) :time -1000000000.0) + ) + ) + obj + ) + +(defun texture-usage-init ((arg0 merc-ctrl)) + "Initialize texture login data." + (let ((gp-0 *texture-login-data*)) + (set! (-> arg0 header texture-usage-group) (new 'loading-level 'texture-usage-group)) + (set! (-> gp-0 texture-usage-group) (-> arg0 header texture-usage-group)) + (set! (-> gp-0 merc-ctrl-header) (-> arg0 header)) + (set! (-> gp-0 name) (-> arg0 name)) + (dotimes (v1-4 7) + (dotimes (a0-2 3) + (set! (-> (the-as + texture-mask + (+ (the-as uint (the-as texture-masks (+ (the-as uint (-> gp-0 texture-usage-group)) (* 48 v1-4)))) + (* a0-2 16) + ) + ) + mask + quad + ) + (the-as uint128 0) + ) + ) + ) + ) + #f + ) + +(defun texture-usage-update ((arg0 texture)) + (local-vars (a3-3 uint128)) + (let* ((v1-0 *texture-login-data*) + (a1-0 (-> v1-0 current-texture-index)) + (v1-2 (-> v1-0 texture-usage-group data a1-0)) + ) + (dotimes (a1-3 3) + (let* ((a2-3 (-> v1-2 data a1-3)) + (t1-0 (-> arg0 masks data a1-3)) + (a3-2 (-> a2-3 mask quad)) + (t0-0 (-> t1-0 mask quad)) + (f0-0 (-> a2-3 dist)) + (f1-0 (-> t1-0 dist)) + ) + (.por a3-3 a3-2 t0-0) + (let ((f0-1 (fmax f0-0 f1-0))) + (set! (-> a2-3 mask quad) a3-3) + (set! (-> a2-3 mask w) (the-as int f0-1)) + ) + ) + ) + ) + #f + ) + +(defmethod asize-of merc-fragment ((obj merc-fragment)) + (the-as int (* (-> obj header mm-quadword-size) 16)) + ) + +(defmethod login-adgifs merc-fragment ((obj merc-fragment)) + (let* ((s5-0 (merc-fragment-fp-data obj)) + (v1-1 (-> *texture-login-data* merc-ctrl-header)) + (s4-0 (if (nonzero? (-> v1-1 eye-ctrl)) + (-> v1-1 eye-ctrl) + (the-as merc-eye-ctrl #f) + ) + ) + (s3-0 (the-as adgif-shader (&+ s5-0 16))) + ) + (dotimes (s2-0 (the-as int (-> s5-0 shader-cnt))) + (cond + ((and s4-0 (= (logand (the-as texture-id -256) (-> s3-0 texture-id)) #x70c00700)) + (let ((v1-6 (/ (-> s4-0 eye-slot) 20)) + (s1-0 (mod (-> s4-0 eye-slot) 20)) + ) + (cond + ((< v1-6 3) + ;; (adgif-shader-login s3-0) + ;; (let ((v1-8 (get-eye-block s1-0 0))) + ;; (set! (-> s3-0 tex0 tbp0) v1-8) + ;; ) + (set! (-> s3-0 tex0 tw) 5) + (set! (-> s3-0 tex0 th) 5) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 1) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) + ) + ) + (else + ;; (adgif-shader-login s3-0) + (let ((v1-34 (+ (-> *eyes-texture-base* vram-block) (* s1-0 32)))) + (set! (-> s3-0 tex0 tbp0) v1-34) + ) + (set! (-> s3-0 tex0 tw) 6) + (set! (-> s3-0 tex0 th) 6) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 2) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x3f :maxv #x3f) + ) + ) + ) + ) + ) + ((and s4-0 (= (logand (the-as texture-id -256) (-> s3-0 texture-id)) #x70c00800)) + (let ((v1-61 (/ (-> s4-0 eye-slot) 20)) + (s1-1 (mod (-> s4-0 eye-slot) 20)) + ) + (cond + ((< v1-61 3) + ;; (adgif-shader-login s3-0) + ;; (let ((v1-63 (get-eye-block s1-1 1))) + ;; (set! (-> s3-0 tex0 tbp0) v1-63) + ;; ) + (set! (-> s3-0 tex0 tw) 5) + (set! (-> s3-0 tex0 th) 5) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 1) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) + ) + ) + (else + ;; (adgif-shader-login s3-0) + (let ((v1-89 (+ (-> *eyes-texture-base* vram-block) (* (+ s1-1 1) 32)))) + (set! (-> s3-0 tex0 tbp0) v1-89) + ) + (set! (-> s3-0 tex0 tw) 6) + (set! (-> s3-0 tex0 th) 6) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 2) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x3f :maxv #x3f) + ) + ) + ) + ) + ) + (else + ;; (let ((a0-69 (adgif-shader-login s3-0))) + ;; (if a0-69 + ;; (texture-usage-update a0-69) + ;; ) + ;; ) + ) + ) + (&+! s3-0 80) + ) + ) + obj + ) + +(defmethod asize-of merc-fragment-control ((obj merc-fragment-control)) + (the-as int (+ (* (-> obj mat-xfer-count) 2) 4)) + ) + +(defmethod login-adgifs merc-effect ((obj merc-effect)) + (let* ((data *texture-login-data*) + (a0-1 (-> data default-texture-index)) + ) + (when (= (-> obj merc-effect-version) 1) + (if (!= (-> obj texture-index) 255) + (set! a0-1 (the-as int (-> obj texture-index))) + ) + ) + (set! (-> data current-texture-index) a0-1) + (set! (-> obj texture-index) (the-as uint a0-1)) + ) + (let ((tex (-> obj extra-info))) + (when (nonzero? tex) + (when (nonzero? (-> tex shader-offset)) + ;; (let ((a0-6 (adgif-shader-login (the-as adgif-shader (+ (the-as uint tex) (* (-> tex shader-offset) 16)))))) + ;; (if a0-6 + ;; (texture-usage-update a0-6) + ;; ) + ;; ) + ) + ) + ) + (let ((ctrl (-> obj frag-ctrl)) + (geo (-> obj frag-geo)) + ) + (dotimes (frag-idx (the-as int (-> obj frag-count))) + (let ((ctrl-size (asize-of ctrl))) + (let ((geo-size (asize-of geo))) + (login-adgifs geo) + (set! geo (the-as merc-fragment (&+ (the-as pointer geo) geo-size))) + ) + (set! ctrl (the-as merc-fragment-control (&+ (the-as pointer ctrl) ctrl-size))) + ) + ) + ) + (none) + ) + +;; definition for method 8 of type merc-ctrl +(defmethod mem-usage merc-ctrl ((obj merc-ctrl) (arg0 memory-usage-block) (arg1 int)) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 arg1) + ) + (let ((s4-0 (+ 32 128 (* (-> obj header effect-count) 32)))) + (dotimes (s3-0 (the-as int (-> obj header effect-count))) + (let ((s2-0 (the-as object (-> obj effect s3-0 frag-ctrl)))) + (dotimes (s1-0 (the-as int (-> obj effect s3-0 frag-count))) + (set! s4-0 (+ s4-0 + (* (shr (+ (-> (the-as merc-fragment-control s2-0) unsigned-four-count) 3) 2) 16) + (* (shr (+ (-> (the-as merc-fragment-control s2-0) lump-four-count) 3) 2) 16) + (* (-> (the-as merc-fragment-control s2-0) fp-qwc) 16) + (asize-of (the-as merc-fragment-control s2-0)) + ) + ) + (set! s2-0 (&+ (the-as pointer s2-0) (asize-of (the-as merc-fragment-control s2-0)))) + ) + ) + ) + (set! (-> arg0 length) (max 79 (-> arg0 length))) + (set! (-> arg0 data 78 name) "merc-ctrl") + (+! (-> arg0 data 78 count) 1) + (+! (-> arg0 data 78 used) s4-0) + (+! (-> arg0 data 78 total) (logand -16 (+ s4-0 15))) + ) + (let ((v1-35 0)) + (dotimes (a0-15 (the-as int (-> obj header effect-count))) + (when (nonzero? (-> obj effect a0-15 blend-frag-count)) + (let ((a1-9 (the-as object (-> obj effect a0-15 blend-ctrl)))) + (dotimes (a2-1 (the-as int (-> obj effect a0-15 blend-frag-count))) + (let ((v1-36 + (+ v1-35 + (* (+ (-> (the-as merc-blend-ctrl a1-9) nonzero-index-count) 1) + (the-as uint (logand (+ (* (the-as uint 6) (-> (the-as merc-blend-ctrl a1-9) blend-vtx-count)) 15) #xfff0)) + ) + ) + ) + ) + (set! v1-35 (the-as int (+ (-> obj header blend-target-count) 2 v1-36))) + ) + (set! a1-9 (&+ (the-as pointer a1-9) (+ (-> obj header blend-target-count) 2))) + ) + ) + ) + ) + (when (nonzero? v1-35) + (set! (-> arg0 length) (max 81 (-> arg0 length))) + (set! (-> arg0 data 80 name) "blend-shape") + (+! (-> arg0 data 80 count) 1) + (+! (-> arg0 data 80 used) v1-35) + (+! (-> arg0 data 80 total) (logand -16 (+ v1-35 15))) + ) + ) + (when (and (-> obj header eye-ctrl) (nonzero? (-> obj header eye-ctrl))) + (let ((a0-29 (-> obj header eye-ctrl))) + (set! (-> arg0 length) (max 112 (-> arg0 length))) + (set! (-> arg0 data 111 name) "eye-anim") + (+! (-> arg0 data 111 count) 1) + (let ((v1-49 (asize-of a0-29))) + (+! (-> arg0 data 111 used) v1-49) + (+! (-> arg0 data 111 total) (logand -16 (+ v1-49 15))) + ) + ) + ) + obj + ) + +;; definition for method 9 of type merc-ctrl +(defmethod login merc-ctrl ((obj merc-ctrl)) + (set! (-> *kernel-context* login-object) obj) + (texture-usage-init obj) + (dotimes (s5-0 (the-as int (-> obj header effect-count))) + (login-adgifs (-> obj effect s5-0)) + ) + (when (and (-> obj header eye-ctrl) (nonzero? (-> obj header eye-ctrl))) + (let ((s5-1 (-> obj header eye-ctrl))) + (dotimes (s4-0 (-> s5-1 shader-count)) + ;; (let ((a0-5 (adgif-shader-login (-> s5-1 shader s4-0)))) + ;; (if a0-5 + ;; (texture-usage-update a0-5) + ;; ) + ;; ) + ) + ) + ) + (set! (-> *kernel-context* login-object) #f) + obj + ) + +(defun-debug merc-stats-display ((arg0 merc-ctrl)) + "Print merc debug stats." + (format #t "~30s:" (-> arg0 name)) + (let ((s5-0 (-> arg0 header st-int-scale)) + (s4-0 (ash 1 (- 12 (the-as int (-> arg0 header st-int-scale))))) + ) + (format #t " ST ~3D, " s4-0) + (cond + ((>= s5-0 (the-as uint 5)) + (format #t "RANGE ~D+," (/ 128 s4-0)) + ) + ((= s5-0 4) + (format #t "RANGE 0.5+,") + ) + ) + ) + (dotimes (s5-1 (the-as int (-> arg0 header effect-count))) + (let ((s3-0 (-> arg0 effect s5-1))) + (if (nonzero? s5-1) + (format #t "~48s " " ") + ) + (let ((a2-4 (-> s3-0 frag-count)) + (s4-1 (-> s3-0 tri-count)) + (f30-0 (the float (-> s3-0 frag-count))) + (f28-0 (the float (-> s3-0 dvert-count))) + (f26-0 (the float (-> s3-0 tri-count))) + ) + (if (>= (/ (+ 50.0 f28-0) f30-0) 50.0) + (format #t "~3D frags, ~2,,1f dverts/frag " a2-4 (/ f28-0 f30-0)) + (format #t "~3D frags, ~2,,1f ******/**** " a2-4 (/ f28-0 f30-0)) + ) + (format + #t + "(~4D tris, striplen ~2,,2f, ~2,,1f tris/frag)~%" + s4-1 + (/ (* 2.0 f26-0) (- f28-0 f26-0)) + (/ f26-0 f30-0) + ) + ) + ) + ) + (none) + ) + +(defun-debug merc-stats () + (dotimes (gp-0 7) + (let ((s5-0 (-> *level* level gp-0 art-group))) + (when (nonzero? s5-0) + (dotimes (s4-0 (-> s5-0 art-group-array length)) + (let ((s3-0 (-> s5-0 art-group-array s4-0))) + (dotimes (s2-0 (-> s3-0 length)) + (let* ((s1-0 (-> s3-0 data s2-0)) + (a0-3 (if (type? s1-0 merc-ctrl) + s1-0 + ) + ) + ) + (if a0-3 + (merc-stats-display (the-as merc-ctrl a0-3)) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defun-debug merc-edge-stats () + (dotimes (gp-0 7) + (let ((s5-0 (-> *level* level gp-0 art-group))) + (when (nonzero? s5-0) + (dotimes (s4-0 (-> s5-0 art-group-array length)) + (let ((s3-0 (-> s5-0 art-group-array s4-0))) + (dotimes (s2-0 (-> s3-0 length)) + (let* ((s1-0 (-> s3-0 data s2-0)) + (v1-9 (if (type? s1-0 merc-ctrl) + s1-0 + ) + ) + ) + (if v1-9 + (format #t "~30s: ~f~%" (-> v1-9 name) (-> (the-as merc-ctrl v1-9) header longest-edge)) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function merc-vu1-add-vu-function +;; WARN: Return type mismatch dma-packet vs dma-gif-packet. +(defun merc-vu1-add-vu-function ((dma dma-packet) (func vu-function) (flush-mode int)) + "Add VU1 function to DMA chain." + (let ((func-data (&-> func data 4)) + (qwc (-> func qlength)) + (dst (-> func origin)) + ) + (while (> qwc 0) + (let ((qwc-this-time (min 127 qwc))) + (set! (-> dma dma) + (new 'static 'dma-tag :id (dma-tag-id ref) :qwc qwc-this-time :addr (the-as int func-data)) + ) + (set! (-> dma vif0) (new 'static 'vif-tag :cmd (if (zero? flush-mode) 16 19))) + (set! (-> dma vif1) (new 'static 'vif-tag :cmd (vif-cmd mpg) :num (* qwc-this-time 2) :imm dst)) + (&+! dma 16) + (&+! func-data (* qwc-this-time 16)) + (set! qwc (- qwc qwc-this-time)) + (+! dst (* qwc-this-time 2)) + ) + ) + ) + (the-as dma-gif-packet dma) + ) + +(defun merc-vu1-initialize-chain ((arg0 dma-gif-packet) (arg1 int)) + "Init a merc DMA chain." + (let ((gp-0 (the-as object (merc-vu1-add-vu-function (the-as dma-packet arg0) merc-vu1-block 1)))) + (set! (-> (the-as dma-gif-packet gp-0) dma-vif dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) + (set! (-> (the-as dma-gif-packet gp-0) dma-vif vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + (set! (-> (the-as dma-gif-packet gp-0) dma-vif vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) + (set! (-> (the-as (pointer vif-tag) gp-0) 4) (new 'static 'vif-tag :imm #x1ba :cmd (vif-cmd base))) + (set! (-> (the-as (pointer vif-tag) gp-0) 5) (new 'static 'vif-tag :imm #xfe46 :cmd (vif-cmd offset))) + (set! (-> (the-as (pointer vif-tag) gp-0) 6) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) gp-0) 7) (new 'static 'vif-tag :num #x8 :cmd (vif-cmd unpack-v4-32))) + (let ((s5-0 (the-as merc-vu1-low-mem (&+ (the-as dma-gif-packet gp-0) 32)))) + (case *subdivide-foreground-draw-mode* + (((subdivide-setting textured)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303e4000 32)) 32)) + ) + (((subdivide-setting outline)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303d4000 32)) 32)) + ) + (((subdivide-setting gouraud)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x30364000 32)) 32)) + ) + (((subdivide-setting hack)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303d4000 32)) 32)) + ) + ) + (set! (-> s5-0 ad-gif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) + (set! (-> s5-0 ad-gif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) + (set! (-> s5-0 hvdf-offset quad) (-> *math-camera* hvdf-off quad)) + (quad-copy! (-> s5-0 perspective) (the-as pointer (-> *math-camera* perspective)) 4) + (set-vector! (-> s5-0 fog) (-> *math-camera* pfog0) (-> *math-camera* fog-min) (-> *math-camera* fog-max) 0.0) + ) + (let ((v1-50 (-> (the-as (inline-array dma-packet) gp-0) 10))) + (set! (-> v1-50 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> v1-50 vif0) (new 'static 'vif-tag)) + (set! (-> v1-50 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x0)) + (&+ v1-50 16) + ) + ) + ) + +(defun merc-vu1-init-buffer ((dma-bucket bucket-id) (arg1 int) (arg2 symbol)) + "Set up a merc DMA buffer." + (let ((bucket (-> *display* frames (-> *display* on-screen) bucket-group dma-bucket))) + (when (!= bucket (-> bucket last)) + (let* ((dma-buf (-> *display* frames (-> *display* on-screen) global-buf)) + (s3-1 (-> dma-buf base)) + ) + (set! (-> dma-buf base) + (the-as + pointer + (merc-vu1-initialize-chain (the-as dma-gif-packet (the-as dma-packet (-> dma-buf base))) arg1) + ) + ) + (let* ((v1-12 dma-buf) + (a0-4 (the-as dma-packet (-> v1-12 base))) + ) + (set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) + (set! (-> a0-4 vif0) (new 'static 'vif-tag)) + (set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-12 base) (the-as pointer (the-as dma-packet (&+ a0-4 16)))) + ) + (let* ((v1-13 dma-buf) + (a0-6 (the-as object (-> v1-13 base))) + ) + (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) + (set! (-> (the-as gs-gif-tag a0-6) regs) (new 'static 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d) + ) + ) + (set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16)) + ) + (let* ((v1-14 dma-buf) + (a0-8 (-> v1-14 base)) + ) + (set! (-> (the-as (pointer gs-test) a0-8) 0) (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) + (set! (-> (the-as (pointer gs-test) a0-8) 2) (if arg2 + (the-as gs-test #x1000130) + (the-as gs-test (the-as uint #x101000130)) + ) + ) + (set! (-> (the-as (pointer gs-test) a0-8) 3) (new 'static 'gs-test :atst (gs-atest not-equal) :aref #x4)) + (set! (-> v1-14 base) (&+ a0-8 32)) + ) + (let ((v1-15 (the-as object (-> dma-buf base)))) + (set! (-> (the-as dma-packet v1-15) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) + (set! (-> (the-as dma-packet v1-15) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-15) vif1) (new 'static 'vif-tag)) + (set! (-> dma-buf base) (the-as pointer (the-as dma-packet (&+ (the-as dma-packet v1-15) 16)))) + ) + (set! (-> bucket next) (the-as uint s3-1)) + ) + ) + ) + 0 + ) + +(defun merc-vu1-init-buffers () + "Init merc DMA buffers." + (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask merc)) + (merc-vu1-init-buffer (bucket-id bucket-14) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-25) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-36) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-47) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-58) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-69) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-188) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-197) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-201) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-205) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-209) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-213) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-217) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-221) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-79) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-88) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-97) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-106) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-115) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-124) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-192) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-131) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-141) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-151) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-161) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-171) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-181) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-225) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-229) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-233) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-237) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-241) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-245) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-249) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-253) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-262) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-271) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-280) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-289) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-298) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-307) 1 #f) + ) + 0 + (none) + ) diff --git a/goal_src/jak2/engine/gfx/vu1-user-h.gc b/goal_src/jak2/engine/gfx/vu1-user-h.gc index dac0cadee8..f2a665183d 100644 --- a/goal_src/jak2/engine/gfx/vu1-user-h.gc +++ b/goal_src/jak2/engine/gfx/vu1-user-h.gc @@ -382,8 +382,8 @@ (rn10) (rn11) (rn12) - (rn13) - (rn14) + (merc) + (emerc) (rn15) (rn16) (rn17) diff --git a/test/decompiler/reference/jak2/engine/gfx/hw/display-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/hw/display-h_REF.gc index b1e92007b3..beefb50a4a 100644 --- a/test/decompiler/reference/jak2/engine/gfx/hw/display-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/hw/display-h_REF.gc @@ -153,8 +153,8 @@ rn10 rn11 rn12 - rn13 - rn14 + merc + emerc rn15 rn16 rn17 @@ -187,8 +187,8 @@ rn10 rn11 rn12 - rn13 - rn14 + merc + emerc rn15 rn16 rn17 diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc index 2f7466d351..5caed6dcf3 100644 --- a/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc @@ -114,7 +114,7 @@ ;; definition for function emerc-vu1-init-buffers ;; WARN: Return type mismatch int vs none. (defun emerc-vu1-init-buffers () - (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask rn14)) + (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask emerc)) (emerc-vu1-init-buffer (bucket-id bucket-15) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)) 0) (emerc-vu1-init-buffer (bucket-id bucket-26) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)) 0) (emerc-vu1-init-buffer (bucket-id bucket-37) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)) 0) diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc index e412089035..18a2dab53e 100644 --- a/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/merc/merc-h_REF.gc @@ -91,7 +91,7 @@ :size-assert #x18 :flag-assert #xa00000018 (:methods - (login-adgifs (_type_) none 9) + (login-adgifs (_type_) merc-fragment 9) ) ) @@ -228,6 +228,7 @@ ) ;; definition for method 3 of type merc-fragment-control +;; INFO: this function exists in multiple non-identical object files (defmethod inspect merc-fragment-control ((obj merc-fragment-control)) (when (not obj) (set! obj obj) @@ -696,6 +697,7 @@ ) ;; definition for method 3 of type merc-ctrl +;; INFO: this function exists in multiple non-identical object files (defmethod inspect merc-ctrl ((obj merc-ctrl)) (when (not obj) (set! obj obj) diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/merc-vu1_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/merc-vu1_REF.gc new file mode 100644 index 0000000000..3d06642913 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/gfx/merc/merc-vu1_REF.gc @@ -0,0 +1,9 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol merc-vu1-block, type vu-function +(define merc-vu1-block (new 'static 'vu-function :length #x7e5 :qlength #x3f3)) + + + + diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc new file mode 100644 index 0000000000..d105e119d4 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc @@ -0,0 +1,713 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type texture-login-data +(deftype texture-login-data (structure) + ((default-texture-index int32 :offset-assert 0) + (current-texture-index int32 :offset-assert 4) + (texture-usage-group texture-usage-group :offset-assert 8) + (merc-ctrl-header merc-ctrl-header :offset-assert 12) + (name basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +;; definition for method 3 of type texture-login-data +(defmethod inspect texture-login-data ((obj texture-login-data)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'texture-login-data) + (format #t "~1Tdefault-texture-index: ~D~%" (-> obj default-texture-index)) + (format #t "~1Tcurrent-texture-index: ~D~%" (-> obj current-texture-index)) + (format #t "~1Ttexture-usage-group: #~%" (-> obj texture-usage-group)) + (format #t "~1Tmerc-ctrl-header: #~%" (-> obj merc-ctrl-header)) + (format #t "~1Tname: ~A~%" (-> obj name)) + (label cfg-4) + obj + ) + +;; definition for symbol *texture-login-data*, type texture-login-data +(define *texture-login-data* (new 'global 'texture-login-data)) + +;; definition for method 9 of type art-joint-geo +(defmethod login art-joint-geo ((obj art-joint-geo)) + (let ((s5-0 *texture-login-data*)) + (set! (-> s5-0 default-texture-index) + (res-lump-value (-> obj extra) 'texture-bucket int :default (the-as uint128 1) :time -1000000000.0) + ) + ) + obj + ) + +;; definition for function texture-usage-init +;; INFO: Used lq/sq +(defun texture-usage-init ((arg0 merc-ctrl)) + (let ((gp-0 *texture-login-data*)) + (set! (-> arg0 header texture-usage-group) (new 'loading-level 'texture-usage-group)) + (set! (-> gp-0 texture-usage-group) (-> arg0 header texture-usage-group)) + (set! (-> gp-0 merc-ctrl-header) (-> arg0 header)) + (set! (-> gp-0 name) (-> arg0 name)) + (dotimes (v1-4 7) + (dotimes (a0-2 3) + (set! (-> (the-as + texture-mask + (+ (the-as uint (the-as texture-masks (+ (the-as uint (-> gp-0 texture-usage-group)) (* 48 v1-4)))) + (* a0-2 16) + ) + ) + mask + quad + ) + (the-as uint128 0) + ) + ) + ) + ) + #f + ) + +;; definition for function texture-usage-update +;; INFO: Used lq/sq +(defun texture-usage-update ((arg0 texture)) + (local-vars (a3-3 uint128)) + (let* ((v1-0 *texture-login-data*) + (a1-0 (-> v1-0 current-texture-index)) + (v1-2 (-> v1-0 texture-usage-group data a1-0)) + ) + (dotimes (a1-3 3) + (let* ((a2-3 (-> v1-2 data a1-3)) + (t1-0 (-> arg0 masks data a1-3)) + (a3-2 (-> a2-3 mask quad)) + (t0-0 (-> t1-0 mask quad)) + (f0-0 (-> a2-3 dist)) + (f1-0 (-> t1-0 dist)) + ) + (.por a3-3 a3-2 t0-0) + (let ((f0-1 (fmax f0-0 f1-0))) + (set! (-> a2-3 mask quad) a3-3) + (set! (-> a2-3 mask w) (the-as int f0-1)) + ) + ) + ) + ) + #f + ) + +;; definition for method 5 of type merc-fragment +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of merc-fragment ((obj merc-fragment)) + (the-as int (* (-> obj header mm-quadword-size) 16)) + ) + +;; definition for method 9 of type merc-fragment +(defmethod login-adgifs merc-fragment ((obj merc-fragment)) + (let* ((s5-0 (merc-fragment-fp-data obj)) + (v1-1 (-> *texture-login-data* merc-ctrl-header)) + (s4-0 (if (nonzero? (-> v1-1 eye-ctrl)) + (-> v1-1 eye-ctrl) + (the-as merc-eye-ctrl #f) + ) + ) + (s3-0 (the-as adgif-shader (&+ s5-0 16))) + ) + (dotimes (s2-0 (the-as int (-> s5-0 shader-cnt))) + (cond + ((and s4-0 (= (logand (the-as texture-id -256) (-> s3-0 texture-id)) #x70c00700)) + (let ((v1-6 (/ (-> s4-0 eye-slot) 20)) + (s1-0 (mod (-> s4-0 eye-slot) 20)) + ) + (cond + ((< v1-6 3) + (adgif-shader-login s3-0) + (let ((v1-8 (get-eye-block s1-0 0))) + (set! (-> s3-0 tex0 tbp0) v1-8) + ) + (set! (-> s3-0 tex0 tw) 5) + (set! (-> s3-0 tex0 th) 5) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 1) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) + ) + ) + (else + (adgif-shader-login s3-0) + (let ((v1-34 (+ (-> *eyes-texture-base* vram-block) (* s1-0 32)))) + (set! (-> s3-0 tex0 tbp0) v1-34) + ) + (set! (-> s3-0 tex0 tw) 6) + (set! (-> s3-0 tex0 th) 6) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 2) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x3f :maxv #x3f) + ) + ) + ) + ) + ) + ((and s4-0 (= (logand (the-as texture-id -256) (-> s3-0 texture-id)) #x70c00800)) + (let ((v1-61 (/ (-> s4-0 eye-slot) 20)) + (s1-1 (mod (-> s4-0 eye-slot) 20)) + ) + (cond + ((< v1-61 3) + (adgif-shader-login s3-0) + (let ((v1-63 (get-eye-block s1-1 1))) + (set! (-> s3-0 tex0 tbp0) v1-63) + ) + (set! (-> s3-0 tex0 tw) 5) + (set! (-> s3-0 tex0 th) 5) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 1) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) + ) + ) + (else + (adgif-shader-login s3-0) + (let ((v1-89 (+ (-> *eyes-texture-base* vram-block) (* (+ s1-1 1) 32)))) + (set! (-> s3-0 tex0 tbp0) v1-89) + ) + (set! (-> s3-0 tex0 tw) 6) + (set! (-> s3-0 tex0 th) 6) + (set! (-> s3-0 tex0 tcc) 1) + (set! (-> s3-0 tex0 tbw) 2) + (set! (-> s3-0 tex0 psm) 0) + (set! (-> s3-0 tex1 mxl) 0) + (set! (-> s3-0 clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x3f :maxv #x3f) + ) + ) + ) + ) + ) + (else + (let ((a0-69 (adgif-shader-login s3-0))) + (if a0-69 + (texture-usage-update a0-69) + ) + ) + ) + ) + (&+! s3-0 80) + ) + ) + obj + ) + +;; definition for method 5 of type merc-fragment-control +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of merc-fragment-control ((obj merc-fragment-control)) + (the-as int (+ (* (-> obj mat-xfer-count) 2) 4)) + ) + +;; definition for method 3 of type merc-fragment-control +;; INFO: this function exists in multiple non-identical object files +(defmethod inspect merc-fragment-control ((obj merc-fragment-control)) + (format #t "[~8x] ~A~%" obj 'merc-fragment-control) + (format #t "~Tunsigned-four-count: ~D~%" (-> obj unsigned-four-count)) + (format #t "~Tlump-four-count: ~D~%" (-> obj lump-four-count)) + (format #t "~Tfp-qwc: ~D~%" (-> obj fp-qwc)) + (format #t "~Tmat-xfer-count: ~D~%" (-> obj mat-xfer-count)) + (dotimes (s5-0 (the-as int (-> obj mat-xfer-count))) + (format #t "~Tmat-dest-data[~d]:~%" s5-0) + (format #t "~T~Tmatrix-number: ~D~%" (-> obj mat-dest-data s5-0 matrix-number)) + (format #t "~T~Tmatrix-dest: ~D~%" (-> obj mat-dest-data s5-0 matrix-dest)) + ) + obj + ) + +;; definition for method 9 of type merc-effect +;; WARN: Return type mismatch merc-effect vs none. +(defmethod login-adgifs merc-effect ((obj merc-effect)) + (let* ((data *texture-login-data*) + (a0-1 (-> data default-texture-index)) + ) + (when (= (-> obj merc-effect-version) 1) + (if (!= (-> obj texture-index) 255) + (set! a0-1 (the-as int (-> obj texture-index))) + ) + ) + (set! (-> data current-texture-index) a0-1) + (set! (-> obj texture-index) (the-as uint a0-1)) + ) + (let ((tex (-> obj extra-info))) + (when (nonzero? tex) + (when (nonzero? (-> tex shader-offset)) + (let ((a0-6 (adgif-shader-login (the-as adgif-shader (+ (the-as uint tex) (* (-> tex shader-offset) 16)))))) + (if a0-6 + (texture-usage-update a0-6) + ) + ) + ) + ) + ) + (let ((ctrl (-> obj frag-ctrl)) + (geo (-> obj frag-geo)) + ) + (dotimes (frag-idx (the-as int (-> obj frag-count))) + (let ((ctrl-size (asize-of ctrl))) + (let ((geo-size (asize-of geo))) + (login-adgifs geo) + (set! geo (the-as merc-fragment (&+ (the-as pointer geo) geo-size))) + ) + (set! ctrl (the-as merc-fragment-control (&+ (the-as pointer ctrl) ctrl-size))) + ) + ) + ) + (none) + ) + +;; definition for method 3 of type merc-ctrl +;; INFO: this function exists in multiple non-identical object files +(defmethod inspect merc-ctrl ((obj merc-ctrl)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tname: ~A~%" (-> obj name)) + (format #t "~Tlength: ~D~%" (-> obj length)) + (format #t "~Tnum-joints: ~D~%" (-> obj num-joints)) + (format #t "~Textra: ~A~%" (-> obj extra)) + (format #t "~Tseg-table: ~A~%" (-> obj seg-table)) + (inspect (-> obj header)) + (dotimes (s5-0 (the-as int (-> obj header effect-count))) + (inspect (-> obj effect s5-0)) + ) + obj + ) + +;; definition for method 8 of type merc-ctrl +(defmethod mem-usage merc-ctrl ((obj merc-ctrl) (arg0 memory-usage-block) (arg1 int)) + (if (-> obj extra) + (mem-usage (-> obj extra) arg0 arg1) + ) + (let ((s4-0 (+ 32 128 (* (-> obj header effect-count) 32)))) + (dotimes (s3-0 (the-as int (-> obj header effect-count))) + (let ((s2-0 (the-as object (-> obj effect s3-0 frag-ctrl)))) + (dotimes (s1-0 (the-as int (-> obj effect s3-0 frag-count))) + (set! s4-0 (+ s4-0 + (* (shr (+ (-> (the-as merc-fragment-control s2-0) unsigned-four-count) 3) 2) 16) + (* (shr (+ (-> (the-as merc-fragment-control s2-0) lump-four-count) 3) 2) 16) + (* (-> (the-as merc-fragment-control s2-0) fp-qwc) 16) + (asize-of (the-as merc-fragment-control s2-0)) + ) + ) + (set! s2-0 (&+ (the-as pointer s2-0) (asize-of (the-as merc-fragment-control s2-0)))) + ) + ) + ) + (set! (-> arg0 length) (max 79 (-> arg0 length))) + (set! (-> arg0 data 78 name) "merc-ctrl") + (+! (-> arg0 data 78 count) 1) + (+! (-> arg0 data 78 used) s4-0) + (+! (-> arg0 data 78 total) (logand -16 (+ s4-0 15))) + ) + (let ((v1-35 0)) + (dotimes (a0-15 (the-as int (-> obj header effect-count))) + (when (nonzero? (-> obj effect a0-15 blend-frag-count)) + (let ((a1-9 (the-as object (-> obj effect a0-15 blend-ctrl)))) + (dotimes (a2-1 (the-as int (-> obj effect a0-15 blend-frag-count))) + (let ((v1-36 + (+ v1-35 + (* (+ (-> (the-as merc-blend-ctrl a1-9) nonzero-index-count) 1) + (the-as uint (logand (+ (* (the-as uint 6) (-> (the-as merc-blend-ctrl a1-9) blend-vtx-count)) 15) #xfff0)) + ) + ) + ) + ) + (set! v1-35 (the-as int (+ (-> obj header blend-target-count) 2 v1-36))) + ) + (set! a1-9 (&+ (the-as pointer a1-9) (+ (-> obj header blend-target-count) 2))) + ) + ) + ) + ) + (when (nonzero? v1-35) + (set! (-> arg0 length) (max 81 (-> arg0 length))) + (set! (-> arg0 data 80 name) "blend-shape") + (+! (-> arg0 data 80 count) 1) + (+! (-> arg0 data 80 used) v1-35) + (+! (-> arg0 data 80 total) (logand -16 (+ v1-35 15))) + ) + ) + (when (and (-> obj header eye-ctrl) (nonzero? (-> obj header eye-ctrl))) + (let ((a0-29 (-> obj header eye-ctrl))) + (set! (-> arg0 length) (max 112 (-> arg0 length))) + (set! (-> arg0 data 111 name) "eye-anim") + (+! (-> arg0 data 111 count) 1) + (let ((v1-49 (asize-of a0-29))) + (+! (-> arg0 data 111 used) v1-49) + (+! (-> arg0 data 111 total) (logand -16 (+ v1-49 15))) + ) + ) + ) + obj + ) + +;; definition for method 9 of type merc-ctrl +(defmethod login merc-ctrl ((obj merc-ctrl)) + (set! (-> *kernel-context* login-object) obj) + (texture-usage-init obj) + (dotimes (s5-0 (the-as int (-> obj header effect-count))) + (login-adgifs (-> obj effect s5-0)) + ) + (when (and (-> obj header eye-ctrl) (nonzero? (-> obj header eye-ctrl))) + (let ((s5-1 (-> obj header eye-ctrl))) + (dotimes (s4-0 (-> s5-1 shader-count)) + (let ((a0-5 (adgif-shader-login (-> s5-1 shader s4-0)))) + (if a0-5 + (texture-usage-update a0-5) + ) + ) + ) + ) + ) + (set! (-> *kernel-context* login-object) #f) + obj + ) + +;; definition (debug) for function merc-stats-display +;; WARN: Return type mismatch symbol vs none. +(defun-debug merc-stats-display ((arg0 merc-ctrl)) + (format #t "~30s:" (-> arg0 name)) + (let ((s5-0 (-> arg0 header st-int-scale)) + (s4-0 (ash 1 (- 12 (the-as int (-> arg0 header st-int-scale))))) + ) + (format #t " ST ~3D, " s4-0) + (cond + ((>= s5-0 (the-as uint 5)) + (format #t "RANGE ~D+," (/ 128 s4-0)) + ) + ((= s5-0 4) + (format #t "RANGE 0.5+,") + ) + ) + ) + (dotimes (s5-1 (the-as int (-> arg0 header effect-count))) + (let ((s3-0 (-> arg0 effect s5-1))) + (if (nonzero? s5-1) + (format #t "~48s " " ") + ) + (let ((a2-4 (-> s3-0 frag-count)) + (s4-1 (-> s3-0 tri-count)) + (f30-0 (the float (-> s3-0 frag-count))) + (f28-0 (the float (-> s3-0 dvert-count))) + (f26-0 (the float (-> s3-0 tri-count))) + ) + (if (>= (/ (+ 50.0 f28-0) f30-0) 50.0) + (format #t "~3D frags, ~2,,1f dverts/frag " a2-4 (/ f28-0 f30-0)) + (format #t "~3D frags, ~2,,1f ******/**** " a2-4 (/ f28-0 f30-0)) + ) + (format + #t + "(~4D tris, striplen ~2,,2f, ~2,,1f tris/frag)~%" + s4-1 + (/ (* 2.0 f26-0) (- f28-0 f26-0)) + (/ f26-0 f30-0) + ) + ) + ) + ) + (none) + ) + +;; definition (debug) for function merc-stats +;; WARN: Return type mismatch int vs none. +(defun-debug merc-stats () + (dotimes (gp-0 7) + (let ((s5-0 (-> *level* level gp-0 art-group))) + (when (nonzero? s5-0) + (dotimes (s4-0 (-> s5-0 art-group-array length)) + (let ((s3-0 (-> s5-0 art-group-array s4-0))) + (dotimes (s2-0 (-> s3-0 length)) + (let* ((s1-0 (-> s3-0 data s2-0)) + (a0-3 (if (type? s1-0 merc-ctrl) + s1-0 + ) + ) + ) + (if a0-3 + (merc-stats-display (the-as merc-ctrl a0-3)) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition (debug) for function merc-edge-stats +;; WARN: Return type mismatch int vs none. +(defun-debug merc-edge-stats () + (dotimes (gp-0 7) + (let ((s5-0 (-> *level* level gp-0 art-group))) + (when (nonzero? s5-0) + (dotimes (s4-0 (-> s5-0 art-group-array length)) + (let ((s3-0 (-> s5-0 art-group-array s4-0))) + (dotimes (s2-0 (-> s3-0 length)) + (let* ((s1-0 (-> s3-0 data s2-0)) + (v1-9 (if (type? s1-0 merc-ctrl) + s1-0 + ) + ) + ) + (if v1-9 + (format #t "~30s: ~f~%" (-> v1-9 name) (-> (the-as merc-ctrl v1-9) header longest-edge)) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function merc-vu1-add-vu-function +;; WARN: Return type mismatch dma-packet vs dma-gif-packet. +(defun merc-vu1-add-vu-function ((dma dma-packet) (func vu-function) (flush-mode int)) + (let ((func-data (&-> func data 4)) + (qwc (-> func qlength)) + (dst (-> func origin)) + ) + (while (> qwc 0) + (let ((qwc-this-time (min 127 qwc))) + (set! (-> dma dma) + (new 'static 'dma-tag :id (dma-tag-id ref) :qwc qwc-this-time :addr (the-as int func-data)) + ) + (set! (-> dma vif0) (new 'static 'vif-tag :cmd (if (zero? flush-mode) 16 19))) + (set! (-> dma vif1) (new 'static 'vif-tag :cmd (vif-cmd mpg) :num (* qwc-this-time 2) :imm dst)) + (&+! dma 16) + (&+! func-data (* qwc-this-time 16)) + (set! qwc (- qwc qwc-this-time)) + (+! dst (* qwc-this-time 2)) + ) + ) + ) + (the-as dma-gif-packet dma) + ) + +;; definition for function merc-vu1-initialize-chain +;; INFO: Used lq/sq +(defun merc-vu1-initialize-chain ((arg0 dma-gif-packet) (arg1 int)) + (let ((gp-0 (the-as object (merc-vu1-add-vu-function (the-as dma-packet arg0) merc-vu1-block 1)))) + (set! (-> (the-as dma-gif-packet gp-0) dma-vif dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) + (set! (-> (the-as dma-gif-packet gp-0) dma-vif vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + (set! (-> (the-as dma-gif-packet gp-0) dma-vif vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) + (set! (-> (the-as (pointer vif-tag) gp-0) 4) (new 'static 'vif-tag :imm #x1ba :cmd (vif-cmd base))) + (set! (-> (the-as (pointer vif-tag) gp-0) 5) (new 'static 'vif-tag :imm #xfe46 :cmd (vif-cmd offset))) + (set! (-> (the-as (pointer vif-tag) gp-0) 6) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) gp-0) 7) (new 'static 'vif-tag :num #x8 :cmd (vif-cmd unpack-v4-32))) + (let ((s5-0 (the-as merc-vu1-low-mem (&+ (the-as dma-gif-packet gp-0) 32)))) + (case *subdivide-foreground-draw-mode* + (((subdivide-setting textured)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303e4000 32)) 32)) + ) + (((subdivide-setting outline)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303d4000 32)) 32)) + ) + (((subdivide-setting gouraud)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x30364000 32)) 32)) + ) + (((subdivide-setting hack)) + (set! (-> s5-0 tri-strip-gif tag) + (new 'static 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) + ) + ) + (set! (-> s5-0 tri-strip-gif regs) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) + ) + (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303d4000 32)) 32)) + ) + ) + (set! (-> s5-0 ad-gif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) + (set! (-> s5-0 ad-gif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) + (set! (-> s5-0 hvdf-offset quad) (-> *math-camera* hvdf-off quad)) + (quad-copy! (-> s5-0 perspective) (the-as pointer (-> *math-camera* perspective)) 4) + (set-vector! (-> s5-0 fog) (-> *math-camera* pfog0) (-> *math-camera* fog-min) (-> *math-camera* fog-max) 0.0) + ) + (let ((v1-50 (-> (the-as (inline-array dma-packet) gp-0) 10))) + (set! (-> v1-50 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> v1-50 vif0) (new 'static 'vif-tag)) + (set! (-> v1-50 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x0)) + (&+ v1-50 16) + ) + ) + ) + +;; definition for function merc-vu1-init-buffer +(defun merc-vu1-init-buffer ((dma-bucket bucket-id) (arg1 int) (arg2 symbol)) + (let ((bucket (-> *display* frames (-> *display* on-screen) bucket-group dma-bucket))) + (when (!= bucket (-> bucket last)) + (let* ((dma-buf (-> *display* frames (-> *display* on-screen) global-buf)) + (s3-1 (-> dma-buf base)) + ) + (set! (-> dma-buf base) + (the-as + pointer + (merc-vu1-initialize-chain (the-as dma-gif-packet (the-as dma-packet (-> dma-buf base))) arg1) + ) + ) + (let* ((v1-12 dma-buf) + (a0-4 (the-as dma-packet (-> v1-12 base))) + ) + (set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) + (set! (-> a0-4 vif0) (new 'static 'vif-tag)) + (set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-12 base) (the-as pointer (the-as dma-packet (&+ a0-4 16)))) + ) + (let* ((v1-13 dma-buf) + (a0-6 (the-as object (-> v1-13 base))) + ) + (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) + (set! (-> (the-as gs-gif-tag a0-6) regs) (new 'static 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d) + ) + ) + (set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16)) + ) + (let* ((v1-14 dma-buf) + (a0-8 (-> v1-14 base)) + ) + (set! (-> (the-as (pointer gs-test) a0-8) 0) (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) + (set! (-> (the-as (pointer gs-test) a0-8) 2) (if arg2 + (the-as gs-test #x1000130) + (the-as gs-test (the-as uint #x101000130)) + ) + ) + (set! (-> (the-as (pointer gs-test) a0-8) 3) (new 'static 'gs-test :atst (gs-atest not-equal) :aref #x4)) + (set! (-> v1-14 base) (&+ a0-8 32)) + ) + (let ((v1-15 (the-as object (-> dma-buf base)))) + (set! (-> (the-as dma-packet v1-15) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) + (set! (-> (the-as dma-packet v1-15) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-15) vif1) (new 'static 'vif-tag)) + (set! (-> dma-buf base) (the-as pointer (the-as dma-packet (&+ (the-as dma-packet v1-15) 16)))) + ) + (set! (-> bucket next) (the-as uint s3-1)) + ) + ) + ) + 0 + ) + +;; definition for function merc-vu1-init-buffers +;; WARN: Return type mismatch int vs none. +(defun merc-vu1-init-buffers () + (when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask merc)) + (merc-vu1-init-buffer (bucket-id bucket-14) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-25) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-36) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-47) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-58) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-69) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-188) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-197) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-201) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-205) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-209) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-213) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-217) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-221) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-79) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-88) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-97) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-106) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-115) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-124) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-192) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-131) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-141) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-151) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-161) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-171) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-181) 1 #t) + (merc-vu1-init-buffer (bucket-id bucket-225) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-229) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-233) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-237) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-241) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-245) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-249) 0 #t) + (merc-vu1-init-buffer (bucket-id bucket-253) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-262) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-271) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-280) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-289) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-298) 1 #f) + (merc-vu1-init-buffer (bucket-id bucket-307) 1 #f) + ) + 0 + (none) + ) diff --git a/test/decompiler/test_VuDisasm.cpp b/test/decompiler/test_VuDisasm.cpp index 5232db8e93..26d990f413 100644 --- a/test/decompiler/test_VuDisasm.cpp +++ b/test/decompiler/test_VuDisasm.cpp @@ -30,6 +30,13 @@ std::string get_expected(const std::string& name) { } } // namespace +TEST(VuDisasm, Merc_Jak2) { + auto data = get_test_data("jak2/merc-vu1"); + VuDisassembler disasm(VuDisassembler::VuKind::VU1); + auto prog = disasm.disassemble(data.data(), data.size() * 4, false); + EXPECT_EQ(disasm.to_string(prog), get_expected("jak2/merc-vu1")); +} + TEST(VuDisasm, Emerc) { auto data = get_test_data("jak2/emerc-vu1"); VuDisassembler disasm(VuDisassembler::VuKind::VU1); diff --git a/test/decompiler/vu_reference/jak2/merc-vu1-result.txt b/test/decompiler/vu_reference/jak2/merc-vu1-result.txt new file mode 100644 index 0000000000..9da2c0bcd0 --- /dev/null +++ b/test/decompiler/vu_reference/jak2/merc-vu1-result.txt @@ -0,0 +1,2198 @@ + lq.xyzw vf01, 7(vi00) | nop + lq.xyzw vf25, 3(vi00) | nop + lq.xyzw vf26, 4(vi00) | nop + lq.xyzw vf27, 5(vi00) | nop + lq.xyzw vf28, 6(vi00) | nop + mr32.xyzw vf01, vf01 | nop + move.y vf25, vf26 | nop + move.zw vf25, vf27 | nop + sq.xyzw vf25, 3(vi00) | nop + 2048.0 | nop :i + 255.0 | maxi.x vf17, vf00, I :i + -65537.0 | maxi.y vf17, vf00, I :i + mr32.xyzw vf02, vf01 | minii.z vf17, vf00, I + lq.xyzw vf22, 2(vi00) | minii.z vf18, vf00, I + 0.003921569 | minii.z vf19, vf00, I :i + sq.xyzw vf28, 4(vi00) | minii.w vf29, vf00, I :e + mr32.xyzw vf03, vf02 | nop + iaddi vi07, vi00, 0x1 | nop + b L1 | nop + isw.w vi07, 1(vi00) | nop + iaddi vi07, vi00, 0x0 | nop +L1: + lq.xyzw vf25, 139(vi00) | nop + lq.xyzw vf26, 3(vi00) | nop + lq.xyz vf01, 132(vi00) | nop + lq.xyz vf02, 133(vi00) | nop + lq.xyz vf03, 134(vi00) | addy.xy vf19, vf00, vf25 + lq.xyzw vf04, 135(vi00) | mulx.xyzw vf26, vf26, vf25 + lq.xyzw vf05, 136(vi00) | nop + lq.xyzw vf06, 137(vi00) | nop + lq.xyzw vf07, 138(vi00) | nop + b L2 | nop + sq.xyzw vf26, 5(vi00) | nop + iaddi vi07, vi00, 0x1 | nop + b L2 | nop + isw.w vi07, 1(vi00) | nop + iaddi vi07, vi00, 0x0 | nop +L2: + lq.xyzw vf28, 139(vi00) | minix.xyzw vf15, vf00, vf00 + xtop vi15 | nop + iaddiu vi12, vi15, 0x8c | nop + ibeq vi00, vi15, L3 | nop + ilwr.w vi03, vi12 | maxz.xy vf18, vf00, vf28 + nop | maxw.xy vf18, vf00, vf28 +L3: + ilw.w vi10, 133(vi00) | nop + iaddiu vi15, vi15, 0x173 | nop + ilw.y vi02, 2(vi12) | nop + lq.xyzw vf14, 0(vi00) | nop + ibeq vi00, vi10, L4 | nop + iadd vi03, vi03, vi12 | nop + mr32.xyzw vf27, vf14 | nop + ilw.w vi11, 134(vi00) | nop + iaddiu vi13, vi00, 0x42 | nop + mr32.y vf14, vf27 | nop +L4: + ilwr.w vi09, vi03 | nop + lqi.xyzw vf27, vi03 | nop + ilw.x vi04, 1(vi12) | nop + iaddiu vi05, vi00, 0x7f | addw.xyz vf15, vf15, vf00 + iand vi09, vi09, vi05 | nop + ilw.y vi06, 1(vi12) | miniz.w vf19, vf00, vf27 + ibeq vi00, vi02, L6 | miniy.w vf18, vf00, vf27 + ilwr.z vi01, vi12 | minix.w vf17, vf00, vf27 + ibne vi00, vi09, L5 | nop + sq.yzw vf14, 0(vi15) | nop + iaddiu vi02, vi02, 0x4000 | nop + iaddiu vi02, vi02, 0x4000 | nop + iswr.x vi02, vi15 | nop + b L9 | nop + nop | nop +L5: + iswr.x vi02, vi15 | nop +L6: + lq.xyzw vf13, 1(vi00) | nop +L7: + ilwr.w vi02, vi03 | nop + lqi.xyzw vf08, vi03 | nop + lqi.xyzw vf09, vi03 | nop + lqi.xyzw vf10, vi03 | nop + lqi.xyzw vf11, vi03 | nop + lqi.xyzw vf12, vi03 | nop + iadd vi02, vi02, vi15 | nop + mtir vi08, vf09.w | nop + sqi.xyzw vf13, vi02 | nop + sqi.xyzw vf08, vi02 | nop + sqi.xyzw vf09, vi02 | nop + mfir.x vf14, vi08 | nop + sqi.xyzw vf10, vi02 | nop + sqi.xyzw vf11, vi02 | nop + ibeq vi00, vi10, L8 | nop + sqi.xyzw vf12, vi02 | nop + mtir vi14, vf12.z | nop + isw.x vi10, -1(vi02) | nop + ibeq vi14, vi13, L8 | nop + isw.y vi11, -1(vi02) | nop + ilw.x vi13, -4(vi02) | nop + isubiu vi14, vi00, 0x1d | nop + iand vi13, vi13, vi14 | nop + iaddi vi13, vi13, 0xc | nop + isw.x vi13, -4(vi02) | nop + iaddiu vi13, vi00, 0x42 | nop + isw.z vi13, -1(vi02) | nop +L8: + ibgtz vi08, L7 | nop + sq.xyzw vf14, 0(vi02) | nop +L9: + lq.xyzw vf28, 3(vi00) | nop + ilw.y vi08, 3(vi12) | nop + lq.xyzw vf16, 5(vi00) | nop + lq.xyzw vf20, 4(vi00) | nop + ilw.z vi09, 3(vi12) | mul.xyzw vf27, vf28, vf15 + ior vi11, vi08, vi00 | mul.xyzw vf28, vf28, vf00 + ibeq vi00, vi08, L11 | mul.xyzw vf15, vf16, vf15 + iaddi vi13, vi12, 0x3 | mul.xyzw vf16, vf16, vf00 +L10: + lq.xyzw vf08, 0(vi08) | addax.xyzw vf20, vf00 + lq.xyzw vf10, 1(vi08) | madda.xyzw ACC, vf27, vf25 + lq.xyzw vf12, 2(vi08) | maddz.xyzw vf26, vf28, vf25 + lq.xyzw vf25, 3(vi08) | nop + sq.xyzw vf09, 0(vi11) | mula.xyzw ACC, vf15, vf08 + sq.xyzw vf11, 1(vi11) | maddz.xyzw vf09, vf16, vf08 + sq.xyzw vf13, 2(vi11) | mula.xyzw ACC, vf15, vf10 + sq.xyzw vf26, 3(vi11) | maddz.xyzw vf11, vf16, vf10 + ibeq vi00, vi08, L11 | mula.xyzw ACC, vf15, vf12 + ilwr.w vi10, vi13 | maddz.xyzw vf13, vf16, vf12 + lq.xyzw vf08, 0(vi09) | addax.xyzw vf20, vf00 + lq.xyzw vf10, 1(vi09) | madda.xyzw ACC, vf27, vf25 + lq.xyzw vf12, 2(vi09) | maddz.xyzw vf26, vf28, vf25 + lq.xyzw vf25, 3(vi09) | nop + sq.xyzw vf09, 0(vi08) | mula.xyzw ACC, vf15, vf08 + sq.xyzw vf11, 1(vi08) | maddz.xyzw vf09, vf16, vf08 + sq.xyzw vf13, 2(vi08) | mula.xyzw ACC, vf15, vf10 + sq.xyzw vf26, 3(vi08) | maddz.xyzw vf11, vf16, vf10 + ibeq vi00, vi09, L11 | mula.xyzw ACC, vf15, vf12 + ilw.x vi11, 1(vi13) | maddz.xyzw vf13, vf16, vf12 + lq.xyzw vf08, 0(vi10) | addax.xyzw vf20, vf00 + lq.xyzw vf10, 1(vi10) | madda.xyzw ACC, vf27, vf25 + lq.xyzw vf12, 2(vi10) | maddz.xyzw vf26, vf28, vf25 + lq.xyzw vf25, 3(vi10) | nop + sq.xyzw vf09, 0(vi09) | mula.xyzw ACC, vf15, vf08 + sq.xyzw vf11, 1(vi09) | maddz.xyzw vf09, vf16, vf08 + sq.xyzw vf13, 2(vi09) | mula.xyzw ACC, vf15, vf10 + sq.xyzw vf26, 3(vi09) | maddz.xyzw vf11, vf16, vf10 + ibeq vi00, vi10, L11 | mula.xyzw ACC, vf15, vf12 + ilw.y vi08, 1(vi13) | maddz.xyzw vf13, vf16, vf12 + lq.xyzw vf08, 0(vi11) | addax.xyzw vf20, vf00 + lq.xyzw vf10, 1(vi11) | madda.xyzw ACC, vf27, vf25 + lq.xyzw vf12, 2(vi11) | maddz.xyzw vf26, vf28, vf25 + lq.xyzw vf25, 3(vi11) | nop + sq.xyzw vf09, 0(vi10) | mula.xyzw ACC, vf15, vf08 + sq.xyzw vf11, 1(vi10) | maddz.xyzw vf09, vf16, vf08 + sq.xyzw vf13, 2(vi10) | mula.xyzw ACC, vf15, vf10 + sq.xyzw vf26, 3(vi10) | maddz.xyzw vf11, vf16, vf10 + iaddi vi13, vi13, 0x1 | nop + ibne vi00, vi11, L10 | mula.xyzw ACC, vf15, vf12 + ilwr.z vi09, vi13 | maddz.xyzw vf13, vf16, vf12 +L11: + ilw.x vi02, 3(vi12) | nop + ibeq vi00, vi04, L23 | nop + iadd vi01, vi01, vi12 | nop + ilwr.x vi08, vi01 | nop + lqi.xyzw vf08, vi01 | nop + lqi.xyzw vf11, vi01 | nop + lqi.xyzw vf14, vi01 | nop + lq.xyz vf29, 4(vi08) | nop + lq.xyz vf30, 5(vi08) | add.zw vf08, vf08, vf17 + lq.xyzw vf31, 6(vi08) | add.xyzw vf11, vf11, vf18 + iaddi vi04, vi04, -0x1 | add.xyzw vf14, vf14, vf19 + iadd vi02, vi02, vi12 | nop + lqi.xyzw vf24, vi02 | mulaz.xyzw ACC, vf29, vf08 + mtir vi10, vf11.x | maddaz.xyzw ACC, vf30, vf11 + mtir vi13, vf11.y | maddz.xyz vf11, vf31, vf14 + lq.xyzw vf25, 0(vi08) | nop + lq.xyzw vf26, 1(vi08) | itof0.xyzw vf24, vf24 + lq.xyzw vf27, 2(vi08) | nop + erleng.xyz P, vf11 | nop + lq.xyzw vf28, 3(vi08) | mulaw.xyzw ACC, vf25, vf08 + ior vi15, vi07, vi00 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + lqi.xyzw vf09, vi01 | nop + ilwr.y vi03, vi12 | nop + ilw.z vi07, 1(vi12) | nop + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | nop + mtir vi08, vf09.x | nop + ibeq vi00, vi15, L12 | nop + iadd vi03, vi03, vi12 | nop + nop | miniw.w vf08, vf08, vf01 +L12: + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + iadd vi04, vi04, vi03 | add.xyzw vf12, vf12, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf15, vf15, vf19 + lq.xyz vf30, 5(vi08) | nop + iadd vi06, vi06, vi04 | nop + lq.xyzw vf31, 6(vi08) | nop + lq.xyzw vf25, 0(vi08) | nop + lq.xyzw vf26, 1(vi08) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | nop + lq.xyzw vf27, 2(vi08) | nop + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 + iadd vi07, vi07, vi06 | mulaz.xyzw ACC, vf29, vf09 + lq.xyzw vf28, 3(vi08) | maddaz.xyzw ACC, vf30, vf12 + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + nop | nop + 1024.0 | miniw.w vf08, vf08, vf03 :i + ibne vi00, vi15, L79 | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | nop + nop | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + ibne vi04, vi03, L14 | madday.xyzw ACC, vf02, vf11 + nop | maddz.xyzw vf11, vf03, vf11 + ibne vi06, vi03, L28 | nop + nop | nop + b L64 | nop + nop | nop +L13: + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 +L14: + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi08, vf10.x | itof0.xyzw vf23, vf23 + ilw.y vi09, -9(vi01) | maxx.xyzw vf11, vf11, vf00 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf16, vf16, vf19 + lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L15 | madday.xyzw ACC, vf05, vf11 + lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L15: + lq.xyzw vf25, 0(vi08) | maddw.xyzw vf11, vf07, vf00 + lq.xyzw vf26, 1(vi08) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + lq.xyzw vf27, 2(vi08) | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 + ibne vi00, vi09, L16 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L16: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + lq.xyzw vf28, 3(vi08) | mulw.xyzw vf12, vf12, vf20 + erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11 + ibne vi04, vi03, L17 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 + ibne vi06, vi03, L33 | nop + ilw.y vi09, -6(vi01) | nop + ibne vi07, vi03, L69 | nop + nop | nop + b L140 | nop + nop | nop +L17: + lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12 + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi08, vf08.x | itof0.xyzw vf23, vf23 + ilw.y vi09, -9(vi01) | maxx.xyzw vf12, vf12, vf00 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf14, vf14, vf19 + lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L18 | madday.xyzw ACC, vf05, vf12 + lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L18: + lq.xyzw vf25, 0(vi08) | maddw.xyzw vf12, vf07, vf00 + lq.xyzw vf26, 1(vi08) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + lq.xyzw vf27, 2(vi08) | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 + ibne vi00, vi09, L19 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L19: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + lq.xyzw vf28, 3(vi08) | mulw.xyzw vf13, vf13, vf20 + erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12 + ibne vi04, vi03, L20 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + ibne vi06, vi03, L38 | nop + ilw.y vi09, -6(vi01) | nop + ibne vi07, vi03, L74 | nop + nop | nop + b L150 | nop + nop | nop +L20: + lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13 + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi08, vf09.x | itof0.xyzw vf23, vf23 + ilw.y vi09, -9(vi01) | maxx.xyzw vf13, vf13, vf00 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf15, vf15, vf19 + lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L21 | madday.xyzw ACC, vf05, vf13 + lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L21: + lq.xyzw vf25, 0(vi08) | maddw.xyzw vf13, vf07, vf00 + lq.xyzw vf26, 1(vi08) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + lq.xyzw vf27, 2(vi08) | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 + ibne vi00, vi09, L22 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L22: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + lq.xyzw vf28, 3(vi08) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13 + ibne vi04, vi03, L13 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + ibne vi06, vi03, L27 | nop + ilw.y vi09, -6(vi01) | nop + ibne vi07, vi03, L63 | nop + nop | nop + b L160 | nop + nop | nop +L23: + ibeq vi00, vi06, L58 | nop + iadd vi02, vi02, vi12 | nop + lqi.xyzw vf08, vi01 | nop + lqi.xyzw vf24, vi02 | nop + lqi.xyzw vf11, vi01 | nop + lqi.xyzw vf14, vi01 | nop + mtir vi10, vf08.x | nop + mtir vi13, vf08.y | itof0.xyzw vf24, vf24 + iaddi vi06, vi06, -0x1 | add.zw vf08, vf08, vf17 + nop | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + nop | mulw.xyzw vf24, vf24, vf29 + iand vi13, vi13, vi05 | nop + lq.xyzw vf20, 0(vi10) | nop + lq.xyzw vf25, 0(vi13) | nop + lq.xyzw vf23, 1(vi10) | nop + lq.xyzw vf26, 1(vi13) | nop + lq.xyzw vf20, 2(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi13) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi10) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi13) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi13) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi10) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi13) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi13) | maddy.xyz vf29, vf29, vf24 + mtir vi10, vf11.x | mulax.xyzw ACC, vf23, vf24 + mtir vi13, vf11.y | maddy.xyz vf30, vf30, vf24 + nop | mulax.xyzw ACC, vf20, vf24 + nop | maddy.xyzw vf31, vf31, vf24 + nop | mulaz.xyzw ACC, vf29, vf08 + nop | maddaz.xyzw ACC, vf30, vf11 + nop | maddz.xyz vf11, vf31, vf14 + nop | nop + nop | nop + nop | mulaw.xyzw ACC, vf25, vf08 + iaddiu vi08, vi00, 0x243 | nop + erleng.xyz P, vf11 | nop + ior vi15, vi07, vi00 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + lqi.xyzw vf09, vi01 | nop + ilwr.y vi03, vi12 | nop + ilw.z vi07, 1(vi12) | nop + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | nop + mtir vi11, vf09.x | nop + ibeq vi00, vi15, L24 | nop + mtir vi14, vf09.y | nop + iaddiu vi08, vi00, 0x539 | miniw.w vf08, vf08, vf01 +L24: + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + iadd vi03, vi03, vi12 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + iadd vi06, vi06, vi03 | nop + iadd vi07, vi07, vi06 | nop + iand vi14, vi14, vi05 | nop + ibne vi05, vi11, L25 | nop + nop | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | nop + b L26 | nop + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L25: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + lq.xyzw vf25, 0(vi14) | nop + lq.xyzw vf23, 1(vi11) | nop + lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 2(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi14) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi11) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi14) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi14) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi11) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi14) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi14) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi11, vf12.x | maddw.xyz vf30, vf30, vf24 + mtir vi14, vf12.y | mulaz.xyzw ACC, vf20, vf24 + iaddiu vi08, vi00, 0x1a1 | maddw.xyzw vf31, vf31, vf24 + ibeq vi00, vi15, L26 | nop + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 + iaddiu vi08, vi00, 0x48e | nop +L26: + nop | mulaz.xyzw ACC, vf29, vf09 + nop | maddaz.xyzw ACC, vf30, vf12 + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + nop | nop + 1024.0 | miniw.w vf08, vf08, vf03 :i + ibne vi00, vi15, L90 | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | nop + ibeq vi06, vi03, L62 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + jr vi08 | madday.xyzw ACC, vf02, vf11 + nop | maddz.xyzw vf11, vf03, vf11 +L27: + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 +L28: + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi12, vf10.x | itof0.xyzw vf23, vf23 + mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19 + nop | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L29 | madday.xyzw ACC, vf05, vf11 + iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L29: + ibne vi05, vi12, L30 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + b L31 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 +L30: + lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23 + lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22 + lq.xyzw vf20, 2(vi12) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi15) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi12) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi15) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi12) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi15) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi12) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi15) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi12) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi15) | maddy.xyz vf29, vf29, vf24 + mtir vi12, vf13.x | mulax.xyzw ACC, vf23, vf24 + mtir vi15, vf13.y | maddy.xyz vf30, vf30, vf24 + b L46 | mulax.xyzw ACC, vf20, vf24 + lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24 +L31: + ibgez vi09, L32 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L32: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20 + erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11 + ibne vi06, vi03, L33 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 + ibne vi07, vi03, L69 | nop + nop | nop + b L140 | nop + nop | nop +L33: + lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12 + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi10, vf08.x | itof0.xyzw vf23, vf23 + mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + nop | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L34 | madday.xyzw ACC, vf05, vf12 + iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L34: + ibne vi05, vi10, L35 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + b L36 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 +L35: + lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23 + lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22 + lq.xyzw vf20, 2(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi13) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi10) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi13) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi13) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi10) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi13) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi13) | maddy.xyz vf29, vf29, vf24 + mtir vi10, vf11.x | mulax.xyzw ACC, vf23, vf24 + mtir vi13, vf11.y | maddy.xyz vf30, vf30, vf24 + b L51 | mulax.xyzw ACC, vf20, vf24 + lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24 +L36: + ibgez vi09, L37 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L37: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20 + erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12 + ibne vi06, vi03, L38 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + ibne vi07, vi03, L74 | nop + nop | nop + b L150 | nop + nop | nop +L38: + lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13 + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi11, vf09.x | itof0.xyzw vf23, vf23 + mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + nop | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L39 | madday.xyzw ACC, vf05, vf13 + iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L39: + ibne vi05, vi11, L40 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + b L41 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L40: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23 + lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 2(vi11) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi14) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi11) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi14) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi11) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi14) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi11) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi14) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi11) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi14) | maddy.xyz vf29, vf29, vf24 + mtir vi11, vf12.x | mulax.xyzw ACC, vf23, vf24 + mtir vi14, vf12.y | maddy.xyz vf30, vf30, vf24 + b L56 | mulax.xyzw ACC, vf20, vf24 + lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24 +L41: + ibgez vi09, L42 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L42: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13 + ibne vi06, vi03, L27 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + ibne vi07, vi03, L63 | nop + nop | nop + b L160 | nop + nop | nop +L43: + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi12, vf10.x | itof0.xyzw vf23, vf23 + mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19 + nop | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L44 | madday.xyzw ACC, vf05, vf11 + iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L44: + ibne vi05, vi12, L45 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + b L46 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 +L45: + lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q + lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23 + lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22 + lq.xyzw vf20, 2(vi12) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi15) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi12) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi15) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi12) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi15) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi12) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi15) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi12) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi15) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi12, vf13.x | maddw.xyz vf30, vf30, vf24 + mtir vi15, vf13.y | mulaz.xyzw ACC, vf20, vf24 + b L31 | maddw.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L46: + ibgez vi09, L47 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L47: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20 + erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11 + ibne vi06, vi03, L48 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 + ibne vi07, vi03, L69 | nop + nop | nop + b L140 | nop + nop | nop +L48: + lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12 + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi10, vf08.x | itof0.xyzw vf23, vf23 + mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + nop | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L49 | madday.xyzw ACC, vf05, vf12 + iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L49: + ibne vi05, vi10, L50 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + b L51 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 +L50: + lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q + lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23 + lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22 + lq.xyzw vf20, 2(vi10) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi13) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi10) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi13) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi10) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi13) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi10) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi13) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi10) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi13) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi10, vf11.x | maddw.xyz vf30, vf30, vf24 + mtir vi13, vf11.y | mulaz.xyzw ACC, vf20, vf24 + b L36 | maddw.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L51: + ibgez vi09, L52 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L52: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20 + erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12 + ibne vi06, vi03, L53 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + ibne vi07, vi03, L74 | nop + nop | nop + b L150 | nop + nop | nop +L53: + lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13 + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi11, vf09.x | itof0.xyzw vf23, vf23 + mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + nop | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L54 | madday.xyzw ACC, vf05, vf13 + iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L54: + ibne vi05, vi11, L55 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + b L56 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L55: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23 + lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 2(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi14) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi11) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi14) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi14) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi11) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi14) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi14) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi11, vf12.x | maddw.xyz vf30, vf30, vf24 + mtir vi14, vf12.y | mulaz.xyzw ACC, vf20, vf24 + b L41 | maddw.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L56: + ibgez vi09, L57 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L57: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13 + ibne vi06, vi03, L43 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + ibne vi07, vi03, L69 | nop + nop | nop + b L160 | nop + nop | nop +L58: + lqi.xyzw vf08, vi01 | nop + lqi.xyzw vf24, vi02 | nop + lqi.xyzw vf11, vi01 | nop + lqi.xyzw vf14, vi01 | nop + mtir vi10, vf08.x | nop + mtir vi13, vf08.y | itof0.xyzw vf24, vf24 + nop | add.zw vf08, vf08, vf17 + nop | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + ilw.w vi08, -1(vi02) | mulw.xyzw vf24, vf24, vf29 + iand vi13, vi13, vi05 | nop + lq.xyzw vf20, 0(vi10) | nop + lq.xyzw vf31, 0(vi13) | nop + lq.xyzw vf25, 0(vi08) | nop + lq.xyzw vf23, 1(vi10) | nop + lq.xyzw vf20, 1(vi13) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi10) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi13) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi10) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi13) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi10) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi13) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi10) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi13) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi10) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi13) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi10, vf11.x | mulax.xyzw ACC, vf20, vf24 + mtir vi13, vf11.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + nop | itof0.xyzw vf24, vf23 + nop | mulaz.xyzw ACC, vf29, vf08 + nop | maddaz.xyzw ACC, vf30, vf11 + nop | maddz.xyz vf11, vf31, vf14 + nop | nop + nop | nop + nop | mulaw.xyzw ACC, vf25, vf08 + nop | nop + erleng.xyz P, vf11 | nop + ior vi15, vi07, vi00 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + lqi.xyzw vf09, vi01 | nop + ilwr.y vi03, vi12 | nop + ilw.z vi07, 1(vi12) | nop + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | nop + mtir vi11, vf09.x | nop + ibeq vi00, vi15, L59 | nop + mtir vi14, vf09.y | nop + nop | miniw.w vf08, vf08, vf01 +L59: + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + iadd vi03, vi03, vi12 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + ilw.w vi08, -1(vi02) | nop + iadd vi07, vi07, vi03 | nop + iand vi14, vi14, vi05 | nop + ibne vi05, vi11, L60 | nop + iaddi vi07, vi07, -0x1 | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | nop + b L61 | nop + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L60: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi14) | nop + lq.xyzw vf25, 0(vi08) | nop + lq.xyzw vf23, 1(vi11) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 1(vi14) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi11) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi14) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi11) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi14) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi11) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi14) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi11) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi14) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi11) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi14) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi11, vf12.x | mulax.xyzw ACC, vf20, vf24 + mtir vi14, vf12.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L61: + nop | mulaz.xyzw ACC, vf29, vf09 + nop | maddaz.xyzw ACC, vf30, vf12 + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + nop | nop + 1024.0 | miniw.w vf08, vf08, vf03 :i + ibne vi00, vi15, L122 | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | nop + nop | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 +L62: + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + b L64 | madday.xyzw ACC, vf02, vf11 + nop | maddz.xyzw vf11, vf03, vf11 +L63: + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 +L64: + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi12, vf10.x | itof0.xyzw vf23, vf23 + mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19 + ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L65 | madday.xyzw ACC, vf05, vf11 + iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L65: + ibne vi05, vi12, L66 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + b L67 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 +L66: + lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi15) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf25, 0(vi08) | mul.xyzw vf11, vf11, vf23 + lq.xyzw vf23, 1(vi12) | add.xyzw vf09, vf09, vf22 + lq.xyzw vf20, 1(vi15) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi12) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi15) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi12) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi15) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi12) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi15) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi12) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi15) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi12) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi15) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi12, vf13.x | mulax.xyzw ACC, vf20, vf24 + mtir vi15, vf13.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L67: + ibgez vi09, L68 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L68: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20 + erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11 + ibeq vi07, vi03, L140 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 +L69: + lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12 + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi10, vf08.x | itof0.xyzw vf23, vf23 + mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L70 | madday.xyzw ACC, vf05, vf12 + iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L70: + ibne vi05, vi10, L71 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + b L72 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 +L71: + lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi13) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf25, 0(vi08) | mul.xyzw vf12, vf12, vf23 + lq.xyzw vf23, 1(vi10) | add.xyzw vf10, vf10, vf22 + lq.xyzw vf20, 1(vi13) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi10) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi13) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi10) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi13) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi10) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi13) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi10) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi13) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi10) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi13) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi10, vf11.x | mulax.xyzw ACC, vf20, vf24 + mtir vi13, vf11.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L72: + ibgez vi09, L73 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L73: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20 + erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12 + ibeq vi07, vi03, L150 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 +L74: + lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13 + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi11, vf09.x | itof0.xyzw vf23, vf23 + mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L75 | madday.xyzw ACC, vf05, vf13 + iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L75: + ibne vi05, vi11, L76 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + b L77 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L76: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi14) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf25, 0(vi08) | mul.xyzw vf13, vf13, vf23 + lq.xyzw vf23, 1(vi11) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 1(vi14) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi11) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi14) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi11) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi14) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi11) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi14) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi11) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi14) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi11) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi14) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi11, vf12.x | mulax.xyzw ACC, vf20, vf24 + mtir vi14, vf12.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L77: + ibgez vi09, L78 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L78: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13 + ibne vi07, vi03, L63 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + b L160 | nop + nop | nop +L79: + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + 3072.0 | nop :i + nop | minii.xy vf08, vf08, I + nop | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + ibne vi04, vi03, L81 | madday.xyzw ACC, vf02, vf11 + nop | maddz.xyzw vf11, vf03, vf11 + ibne vi06, vi03, L92 | nop + nop | nop + b L125 | nop + nop | nop +L80: + 3072.0 | mulax.xyzw ACC, vf01, vf11 :i + lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 +L81: + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi08, vf10.x | itof0.xyzw vf23, vf23 + ilw.y vi09, -9(vi01) | maxx.xyzw vf11, vf11, vf00 + nop | miniw.w vf09, vf09, vf01 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf16, vf16, vf19 + lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L82 | madday.xyzw ACC, vf05, vf11 + lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L82: + lq.xyzw vf25, 0(vi08) | maddw.xyzw vf11, vf07, vf00 + lq.xyzw vf26, 1(vi08) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + lq.xyzw vf27, 2(vi08) | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 + ibne vi00, vi09, L83 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L83: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + lq.xyzw vf28, 3(vi08) | mulw.xyzw vf12, vf12, vf20 + 1024.0 | ftoi0.xyzw vf11, vf11 :i + erleng.xyz P, vf13 | maxi.xy vf09, vf09, I + ibne vi04, vi03, L84 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 + ibne vi06, vi03, L97 | nop + ilw.y vi09, -6(vi01) | nop + ibne vi07, vi03, L130 | nop + nop | nop + b L140 | nop + nop | nop +L84: + 3072.0 | mulax.xyzw ACC, vf01, vf12 :i + lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi08, vf08.x | itof0.xyzw vf23, vf23 + ilw.y vi09, -9(vi01) | maxx.xyzw vf12, vf12, vf00 + nop | miniw.w vf10, vf10, vf01 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf14, vf14, vf19 + lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L85 | madday.xyzw ACC, vf05, vf12 + lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L85: + lq.xyzw vf25, 0(vi08) | maddw.xyzw vf12, vf07, vf00 + lq.xyzw vf26, 1(vi08) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + lq.xyzw vf27, 2(vi08) | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 + ibne vi00, vi09, L86 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L86: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + lq.xyzw vf28, 3(vi08) | mulw.xyzw vf13, vf13, vf20 + 1024.0 | ftoi0.xyzw vf12, vf12 :i + erleng.xyz P, vf11 | maxi.xy vf10, vf10, I + ibne vi04, vi03, L87 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + ibne vi06, vi03, L102 | nop + ilw.y vi09, -6(vi01) | nop + ibne vi07, vi03, L135 | nop + nop | nop + b L150 | nop + nop | nop +L87: + 3072.0 | mulax.xyzw ACC, vf01, vf13 :i + lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi08, vf09.x | itof0.xyzw vf23, vf23 + ilw.y vi09, -9(vi01) | maxx.xyzw vf13, vf13, vf00 + nop | miniw.w vf08, vf08, vf01 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + lq.xyz vf29, 4(vi08) | add.xyzw vf15, vf15, vf19 + lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L88 | madday.xyzw ACC, vf05, vf13 + lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L88: + lq.xyzw vf25, 0(vi08) | maddw.xyzw vf13, vf07, vf00 + lq.xyzw vf26, 1(vi08) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + lq.xyzw vf27, 2(vi08) | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 + ibne vi00, vi09, L89 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L89: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + lq.xyzw vf28, 3(vi08) | mulw.xyzw vf11, vf11, vf20 + 1024.0 | ftoi0.xyzw vf13, vf13 :i + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + ibne vi04, vi03, L80 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + ibne vi06, vi03, L91 | nop + ilw.y vi09, -6(vi01) | nop + ibne vi07, vi03, L124 | nop + nop | nop + b L160 | nop + nop | nop +L90: + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + 3072.0 | nop :i + nop | minii.xy vf08, vf08, I + ibeq vi06, vi03, L123 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + jr vi08 | madday.xyzw ACC, vf02, vf11 + nop | maddz.xyzw vf11, vf03, vf11 +L91: + 3072.0 | mulax.xyzw ACC, vf01, vf11 :i + lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 +L92: + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi12, vf10.x | itof0.xyzw vf23, vf23 + mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 + nop | miniw.w vf09, vf09, vf01 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19 + nop | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L93 | madday.xyzw ACC, vf05, vf11 + iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L93: + ibne vi05, vi12, L94 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + b L95 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 +L94: + lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23 + lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22 + lq.xyzw vf20, 2(vi12) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi15) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi12) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi15) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi12) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi15) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi12) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi15) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi12) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi15) | maddy.xyz vf29, vf29, vf24 + mtir vi12, vf13.x | mulax.xyzw ACC, vf23, vf24 + mtir vi15, vf13.y | maddy.xyz vf30, vf30, vf24 + b L110 | mulax.xyzw ACC, vf20, vf24 + lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24 +L95: + ibgez vi09, L96 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L96: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20 + 1024.0 | ftoi0.xyzw vf11, vf11 :i + erleng.xyz P, vf13 | maxi.xy vf09, vf09, I + ibne vi06, vi03, L97 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 + ibne vi07, vi03, L130 | nop + nop | nop + b L140 | nop + nop | nop +L97: + 3072.0 | mulax.xyzw ACC, vf01, vf12 :i + lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi10, vf08.x | itof0.xyzw vf23, vf23 + mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00 + nop | miniw.w vf10, vf10, vf01 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + nop | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L98 | madday.xyzw ACC, vf05, vf12 + iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L98: + ibne vi05, vi10, L99 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + b L100 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 +L99: + lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23 + lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22 + lq.xyzw vf20, 2(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi13) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi10) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi13) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi13) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi10) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi13) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi10) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi13) | maddy.xyz vf29, vf29, vf24 + mtir vi10, vf11.x | mulax.xyzw ACC, vf23, vf24 + mtir vi13, vf11.y | maddy.xyz vf30, vf30, vf24 + b L115 | mulax.xyzw ACC, vf20, vf24 + lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24 +L100: + ibgez vi09, L101 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L101: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20 + 1024.0 | ftoi0.xyzw vf12, vf12 :i + erleng.xyz P, vf11 | maxi.xy vf10, vf10, I + ibne vi06, vi03, L102 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + ibne vi07, vi03, L135 | nop + nop | nop + b L150 | nop + nop | nop +L102: + 3072.0 | mulax.xyzw ACC, vf01, vf13 :i + lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi11, vf09.x | itof0.xyzw vf23, vf23 + mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00 + nop | miniw.w vf08, vf08, vf01 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + nop | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L103 | madday.xyzw ACC, vf05, vf13 + iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L103: + ibne vi05, vi11, L104 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + b L105 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L104: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23 + lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 2(vi11) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi14) | maddy.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi11) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi14) | maddy.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi11) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi14) | maddy.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi11) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi14) | maddy.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi11) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi14) | maddy.xyz vf29, vf29, vf24 + mtir vi11, vf12.x | mulax.xyzw ACC, vf23, vf24 + mtir vi14, vf12.y | maddy.xyz vf30, vf30, vf24 + b L120 | mulax.xyzw ACC, vf20, vf24 + lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24 +L105: + ibgez vi09, L106 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L106: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + 1024.0 | ftoi0.xyzw vf13, vf13 :i + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + ibne vi06, vi03, L91 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + ibne vi07, vi03, L124 | nop + nop | nop + b L160 | nop + nop | nop +L107: + 3072.0 | mulax.xyzw ACC, vf01, vf11 :i + lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi12, vf10.x | itof0.xyzw vf23, vf23 + mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 + nop | miniw.w vf09, vf09, vf01 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19 + nop | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L108 | madday.xyzw ACC, vf05, vf11 + iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L108: + ibne vi05, vi12, L109 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + b L110 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 +L109: + lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q + lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23 + lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22 + lq.xyzw vf20, 2(vi12) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi15) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi12) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi15) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi12) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi15) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi12) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi15) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi12) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi15) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi12, vf13.x | maddw.xyz vf30, vf30, vf24 + mtir vi15, vf13.y | mulaz.xyzw ACC, vf20, vf24 + b L95 | maddw.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L110: + ibgez vi09, L111 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L111: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20 + 1024.0 | ftoi0.xyzw vf11, vf11 :i + erleng.xyz P, vf13 | maxi.xy vf09, vf09, I + ibne vi06, vi03, L112 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 + ibne vi07, vi03, L130 | nop + nop | nop + b L140 | nop + nop | nop +L112: + 3072.0 | mulax.xyzw ACC, vf01, vf12 :i + lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi10, vf08.x | itof0.xyzw vf23, vf23 + mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00 + nop | miniw.w vf10, vf10, vf01 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + nop | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L113 | madday.xyzw ACC, vf05, vf12 + iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L113: + ibne vi05, vi10, L114 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + b L115 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 +L114: + lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q + lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23 + lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22 + lq.xyzw vf20, 2(vi10) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi13) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi10) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi13) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi10) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi13) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi10) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi13) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi10) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi13) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi10, vf11.x | maddw.xyz vf30, vf30, vf24 + mtir vi13, vf11.y | mulaz.xyzw ACC, vf20, vf24 + b L100 | maddw.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L115: + ibgez vi09, L116 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L116: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20 + 1024.0 | ftoi0.xyzw vf12, vf12 :i + erleng.xyz P, vf11 | maxi.xy vf10, vf10, I + ibne vi06, vi03, L117 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 + ibne vi07, vi03, L135 | nop + nop | nop + b L150 | nop + nop | nop +L117: + 3072.0 | mulax.xyzw ACC, vf01, vf13 :i + lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi11, vf09.x | itof0.xyzw vf23, vf23 + mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00 + nop | miniw.w vf08, vf08, vf01 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + nop | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L118 | madday.xyzw ACC, vf05, vf13 + iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L118: + ibne vi05, vi11, L119 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + b L120 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L119: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23 + lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 2(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf27, 2(vi14) | maddw.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 3(vi11) | mulaz.xyzw ACC, vf23, vf24 + lq.xyzw vf28, 3(vi14) | maddw.xyzw vf26, vf26, vf24 + lq.xyzw vf20, 4(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi14) | maddw.xyzw vf27, vf27, vf24 + lq.xyzw vf23, 5(vi11) | mulaz.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi14) | maddw.xyzw vf28, vf28, vf24 + lq.xyzw vf20, 6(vi11) | mulaz.xyzw ACC, vf20, vf24 + lq.xyzw vf31, 6(vi14) | maddw.xyz vf29, vf29, vf24 + lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24 + mtir vi11, vf12.x | maddw.xyz vf30, vf30, vf24 + mtir vi14, vf12.y | mulaz.xyzw ACC, vf20, vf24 + b L105 | maddw.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L120: + ibgez vi09, L121 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L121: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + 1024.0 | ftoi0.xyzw vf13, vf13 :i + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + ibne vi06, vi03, L107 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + ibne vi07, vi03, L130 | nop + nop | nop + b L160 | nop + nop | nop +L122: + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + 3072.0 | nop :i + nop | minii.xy vf08, vf08, I + nop | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 +L123: + lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 + b L125 | madday.xyzw ACC, vf02, vf11 + nop | maddz.xyzw vf11, vf03, vf11 +L124: + 3072.0 | mulax.xyzw ACC, vf01, vf11 :i + lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 +L125: + lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 + lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 + mtir vi12, vf10.x | itof0.xyzw vf23, vf23 + mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 + nop | miniw.w vf09, vf09, vf01 + div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 + move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 + iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19 + ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L126 | madday.xyzw ACC, vf05, vf11 + iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L126: + ibne vi05, vi12, L127 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q + mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q + mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 + b L128 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 +L127: + lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi15) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf25, 0(vi08) | mul.xyzw vf11, vf11, vf23 + lq.xyzw vf23, 1(vi12) | add.xyzw vf09, vf09, vf22 + lq.xyzw vf20, 1(vi15) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi12) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi15) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi12) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi15) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi12) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi15) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi12) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi15) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi12) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi15) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi12, vf13.x | mulax.xyzw ACC, vf20, vf24 + mtir vi15, vf13.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L128: + ibgez vi09, L129 | mulaz.xyzw ACC, vf29, vf10 + sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 + nop | ftoi4.xyzw vf21, vf08 +L129: + mfp.w vf20, P | maddz.xyz vf13, vf31, vf16 + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 + ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20 + 1024.0 | ftoi0.xyzw vf11, vf11 :i + erleng.xyz P, vf13 | maxi.xy vf09, vf09, I + ibeq vi07, vi03, L140 | maddaw.xyzw ACC, vf26, vf13 + mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16 +L130: + 3072.0 | mulax.xyzw ACC, vf01, vf12 :i + lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 + lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 + mtir vi10, vf08.x | itof0.xyzw vf23, vf23 + mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00 + nop | miniw.w vf10, vf10, vf01 + div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 + move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 + iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 + ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L131 | madday.xyzw ACC, vf05, vf12 + iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L131: + ibne vi05, vi10, L132 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q + mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q + mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 + b L133 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 +L132: + lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi13) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf25, 0(vi08) | mul.xyzw vf12, vf12, vf23 + lq.xyzw vf23, 1(vi10) | add.xyzw vf10, vf10, vf22 + lq.xyzw vf20, 1(vi13) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi10) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi13) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi10) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi13) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi10) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi13) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi10) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi13) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi10) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi13) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi10, vf11.x | mulax.xyzw ACC, vf20, vf24 + mtir vi13, vf11.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L133: + ibgez vi09, L134 | mulaz.xyzw ACC, vf29, vf08 + sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 + nop | ftoi4.xyzw vf21, vf09 +L134: + mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 + ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20 + 1024.0 | ftoi0.xyzw vf12, vf12 :i + erleng.xyz P, vf11 | maxi.xy vf10, vf10, I + ibeq vi07, vi03, L150 | maddaw.xyzw ACC, vf26, vf11 + mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 +L135: + 3072.0 | mulax.xyzw ACC, vf01, vf13 :i + lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 + lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 + mtir vi11, vf09.x | itof0.xyzw vf23, vf23 + mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00 + nop | miniw.w vf08, vf08, vf01 + div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 + move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 + iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 + ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L136 | madday.xyzw ACC, vf05, vf13 + iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L136: + ibne vi05, vi11, L137 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q + mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q + mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 + b L138 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 +L137: + lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q + nop | mulw.xyzw vf24, vf24, vf29 + lq.xyzw vf31, 0(vi14) | ftoi4.xyzw vf21, vf21 + lq.xyzw vf25, 0(vi08) | mul.xyzw vf13, vf13, vf23 + lq.xyzw vf23, 1(vi11) | add.xyzw vf08, vf08, vf22 + lq.xyzw vf20, 1(vi14) | mulax.xyzw ACC, vf20, vf24 + lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 2(vi11) | maddz.xyzw vf25, vf25, vf24 + lq.xyzw vf23, 2(vi14) | mulax.xyzw ACC, vf23, vf24 + lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 3(vi11) | maddz.xyzw vf26, vf26, vf24 + lq.xyzw vf31, 3(vi14) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24 + lq.xyzw vf23, 4(vi11) | maddz.xyzw vf27, vf27, vf24 + lq.xyzw vf20, 4(vi14) | mulax.xyzw ACC, vf20, vf24 + lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 5(vi11) | maddz.xyzw vf28, vf28, vf24 + lq.xyzw vf23, 5(vi14) | mulax.xyzw ACC, vf23, vf24 + lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24 + lq.xyzw vf20, 6(vi11) | maddz.xyz vf29, vf29, vf24 + lq.xyzw vf22, 6(vi14) | mulax.xyzw ACC, vf31, vf24 + lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24 + lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24 + mtir vi11, vf12.x | mulax.xyzw ACC, vf20, vf24 + mtir vi14, vf12.y | madday.xyzw ACC, vf22, vf24 + lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24 + lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23 +L138: + ibgez vi09, L139 | mulaz.xyzw ACC, vf29, vf09 + sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12 + nop | ftoi4.xyzw vf21, vf10 +L139: + mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09 + ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 + 1024.0 | ftoi0.xyzw vf13, vf13 :i + erleng.xyz P, vf12 | maxi.xy vf08, vf08, I + ibne vi07, vi03, L124 | maddaw.xyzw ACC, vf26, vf12 + mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 + b L160 | nop + nop | nop +L140: + ilw.w vi08, 1(vi00) | nop + xtop vi02 | mulax.xyzw ACC, vf01, vf12 + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + iaddiu vi04, vi02, 0x8c | add.xyzw vf10, vf10, vf28 + ilwr.x vi05, vi04 | maxw.w vf09, vf09, vf02 + ilw.w vi06, 1(vi04) | itof0.xyzw vf23, vf23 + ibne vi00, vi08, L148 | nop + ilw.x vi07, 2(vi04) | maxx.xyzw vf12, vf12, vf00 +L141: + div Q, vf01.w, vf10.w | minix.xyzw vf25, vf00, vf00 + move.xyzw vf21, vf09 | minix.xyzw vf26, vf00, vf00 + iadd vi05, vi05, vi04 | nop + iaddiu vi04, vi02, 0x173 | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L142 | madday.xyzw ACC, vf05, vf12 + iadd vi06, vi06, vi05 | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L142: + iadd vi07, vi07, vi06 | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -6(vi01) | mul.xyz vf10, vf10, Q + iaddiu vi08, vi00, 0x1ba | mul.xyzw vf16, vf16, Q + isub vi08, vi08, vi02 | ftoi4.xyzw vf21, vf21 + iaddiu vi08, vi08, 0x173 | mul.xyzw vf12, vf12, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 + ibgez vi09, L143 | nop + sq.xyzw vf21, 2(vi11) | nop + nop | ftoi4.xyzw vf21, vf09 +L143: + mfp.w vf20, P | nop + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 + sq.xyzw vf21, 2(vi14) | nop + ilw.y vi09, -3(vi01) | mulw.xyzw vf13, vf13, vf20 + mfir.x vf25, vi04 | ftoi0.xyzw vf12, vf12 + mfir.y vf25, vi04 | nop + mfir.x vf26, vi08 | nop + ilw.w vi02, 1(vi00) | nop + mfir.y vf26, vi04 | mulax.xyzw ACC, vf01, vf13 + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + nop | nop + ibne vi00, vi02, L149 | maxw.w vf10, vf10, vf02 + nop | itof0.xyzw vf23, vf23 +L144: + 8388608.0 | maxx.xyzw vf13, vf13, vf00 :i + 256.0 | maxi.xy vf27, vf00, I :i + move.xyzw vf21, vf10 | maxi.w vf27, vf00, I + nop | nop + nop | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L145 | madday.xyzw ACC, vf05, vf13 + nop | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L145: + nop | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -3(vi01) | itof0.xyzw vf25, vf25 + nop | itof0.xyzw vf26, vf26 + nop | ftoi4.xyzw vf21, vf21 + nop | mul.xyzw vf13, vf13, vf23 + ior vi02, vi05, vi00 | add.xyzw vf25, vf25, vf27 + ibgez vi09, L146 | add.xyzw vf26, vf26, vf27 + sq.xyzw vf21, 2(vi12) | nop + nop | ftoi4.xyzw vf21, vf10 +L146: + ibne vi06, vi05, L147 | nop + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 +L147: + sq.xyzw vf16, 0(vi15) | nop + sq.xyzw vf21, 2(vi15) | nop + lqi.xyzw vf27, vi05 | nop + nop | ftoi0.xyzw vf13, vf13 + nop | nop + nop | nop + nop | itof0.xyzw vf27, vf27 + sq.xyzw vf13, 1(vi12) | nop + b L170 | nop + sq.xyzw vf13, 1(vi15) | nop +L148: + 3072.0 | miniw.w vf10, vf10, vf01 :i + b L141 | minii.xy vf09, vf09, I + nop | nop +L149: + 1024.0 | nop :i + 3072.0 | maxi.xy vf10, vf10, I :i + b L144 | minii.xy vf10, vf10, I + isw.w vi00, 1(vi00) | nop +L150: + ilw.w vi08, 1(vi00) | nop + xtop vi02 | mulax.xyzw ACC, vf01, vf13 + sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 + sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 + iaddiu vi04, vi02, 0x8c | add.xyzw vf08, vf08, vf28 + ilwr.x vi05, vi04 | maxw.w vf10, vf10, vf02 + ilw.w vi06, 1(vi04) | itof0.xyzw vf23, vf23 + ibne vi00, vi08, L158 | nop + ilw.x vi07, 2(vi04) | maxx.xyzw vf13, vf13, vf00 +L151: + div Q, vf01.w, vf08.w | minix.xyzw vf25, vf00, vf00 + move.xyzw vf21, vf10 | minix.xyzw vf26, vf00, vf00 + iadd vi05, vi05, vi04 | nop + iaddiu vi04, vi02, 0x173 | mulax.xyzw ACC, vf04, vf13 + ibgtz vi09, L152 | madday.xyzw ACC, vf05, vf13 + iadd vi06, vi06, vi05 | maddaz.xyzw ACC, vf06, vf13 + nop | addx.w vf21, vf21, vf17 +L152: + iadd vi07, vi07, vi06 | maddw.xyzw vf13, vf07, vf00 + ilw.x vi09, -6(vi01) | mul.xyz vf08, vf08, Q + iaddiu vi08, vi00, 0x1ba | mul.xyzw vf14, vf14, Q + isub vi08, vi08, vi02 | ftoi4.xyzw vf21, vf21 + iaddiu vi08, vi08, 0x173 | mul.xyzw vf13, vf13, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 + ibgez vi09, L153 | nop + sq.xyzw vf21, 2(vi12) | nop + nop | ftoi4.xyzw vf21, vf10 +L153: + mfp.w vf20, P | nop + sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17 + sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03 + sq.xyzw vf21, 2(vi15) | nop + ilw.y vi09, -3(vi01) | mulw.xyzw vf11, vf11, vf20 + mfir.x vf25, vi04 | ftoi0.xyzw vf13, vf13 + mfir.y vf25, vi04 | nop + mfir.x vf26, vi08 | nop + ilw.w vi02, 1(vi00) | nop + mfir.y vf26, vi04 | mulax.xyzw ACC, vf01, vf11 + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 + nop | nop + ibne vi00, vi02, L159 | maxw.w vf08, vf08, vf02 + nop | itof0.xyzw vf23, vf23 +L154: + 8388608.0 | maxx.xyzw vf11, vf11, vf00 :i + 256.0 | maxi.xy vf27, vf00, I :i + move.xyzw vf21, vf08 | maxi.w vf27, vf00, I + nop | nop + nop | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L155 | madday.xyzw ACC, vf05, vf11 + nop | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L155: + nop | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -3(vi01) | itof0.xyzw vf25, vf25 + nop | itof0.xyzw vf26, vf26 + nop | ftoi4.xyzw vf21, vf21 + nop | mul.xyzw vf11, vf11, vf23 + ior vi02, vi05, vi00 | add.xyzw vf25, vf25, vf27 + ibgez vi09, L156 | add.xyzw vf26, vf26, vf27 + sq.xyzw vf21, 2(vi10) | nop + nop | ftoi4.xyzw vf21, vf08 +L156: + ibne vi06, vi05, L157 | nop + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 +L157: + sq.xyzw vf14, 0(vi13) | nop + sq.xyzw vf21, 2(vi13) | nop + lqi.xyzw vf27, vi05 | nop + nop | ftoi0.xyzw vf11, vf11 + nop | nop + nop | nop + nop | itof0.xyzw vf27, vf27 + sq.xyzw vf11, 1(vi10) | nop + b L170 | nop + sq.xyzw vf11, 1(vi13) | nop +L158: + 3072.0 | miniw.w vf08, vf08, vf01 :i + b L151 | minii.xy vf10, vf10, I + nop | nop +L159: + 1024.0 | nop :i + 3072.0 | maxi.xy vf08, vf08, I :i + b L154 | minii.xy vf08, vf08, I + isw.w vi00, 1(vi00) | nop +L160: + ilw.w vi08, 1(vi00) | nop + xtop vi02 | mulax.xyzw ACC, vf01, vf11 + sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11 + sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11 + iaddiu vi04, vi02, 0x8c | add.xyzw vf09, vf09, vf28 + ilwr.x vi05, vi04 | maxw.w vf08, vf08, vf02 + ilw.w vi06, 1(vi04) | itof0.xyzw vf23, vf23 + ibne vi00, vi08, L168 | nop + ilw.x vi07, 2(vi04) | maxx.xyzw vf11, vf11, vf00 +L161: + div Q, vf01.w, vf09.w | minix.xyzw vf25, vf00, vf00 + move.xyzw vf21, vf08 | minix.xyzw vf26, vf00, vf00 + iadd vi05, vi05, vi04 | nop + iaddiu vi04, vi02, 0x173 | mulax.xyzw ACC, vf04, vf11 + ibgtz vi09, L162 | madday.xyzw ACC, vf05, vf11 + iadd vi06, vi06, vi05 | maddaz.xyzw ACC, vf06, vf11 + nop | addx.w vf21, vf21, vf17 +L162: + iadd vi07, vi07, vi06 | maddw.xyzw vf11, vf07, vf00 + ilw.x vi09, -6(vi01) | mul.xyz vf09, vf09, Q + iaddiu vi08, vi00, 0x1ba | mul.xyzw vf15, vf15, Q + isub vi08, vi08, vi02 | ftoi4.xyzw vf21, vf21 + iaddiu vi08, vi08, 0x173 | mul.xyzw vf11, vf11, vf23 + lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22 + ibgez vi09, L163 | nop + sq.xyzw vf21, 2(vi10) | nop + nop | ftoi4.xyzw vf21, vf08 +L163: + mfp.w vf20, P | nop + sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17 + sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03 + sq.xyzw vf21, 2(vi13) | nop + ilw.y vi09, -3(vi01) | mulw.xyzw vf12, vf12, vf20 + mfir.x vf25, vi04 | ftoi0.xyzw vf11, vf11 + mfir.y vf25, vi04 | nop + mfir.x vf26, vi08 | nop + ilw.w vi02, 1(vi00) | nop + mfir.y vf26, vi04 | mulax.xyzw ACC, vf01, vf12 + sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 + sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 + nop | nop + ibne vi00, vi02, L169 | maxw.w vf09, vf09, vf02 + nop | itof0.xyzw vf23, vf23 +L164: + 8388608.0 | maxx.xyzw vf12, vf12, vf00 :i + 256.0 | maxi.xy vf27, vf00, I :i + move.xyzw vf21, vf09 | maxi.w vf27, vf00, I + nop | nop + nop | mulax.xyzw ACC, vf04, vf12 + ibgtz vi09, L165 | madday.xyzw ACC, vf05, vf12 + nop | maddaz.xyzw ACC, vf06, vf12 + nop | addx.w vf21, vf21, vf17 +L165: + nop | maddw.xyzw vf12, vf07, vf00 + ilw.x vi09, -3(vi01) | itof0.xyzw vf25, vf25 + nop | itof0.xyzw vf26, vf26 + nop | ftoi4.xyzw vf21, vf21 + nop | mul.xyzw vf12, vf12, vf23 + ior vi02, vi05, vi00 | add.xyzw vf25, vf25, vf27 + ibgez vi09, L166 | add.xyzw vf26, vf26, vf27 + sq.xyzw vf21, 2(vi11) | nop + nop | ftoi4.xyzw vf21, vf09 +L166: + ibne vi06, vi05, L167 | nop + sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 +L167: + sq.xyzw vf15, 0(vi14) | nop + sq.xyzw vf21, 2(vi14) | nop + lqi.xyzw vf27, vi05 | nop + nop | ftoi0.xyzw vf12, vf12 + nop | nop + nop | nop + nop | itof0.xyzw vf27, vf27 + sq.xyzw vf12, 1(vi11) | nop + b L170 | nop + sq.xyzw vf12, 1(vi14) | nop +L168: + 3072.0 | miniw.w vf09, vf09, vf01 :i + b L161 | minii.xy vf08, vf08, I + nop | nop +L169: + 1024.0 | nop :i + 3072.0 | maxi.xy vf09, vf09, I :i + b L164 | minii.xy vf09, vf09, I + isw.w vi00, 1(vi00) | nop +L170: + ibeq vi07, vi02, L176 | nop + ilw.w vi15, 132(vi00) | nop + ibne vi06, vi05, L171 | add.xyzw vf11, vf27, vf25 + nop | nop + ibne vi07, vi06, L171 | nop + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 + nop | nop + nop | nop + mtir vi08, vf11.x | nop + mtir vi10, vf11.y | nop + nop | nop + nop | nop + lq.xyzw vf16, 2(vi08) | maxx.xyzw vf15, vf11, vf00 + lq.xyzw vf13, 0(vi08) | nop + b L175 | nop + nop | nop +L171: + lqi.xyzw vf27, vi05 | nop + nop | nop + mtir vi08, vf11.x | nop + mtir vi09, vf11.y | nop + nop | itof0.xyzw vf27, vf27 + nop | nop + lq.xyzw vf12, 2(vi08) | maxx.xyzw vf15, vf11, vf00 + lq.xyzw vf13, 0(vi08) | nop + ibne vi06, vi05, L172 | add.xyzw vf11, vf27, vf25 + nop | nop + ibeq vi07, vi06, L174 | nop + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 +L172: + lqi.xyzw vf27, vi05 | itof15.w vf12, vf12 + lq.xyzw vf14, 1(vi08) | nop + mtir vi08, vf11.x | nop + mtir vi10, vf11.y | nop + sq.xyzw vf13, 0(vi09) | itof0.xyzw vf27, vf27 + sq.xyzw vf14, 1(vi09) | add.w vf12, vf12, vf15 + lq.xyzw vf16, 2(vi08) | maxx.xyzw vf15, vf11, vf00 + lq.xyzw vf13, 0(vi08) | nop + ibne vi06, vi05, L173 | add.xyzw vf11, vf27, vf25 + sq.xyzw vf12, 2(vi09) | nop + ibne vi07, vi06, L173 | nop + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 + move.xyzw vf12, vf16 | nop + b L174 | nop + ior vi09, vi10, vi00 | nop +L173: + lqi.xyzw vf27, vi05 | itof15.w vf16, vf16 + lq.xyzw vf14, 1(vi08) | nop + mtir vi08, vf11.x | nop + mtir vi09, vf11.y | nop + sq.xyzw vf13, 0(vi10) | itof0.xyzw vf27, vf27 + sq.xyzw vf14, 1(vi10) | add.w vf16, vf16, vf15 + lq.xyzw vf12, 2(vi08) | maxx.xyzw vf15, vf11, vf00 + lq.xyzw vf13, 0(vi08) | nop + ibne vi06, vi05, L172 | add.xyzw vf11, vf27, vf25 + sq.xyzw vf16, 2(vi10) | nop + ibne vi07, vi06, L172 | nop + ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26 +L174: + nop | itof15.w vf12, vf12 + lq.xyzw vf14, 1(vi08) | nop + mtir vi08, vf11.x | nop + mtir vi10, vf11.y | nop + sq.xyzw vf13, 0(vi09) | nop + sq.xyzw vf14, 1(vi09) | add.w vf12, vf12, vf15 + lq.xyzw vf16, 2(vi08) | maxx.xyzw vf15, vf11, vf00 + lq.xyzw vf13, 0(vi08) | nop + nop | nop + sq.xyzw vf12, 2(vi09) | nop +L175: + nop | itof15.w vf16, vf16 + lq.xyzw vf14, 1(vi08) | nop + nop | nop + nop | nop + sq.xyzw vf13, 0(vi10) | nop + sq.xyzw vf14, 1(vi10) | add.w vf16, vf16, vf15 + nop | nop + nop | nop + nop | nop + sq.xyzw vf16, 2(vi10) | nop +L176: + ibne vi00, vi15, L177 | nop + nop | nop + xgkick vi04 | nop + nop | nop :e + nop | nop +L177: + lq.xyzw vf20, 132(vi00) | nop + lq.xyzw vf21, 1(vi00) | nop + iaddi vi01, vi00, 0x1 | nop + isw.x vi01, -2(vi04) | nop + iaddiu vi02, vi00, 0x47 | maxw.x vf20, vf00, vf20 + isw.z vi02, -1(vi04) | nop + sq.yzw vf21, -2(vi04) | nop + isw.w vi00, 132(vi00) | nop + sq.x vf20, -1(vi04) | nop + iaddi vi04, vi04, -0x2 | nop + xgkick vi04 | nop + nop | nop :e + nop | nop diff --git a/test/decompiler/vu_reference/jak2/merc-vu1.txt b/test/decompiler/vu_reference/jak2/merc-vu1.txt new file mode 100644 index 0000000000..d119435598 --- /dev/null +++ b/test/decompiler/vu_reference/jak2/merc-vu1.txt @@ -0,0 +1,4042 @@ + .word 0x1e10007 + .word 0x2ff + .word 0x1f90003 + .word 0x2ff + .word 0x1fa0004 + .word 0x2ff + .word 0x1fb0005 + .word 0x2ff + .word 0x1fc0006 + .word 0x2ff + .word 0x81e10b3d + .word 0x2ff + .word 0x8099d33c + .word 0x2ff + .word 0x8079db3c + .word 0x2ff + .word 0x3e0c803 + .word 0x2ff + .word 0x45000000 + .word 0x800002ff + .word 0x437f0000 + .word 0x8100045d + .word 0xc7800080 + .word 0x8080045d + .word 0x81e20b3d + .word 0x40045f + .word 0x1f60002 + .word 0x40049f + .word 0x3b808081 + .word 0x804004df + .word 0x3e0e004 + .word 0x4020075f + .word 0x81e3133d + .word 0x2ff + .word 0x80070072 + .word 0x2ff + .word 0x40000002 + .word 0x2ff + .word 0xa270001 + .word 0x2ff + .word 0x80070032 + .word 0x2ff + .word 0x1f9008b + .word 0x2ff + .word 0x1fa0003 + .word 0x2ff + .word 0x1c10084 + .word 0x2ff + .word 0x1c20085 + .word 0x2ff + .word 0x1c30086 + .word 0x19904c1 + .word 0x1e40087 + .word 0x1f9d698 + .word 0x1e50088 + .word 0x2ff + .word 0x1e60089 + .word 0x2ff + .word 0x1e7008a + .word 0x2ff + .word 0x40000005 + .word 0x2ff + .word 0x3e0d005 + .word 0x2ff + .word 0x80070072 + .word 0x2ff + .word 0x40000002 + .word 0x2ff + .word 0xa270001 + .word 0x2ff + .word 0x80070032 + .word 0x2ff + .word 0x1fc008b + .word 0x1e003d4 + .word 0x800f06bc + .word 0x2ff + .word 0x100c788c + .word 0x2ff + .word 0x50007802 + .word 0x2ff + .word 0x802363fe + .word 0x19c0492 + .word 0x80000030 + .word 0x19c0493 + .word 0x82a0085 + .word 0x2ff + .word 0x100f7973 + .word 0x2ff + .word 0x8826002 + .word 0x2ff + .word 0x1ee0000 + .word 0x2ff + .word 0x50005005 + .word 0x2ff + .word 0x800c18f0 + .word 0x2ff + .word 0x81fb733d + .word 0x2ff + .word 0x82b0086 + .word 0x2ff + .word 0x100d0042 + .word 0x2ff + .word 0x808edb3d + .word 0x2ff + .word 0x80291bfe + .word 0x2ff + .word 0x81fb1b7c + .word 0x2ff + .word 0x9046001 + .word 0x2ff + .word 0x1005007f + .word 0x1c07bc3 + .word 0x80054a74 + .word 0x2ff + .word 0x8866001 + .word 0x3b04d6 + .word 0x50001009 + .word 0x3b0495 + .word 0x804163fe + .word 0x3b0454 + .word 0x52004806 + .word 0x2ff + .word 0x2ef7000 + .word 0x2ff + .word 0x11021000 + .word 0x2ff + .word 0x11021000 + .word 0x2ff + .word 0x81027bff + .word 0x2ff + .word 0x40000020 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81027bff + .word 0x2ff + .word 0x1ed0001 + .word 0x2ff + .word 0x80221bfe + .word 0x2ff + .word 0x81e81b7c + .word 0x2ff + .word 0x81e91b7c + .word 0x2ff + .word 0x81ea1b7c + .word 0x2ff + .word 0x81eb1b7c + .word 0x2ff + .word 0x81ec1b7c + .word 0x2ff + .word 0x800f10b0 + .word 0x2ff + .word 0x80684bfc + .word 0x2ff + .word 0x81e26b7d + .word 0x2ff + .word 0x81e2437d + .word 0x2ff + .word 0x81e24b7d + .word 0x2ff + .word 0x810e43fd + .word 0x2ff + .word 0x81e2537d + .word 0x2ff + .word 0x81e25b7d + .word 0x2ff + .word 0x5000500c + .word 0x2ff + .word 0x81e2637d + .word 0x2ff + .word 0x804e63fc + .word 0x2ff + .word 0xb0a17ff + .word 0x2ff + .word 0x500e6808 + .word 0x2ff + .word 0xa8b17ff + .word 0x2ff + .word 0x90d17fc + .word 0x2ff + .word 0x120e001d + .word 0x2ff + .word 0x800e6b74 + .word 0x2ff + .word 0x800d6b32 + .word 0x2ff + .word 0xb0d17fc + .word 0x2ff + .word 0x100d0042 + .word 0x2ff + .word 0xa4d17ff + .word 0x2ff + .word 0x5a0047e4 + .word 0x2ff + .word 0x3e27000 + .word 0x2ff + .word 0x1fc0003 + .word 0x2ff + .word 0x8886003 + .word 0x2ff + .word 0x1f00005 + .word 0x2ff + .word 0x1f40004 + .word 0x2ff + .word 0x8496003 + .word 0x1efe6ea + .word 0x800042f5 + .word 0x1e0e72a + .word 0x5000402a + .word 0x1ef83ea + .word 0x800d60f2 + .word 0x1e0842a + .word 0x1e84000 + .word 0x1e0a03c + .word 0x1ea4001 + .word 0x1f9dabd + .word 0x1ec4002 + .word 0x1f9e68a + .word 0x1f94003 + .word 0x2ff + .word 0x3eb4800 + .word 0x1e87abe + .word 0x3eb5801 + .word 0x1e8824a + .word 0x3eb6802 + .word 0x1ea7abe + .word 0x3ebd003 + .word 0x1ea82ca + .word 0x50004020 + .word 0x1ec7abe + .word 0x802a6bfe + .word 0x1ec834a + .word 0x1e84800 + .word 0x1e0a03c + .word 0x1ea4801 + .word 0x1f9dabd + .word 0x1ec4802 + .word 0x1f9e68a + .word 0x1f94803 + .word 0x2ff + .word 0x3e84800 + .word 0x1e87abe + .word 0x3e85801 + .word 0x1e8824a + .word 0x3e86802 + .word 0x1ea7abe + .word 0x3e8d003 + .word 0x1ea82ca + .word 0x50004816 + .word 0x1ec7abe + .word 0x90b6801 + .word 0x1ec834a + .word 0x1e85000 + .word 0x1e0a03c + .word 0x1ea5001 + .word 0x1f9dabd + .word 0x1ec5002 + .word 0x1f9e68a + .word 0x1f95003 + .word 0x2ff + .word 0x3e94800 + .word 0x1e87abe + .word 0x3e95801 + .word 0x1e8824a + .word 0x3e96802 + .word 0x1ea7abe + .word 0x3e9d003 + .word 0x1ea82ca + .word 0x5000500c + .word 0x1ec7abe + .word 0x8886801 + .word 0x1ec834a + .word 0x1e85800 + .word 0x1e0a03c + .word 0x1ea5801 + .word 0x1f9dabd + .word 0x1ec5802 + .word 0x1f9e68a + .word 0x1f95803 + .word 0x2ff + .word 0x3ea4800 + .word 0x1e87abe + .word 0x3ea5801 + .word 0x1e8824a + .word 0x3ea6802 + .word 0x1ea7abe + .word 0x3ead003 + .word 0x1ea82ca + .word 0x800d6872 + .word 0x2ff + .word 0x52005fd8 + .word 0x1ec7abe + .word 0x80496bfe + .word 0x1ec834a + .word 0x9026003 + .word 0x2ff + .word 0x500020a9 + .word 0x2ff + .word 0x800c0870 + .word 0x2ff + .word 0x81080bfe + .word 0x2ff + .word 0x81e80b7c + .word 0x2ff + .word 0x81eb0b7c + .word 0x2ff + .word 0x81ee0b7c + .word 0x2ff + .word 0x1dd4004 + .word 0x2ff + .word 0x1de4005 + .word 0x714228 + .word 0x1ff4006 + .word 0x1f25ae8 + .word 0x800427f2 + .word 0x1f373a8 + .word 0x800c10b0 + .word 0x2ff + .word 0x81f8137c + .word 0x1e8e9be + .word 0x800a5bfc + .word 0x1ebf0be + .word 0x802d5bfc + .word 0x1cefaca + .word 0x1f94000 + .word 0x2ff + .word 0x1fa4001 + .word 0x1f8c13c + .word 0x1fb4002 + .word 0x2ff + .word 0x81c05f3f + .word 0x2ff + .word 0x1fc4003 + .word 0x1e8c9bf + .word 0x80003bf5 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x81e90b7c + .word 0x2ff + .word 0x808363fe + .word 0x2ff + .word 0x8476001 + .word 0x2ff + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x2ff + .word 0x80084bfc + .word 0x2ff + .word 0x50007802 + .word 0x2ff + .word 0x800c18f0 + .word 0x2ff + .word 0x80000030 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x80032130 + .word 0x1f26328 + .word 0x1dd4004 + .word 0x1f37be8 + .word 0x1de4005 + .word 0x2ff + .word 0x800431b0 + .word 0x2ff + .word 0x1ff4006 + .word 0x2ff + .word 0x1f94000 + .word 0x2ff + .word 0x1fa4001 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x2ff + .word 0x1fb4002 + .word 0x2ff + .word 0x81f71b7c + .word 0x1f64228 + .word 0x800639f0 + .word 0x1e9e9be + .word 0x1fc4003 + .word 0x1ecf0be + .word 0x8034067c + .word 0x1cffb0a + .word 0x80000030 + .word 0x2ff + .word 0x44800000 + .word 0x80234217 + .word 0x52007b3a + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x81c0673f + .word 0x2ff + .word 0x80000030 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x52041808 + .word 0x1eb10bd + .word 0x80000030 + .word 0x1eb1aca + .word 0x520618d5 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000283 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800853fc + .word 0x1f7b93c + .word 0x8890ff7 + .word 0x1e05ad0 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x1dd4004 + .word 0x1f38428 + .word 0x1de4005 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x1ff4006 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x1f94000 + .word 0x1e03acb + .word 0x1fa4001 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x1fb4002 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x52004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x1fc4003 + .word 0x1f4631b + .word 0x81c06f3f + .word 0x1eb597c + .word 0x52041807 + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x520618e5 + .word 0x2ff + .word 0x8890ffa + .word 0x2ff + .word 0x52071a97 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400005ae + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e80b7c + .word 0x1ec09bc + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800843fc + .word 0x1f7b93c + .word 0x8890ff7 + .word 0x1e06310 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x1dd4004 + .word 0x1f373a8 + .word 0x1de4005 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x1ff4006 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x1f94000 + .word 0x1e03b0b + .word 0x1fa4001 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x1fb4002 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x52004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x1fc4003 + .word 0x1f46b5b + .word 0x81c05f3f + .word 0x1ec617c + .word 0x52041807 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x520618f6 + .word 0x2ff + .word 0x8890ffa + .word 0x2ff + .word 0x52071aac + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400005d6 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e90b7c + .word 0x1ed09bc + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x80084bfc + .word 0x1f7b93c + .word 0x8890ff7 + .word 0x1e06b50 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x1dd4004 + .word 0x1f37be8 + .word 0x1de4005 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x1ff4006 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x1f94000 + .word 0x1e03b4b + .word 0x1fa4001 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x1fb4002 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x52004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x1fc4003 + .word 0x1f45adb + .word 0x81c0673f + .word 0x1ed697c + .word 0x52041f98 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x52061865 + .word 0x2ff + .word 0x8890ffa + .word 0x2ff + .word 0x52071a13 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400005fe + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x500031a3 + .word 0x2ff + .word 0x800c10b0 + .word 0x2ff + .word 0x81e80b7c + .word 0x2ff + .word 0x81f8137c + .word 0x2ff + .word 0x81eb0b7c + .word 0x2ff + .word 0x81ee0b7c + .word 0x2ff + .word 0x800a43fc + .word 0x2ff + .word 0x802d43fc + .word 0x1f8c13c + .word 0x800637f2 + .word 0x714228 + .word 0x80000030 + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x80000030 + .word 0x1fdc61b + .word 0x80056b74 + .word 0x2ff + .word 0x1f45000 + .word 0x2ff + .word 0x1f96800 + .word 0x2ff + .word 0x1f75001 + .word 0x2ff + .word 0x1fa6801 + .word 0x2ff + .word 0x1f45002 + .word 0x1f8a1bc + .word 0x1fb6802 + .word 0x1f8ce49 + .word 0x1f75003 + .word 0x1f8b9bc + .word 0x1fc6803 + .word 0x1f8d689 + .word 0x1f45004 + .word 0x1f8a1bc + .word 0x1dd6804 + .word 0x1f8dec9 + .word 0x1f75005 + .word 0x1f8b9bc + .word 0x1de6805 + .word 0x1f8e709 + .word 0x1f45006 + .word 0x1f8a1bc + .word 0x1ff6806 + .word 0x1d8ef49 + .word 0x800a5bfc + .word 0x1f8b9bc + .word 0x802d5bfc + .word 0x1d8f789 + .word 0x80000030 + .word 0x1f8a1bc + .word 0x80000030 + .word 0x1f8ffc9 + .word 0x80000030 + .word 0x1e8e9be + .word 0x80000030 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1cefaca + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1e8c9bf + .word 0x10080243 + .word 0x2ff + .word 0x81c05f3f + .word 0x2ff + .word 0x80003bf5 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x81e90b7c + .word 0x2ff + .word 0x808363fe + .word 0x2ff + .word 0x8476001 + .word 0x2ff + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x2ff + .word 0x800b4bfc + .word 0x2ff + .word 0x50007802 + .word 0x2ff + .word 0x802e4bfc + .word 0x2ff + .word 0x10080539 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x800c18f0 + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x800331b0 + .word 0x2ff + .word 0x800639f0 + .word 0x2ff + .word 0x800573b4 + .word 0x2ff + .word 0x52055805 + .word 0x2ff + .word 0x80000030 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x2ff + .word 0x40000016 + .word 0x2ff + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x1f97000 + .word 0x2ff + .word 0x1f75801 + .word 0x2ff + .word 0x1fa7001 + .word 0x1f64228 + .word 0x1f45802 + .word 0x1f8a1be + .word 0x1fb7002 + .word 0x1f8ce4b + .word 0x1f75803 + .word 0x1f8b9be + .word 0x1fc7003 + .word 0x1f8d68b + .word 0x1f45804 + .word 0x1f8a1be + .word 0x1dd7004 + .word 0x1f8decb + .word 0x1f75805 + .word 0x1f8b9be + .word 0x1de7005 + .word 0x1f8e70b + .word 0x1f45806 + .word 0x1f8a1be + .word 0x1ff7006 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800b63fc + .word 0x1d8f78b + .word 0x802e63fc + .word 0x1f8a1be + .word 0x100801a1 + .word 0x1f8ffcb + .word 0x50007802 + .word 0x2ff + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x1008048e + .word 0x2ff + .word 0x80000030 + .word 0x1e9e9be + .word 0x80000030 + .word 0x1ecf0be + .word 0x8034067c + .word 0x1cffb0a + .word 0x80000030 + .word 0x2ff + .word 0x44800000 + .word 0x80234217 + .word 0x52007aeb + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x81c0673f + .word 0x2ff + .word 0x500619b1 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x48004000 + .word 0x1eb10bd + .word 0x80000030 + .word 0x1eb1aca + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800c53fc + .word 0x1f7b93c + .word 0x802f53fc + .word 0x1e05ad0 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x80056334 + .word 0x1f38428 + .word 0x80000030 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80057bf4 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52056005 + .word 0x1e03acb + .word 0x9090ff7 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x1f46000 + .word 0x1e07bdc + .word 0x80000030 + .word 0x1fdc61b + .word 0x1f97800 + .word 0x1f5a97d + .word 0x1f76001 + .word 0x1f75aea + .word 0x1fa7801 + .word 0x1f64a68 + .word 0x1f46002 + .word 0x1f8a1bc + .word 0x1fb7802 + .word 0x1f8ce49 + .word 0x1f76003 + .word 0x1f8b9bc + .word 0x1fc7803 + .word 0x1f8d689 + .word 0x1f46004 + .word 0x1f8a1bc + .word 0x1dd7804 + .word 0x1f8dec9 + .word 0x1f76005 + .word 0x1f8b9bc + .word 0x1de7805 + .word 0x1f8e709 + .word 0x1f46006 + .word 0x1f8a1bc + .word 0x1ff7806 + .word 0x1d8ef49 + .word 0x800c6bfc + .word 0x1f8b9bc + .word 0x802f6bfc + .word 0x1d8f789 + .word 0x400000a3 + .word 0x1f8a1bc + .word 0x81f71b7c + .word 0x1f8ffc9 + .word 0x5e004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x8890ffa + .word 0x1f4631b + .word 0x81c06f3f + .word 0x1eb597c + .word 0x52061805 + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x520719b7 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400004ce + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e80b7c + .word 0x1ec09bc + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800a43fc + .word 0x1f7b93c + .word 0x802d43fc + .word 0x1e06310 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x80000030 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80056b74 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055005 + .word 0x1e03b0b + .word 0x9090ff7 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x1f45000 + .word 0x1e0841c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1f96800 + .word 0x1f5a97d + .word 0x1f75001 + .word 0x1f7632a + .word 0x1fa6801 + .word 0x1f652a8 + .word 0x1f45002 + .word 0x1f8a1bc + .word 0x1fb6802 + .word 0x1f8ce49 + .word 0x1f75003 + .word 0x1f8b9bc + .word 0x1fc6803 + .word 0x1f8d689 + .word 0x1f45004 + .word 0x1f8a1bc + .word 0x1dd6804 + .word 0x1f8dec9 + .word 0x1f75005 + .word 0x1f8b9bc + .word 0x1de6805 + .word 0x1f8e709 + .word 0x1f45006 + .word 0x1f8a1bc + .word 0x1ff6806 + .word 0x1d8ef49 + .word 0x800a5bfc + .word 0x1f8b9bc + .word 0x802d5bfc + .word 0x1d8f789 + .word 0x400000a3 + .word 0x1f8a1bc + .word 0x81f71b7c + .word 0x1f8ffc9 + .word 0x5e004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x8890ffa + .word 0x1f46b5b + .word 0x81c05f3f + .word 0x1ec617c + .word 0x52061805 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x520719bb + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400004e5 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e90b7c + .word 0x1ed09bc + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x800b4bfc + .word 0x1f7b93c + .word 0x802e4bfc + .word 0x1e06b50 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x80000030 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800573b4 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055805 + .word 0x1e03b4b + .word 0x9090ff7 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1f97000 + .word 0x1f5a97d + .word 0x1f75801 + .word 0x1f76b6a + .word 0x1fa7001 + .word 0x1f64228 + .word 0x1f45802 + .word 0x1f8a1bc + .word 0x1fb7002 + .word 0x1f8ce49 + .word 0x1f75803 + .word 0x1f8b9bc + .word 0x1fc7003 + .word 0x1f8d689 + .word 0x1f45804 + .word 0x1f8a1bc + .word 0x1dd7004 + .word 0x1f8dec9 + .word 0x1f75805 + .word 0x1f8b9bc + .word 0x1de7005 + .word 0x1f8e709 + .word 0x1f45806 + .word 0x1f8a1bc + .word 0x1ff7006 + .word 0x1d8ef49 + .word 0x800b63fc + .word 0x1f8b9bc + .word 0x802e63fc + .word 0x1d8f789 + .word 0x400000a3 + .word 0x1f8a1bc + .word 0x81f71b7c + .word 0x1f8ffc9 + .word 0x5e004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x81c0673f + .word 0x1ed697c + .word 0x52061f63 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x52071911 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400004fc + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800c53fc + .word 0x1f7b93c + .word 0x802f53fc + .word 0x1e05ad0 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x80056334 + .word 0x1f38428 + .word 0x80000030 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80057bf4 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52056005 + .word 0x1e03acb + .word 0x9090ff7 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x1f46000 + .word 0x1e07bdc + .word 0x1f97800 + .word 0x1f5a97d + .word 0x1f76001 + .word 0x1f75aea + .word 0x1fa7801 + .word 0x1f64a68 + .word 0x1f46002 + .word 0x1f8a1be + .word 0x1fb7802 + .word 0x1f8ce4b + .word 0x1f76003 + .word 0x1f8b9be + .word 0x1fc7803 + .word 0x1f8d68b + .word 0x1f46004 + .word 0x1f8a1be + .word 0x1dd7804 + .word 0x1f8decb + .word 0x1f76005 + .word 0x1f8b9be + .word 0x1de7805 + .word 0x1f8e70b + .word 0x1f46006 + .word 0x1f8a1be + .word 0x1ff7806 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800c6bfc + .word 0x1d8f78b + .word 0x802f6bfc + .word 0x1f8a1be + .word 0x4000075f + .word 0x1f8ffcb + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x8890ffa + .word 0x1f4631b + .word 0x81c06f3f + .word 0x1eb597c + .word 0x52061805 + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x52071915 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x4000042c + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e80b7c + .word 0x1ec09bc + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800a43fc + .word 0x1f7b93c + .word 0x802d43fc + .word 0x1e06310 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x80000030 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80056b74 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055005 + .word 0x1e03b0b + .word 0x9090ff7 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x1f45000 + .word 0x1e0841c + .word 0x1f96800 + .word 0x1f5a97d + .word 0x1f75001 + .word 0x1f7632a + .word 0x1fa6801 + .word 0x1f652a8 + .word 0x1f45002 + .word 0x1f8a1be + .word 0x1fb6802 + .word 0x1f8ce4b + .word 0x1f75003 + .word 0x1f8b9be + .word 0x1fc6803 + .word 0x1f8d68b + .word 0x1f45004 + .word 0x1f8a1be + .word 0x1dd6804 + .word 0x1f8decb + .word 0x1f75005 + .word 0x1f8b9be + .word 0x1de6805 + .word 0x1f8e70b + .word 0x1f45006 + .word 0x1f8a1be + .word 0x1ff6806 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800a5bfc + .word 0x1d8f78b + .word 0x802d5bfc + .word 0x1f8a1be + .word 0x4000075f + .word 0x1f8ffcb + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x8890ffa + .word 0x1f46b5b + .word 0x81c05f3f + .word 0x1ec617c + .word 0x52061805 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x52071919 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000443 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e90b7c + .word 0x1ed09bc + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x800b4bfc + .word 0x1f7b93c + .word 0x802e4bfc + .word 0x1e06b50 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x80000030 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800573b4 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055805 + .word 0x1e03b4b + .word 0x9090ff7 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x1f97000 + .word 0x1f5a97d + .word 0x1f75801 + .word 0x1f76b6a + .word 0x1fa7001 + .word 0x1f64228 + .word 0x1f45802 + .word 0x1f8a1be + .word 0x1fb7002 + .word 0x1f8ce4b + .word 0x1f75803 + .word 0x1f8b9be + .word 0x1fc7003 + .word 0x1f8d68b + .word 0x1f45804 + .word 0x1f8a1be + .word 0x1dd7004 + .word 0x1f8decb + .word 0x1f75805 + .word 0x1f8b9be + .word 0x1de7005 + .word 0x1f8e70b + .word 0x1f45806 + .word 0x1f8a1be + .word 0x1ff7006 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800b63fc + .word 0x1d8f78b + .word 0x802e63fc + .word 0x1f8a1be + .word 0x4000075f + .word 0x1f8ffcb + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x81c0673f + .word 0x1ed697c + .word 0x52061f63 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x520718a9 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x4000045a + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81e80b7c + .word 0x2ff + .word 0x81f8137c + .word 0x2ff + .word 0x81eb0b7c + .word 0x2ff + .word 0x81ee0b7c + .word 0x2ff + .word 0x800a43fc + .word 0x2ff + .word 0x802d43fc + .word 0x1f8c13c + .word 0x80000030 + .word 0x714228 + .word 0x80000030 + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x82817ff + .word 0x1fdc61b + .word 0x80056b74 + .word 0x2ff + .word 0x1f45000 + .word 0x2ff + .word 0x1ff6800 + .word 0x2ff + .word 0x1f94000 + .word 0x2ff + .word 0x1f75001 + .word 0x2ff + .word 0x1f46801 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff5002 + .word 0x1f8ce4a + .word 0x1f76802 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f45003 + .word 0x1f8d68a + .word 0x1ff6803 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f75004 + .word 0x1f8deca + .word 0x1f46804 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff5005 + .word 0x1f8e70a + .word 0x1f76805 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f45006 + .word 0x1d8ef4a + .word 0x1f66806 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800a5bfc + .word 0x1f8a1bc + .word 0x802d5bfc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x80000030 + .word 0x1f8b93c + .word 0x80000030 + .word 0x1e8e9be + .word 0x80000030 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1cefaca + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1e8c9bf + .word 0x80000030 + .word 0x2ff + .word 0x81c05f3f + .word 0x2ff + .word 0x80003bf5 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x81e90b7c + .word 0x2ff + .word 0x808363fe + .word 0x2ff + .word 0x8476001 + .word 0x2ff + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x2ff + .word 0x800b4bfc + .word 0x2ff + .word 0x50007802 + .word 0x2ff + .word 0x802e4bfc + .word 0x2ff + .word 0x80000030 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x800c18f0 + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x82817ff + .word 0x2ff + .word 0x800339f0 + .word 0x2ff + .word 0x800573b4 + .word 0x2ff + .word 0x52055805 + .word 0x2ff + .word 0x80073ff2 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x2ff + .word 0x4000001c + .word 0x2ff + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff7000 + .word 0x2ff + .word 0x1f94000 + .word 0x2ff + .word 0x1f75801 + .word 0x1f64228 + .word 0x1f47001 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff5802 + .word 0x1f8ce4a + .word 0x1f77002 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f45803 + .word 0x1f8d68a + .word 0x1ff7003 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f75804 + .word 0x1f8deca + .word 0x1f47004 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff5805 + .word 0x1f8e70a + .word 0x1f77005 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f45806 + .word 0x1d8ef4a + .word 0x1f67006 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800b63fc + .word 0x1f8a1bc + .word 0x802e63fc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x80000030 + .word 0x1e9e9be + .word 0x80000030 + .word 0x1ecf0be + .word 0x8034067c + .word 0x1cffb0a + .word 0x80000030 + .word 0x2ff + .word 0x44800000 + .word 0x80234217 + .word 0x52007a99 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x81c0673f + .word 0x2ff + .word 0x80000030 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x40000004 + .word 0x1eb10bd + .word 0x80000030 + .word 0x1eb1aca + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800c53fc + .word 0x1f7b93c + .word 0x802f53fc + .word 0x1e05ad0 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x80056334 + .word 0x1f38428 + .word 0x82817ff + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80057bf4 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52056005 + .word 0x1e03acb + .word 0x9090ff7 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x4000001c + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x1f46000 + .word 0x1e07bdc + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff7800 + .word 0x1f5a97d + .word 0x1f94000 + .word 0x1f75aea + .word 0x1f76001 + .word 0x1f64a68 + .word 0x1f47801 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff6002 + .word 0x1f8ce4a + .word 0x1f77802 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f46003 + .word 0x1f8d68a + .word 0x1ff7803 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f76004 + .word 0x1f8deca + .word 0x1f47804 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff6005 + .word 0x1f8e70a + .word 0x1f77805 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f46006 + .word 0x1d8ef4a + .word 0x1f67806 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800c6bfc + .word 0x1f8a1bc + .word 0x802f6bfc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x8890ffa + .word 0x1f4631b + .word 0x81c06f3f + .word 0x1eb597c + .word 0x50071b1a + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x81e80b7c + .word 0x1ec09bc + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800a43fc + .word 0x1f7b93c + .word 0x802d43fc + .word 0x1e06310 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x82817ff + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80056b74 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055005 + .word 0x1e03b0b + .word 0x9090ff7 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x4000001c + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x1f45000 + .word 0x1e0841c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff6800 + .word 0x1f5a97d + .word 0x1f94000 + .word 0x1f7632a + .word 0x1f75001 + .word 0x1f652a8 + .word 0x1f46801 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff5002 + .word 0x1f8ce4a + .word 0x1f76802 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f45003 + .word 0x1f8d68a + .word 0x1ff6803 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f75004 + .word 0x1f8deca + .word 0x1f46804 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff5005 + .word 0x1f8e70a + .word 0x1f76805 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f45006 + .word 0x1d8ef4a + .word 0x1f66806 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800a5bfc + .word 0x1f8a1bc + .word 0x802d5bfc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x8890ffa + .word 0x1f46b5b + .word 0x81c05f3f + .word 0x1ec617c + .word 0x50071b2d + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x81e90b7c + .word 0x1ed09bc + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x800b4bfc + .word 0x1f7b93c + .word 0x802e4bfc + .word 0x1e06b50 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x82817ff + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800573b4 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055805 + .word 0x1e03b4b + .word 0x9090ff7 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x4000001c + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff7000 + .word 0x1f5a97d + .word 0x1f94000 + .word 0x1f76b6a + .word 0x1f75801 + .word 0x1f64228 + .word 0x1f47001 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff5802 + .word 0x1f8ce4a + .word 0x1f77002 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f45803 + .word 0x1f8d68a + .word 0x1ff7003 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f75804 + .word 0x1f8deca + .word 0x1f47004 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff5805 + .word 0x1f8e70a + .word 0x1f77005 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f45806 + .word 0x1d8ef4a + .word 0x1f67006 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800b63fc + .word 0x1f8a1bc + .word 0x802e63fc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x81c0673f + .word 0x1ed697c + .word 0x52071f53 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x4000033e + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81c0673f + .word 0x180421d + .word 0x45400000 + .word 0x800002ff + .word 0x80000030 + .word 0x180421f + .word 0x80000030 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x52041809 + .word 0x1eb10bd + .word 0x80000030 + .word 0x1eb1aca + .word 0x52061887 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400001e3 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81eb09bc + .word 0x81ea0b7c + .word 0x180421f + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800853fc + .word 0x1f7b93c + .word 0x8890ff7 + .word 0x1e05ad0 + .word 0x80000030 + .word 0x214a57 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x1dd4004 + .word 0x1f38428 + .word 0x1de4005 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x1ff4006 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x1f94000 + .word 0x1e03acb + .word 0x1fa4001 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x1fb4002 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x52004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x1fc4003 + .word 0x1f4631b + .word 0x44800000 + .word 0x81eb597c + .word 0x81c06f3f + .word 0x1804a5d + .word 0x52041807 + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x52061896 + .word 0x2ff + .word 0x8890ffa + .word 0x2ff + .word 0x520719f6 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000270 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81ec09bc + .word 0x81e80b7c + .word 0x1804a5f + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800843fc + .word 0x1f7b93c + .word 0x8890ff7 + .word 0x1e06310 + .word 0x80000030 + .word 0x215297 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x1dd4004 + .word 0x1f373a8 + .word 0x1de4005 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x1ff4006 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x1f94000 + .word 0x1e03b0b + .word 0x1fa4001 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x1fb4002 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x52004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x1fc4003 + .word 0x1f46b5b + .word 0x44800000 + .word 0x81ec617c + .word 0x81c05f3f + .word 0x180529d + .word 0x52041807 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x520618a7 + .word 0x2ff + .word 0x8890ffa + .word 0x2ff + .word 0x52071a0b + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000295 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81ed09bc + .word 0x81e90b7c + .word 0x180529f + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x80084bfc + .word 0x1f7b93c + .word 0x8890ff7 + .word 0x1e06b50 + .word 0x80000030 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x1dd4004 + .word 0x1f37be8 + .word 0x1de4005 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x1ff4006 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x1f94000 + .word 0x1e03b4b + .word 0x1fa4001 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x1fb4002 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x52004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x1fc4003 + .word 0x1f45adb + .word 0x44800000 + .word 0x81ed697c + .word 0x81c0673f + .word 0x180421d + .word 0x52041f8f + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x5206180d + .word 0x2ff + .word 0x8890ffa + .word 0x2ff + .word 0x52071969 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400002ba + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81c0673f + .word 0x180421d + .word 0x45400000 + .word 0x800002ff + .word 0x80000030 + .word 0x180421f + .word 0x5006195f + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x48004000 + .word 0x1eb10bd + .word 0x80000030 + .word 0x1eb1aca + .word 0x45400000 + .word 0x81eb09bc + .word 0x81ea0b7c + .word 0x180421f + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800c53fc + .word 0x1f7b93c + .word 0x802f53fc + .word 0x1e05ad0 + .word 0x80000030 + .word 0x214a57 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x80056334 + .word 0x1f38428 + .word 0x80000030 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80057bf4 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52056005 + .word 0x1e03acb + .word 0x9090ff7 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x1f46000 + .word 0x1e07bdc + .word 0x80000030 + .word 0x1fdc61b + .word 0x1f97800 + .word 0x1f5a97d + .word 0x1f76001 + .word 0x1f75aea + .word 0x1fa7801 + .word 0x1f64a68 + .word 0x1f46002 + .word 0x1f8a1bc + .word 0x1fb7802 + .word 0x1f8ce49 + .word 0x1f76003 + .word 0x1f8b9bc + .word 0x1fc7803 + .word 0x1f8d689 + .word 0x1f46004 + .word 0x1f8a1bc + .word 0x1dd7804 + .word 0x1f8dec9 + .word 0x1f76005 + .word 0x1f8b9bc + .word 0x1de7805 + .word 0x1f8e709 + .word 0x1f46006 + .word 0x1f8a1bc + .word 0x1ff7806 + .word 0x1d8ef49 + .word 0x800c6bfc + .word 0x1f8b9bc + .word 0x802f6bfc + .word 0x1d8f789 + .word 0x400000ac + .word 0x1f8a1bc + .word 0x81f71b7c + .word 0x1f8ffc9 + .word 0x5e004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x8890ffa + .word 0x1f4631b + .word 0x44800000 + .word 0x81eb597c + .word 0x81c06f3f + .word 0x1804a5d + .word 0x52061805 + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x52071965 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400001df + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81ec09bc + .word 0x81e80b7c + .word 0x1804a5f + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800a43fc + .word 0x1f7b93c + .word 0x802d43fc + .word 0x1e06310 + .word 0x80000030 + .word 0x215297 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x80000030 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80056b74 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055005 + .word 0x1e03b0b + .word 0x9090ff7 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x1f45000 + .word 0x1e0841c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1f96800 + .word 0x1f5a97d + .word 0x1f75001 + .word 0x1f7632a + .word 0x1fa6801 + .word 0x1f652a8 + .word 0x1f45002 + .word 0x1f8a1bc + .word 0x1fb6802 + .word 0x1f8ce49 + .word 0x1f75003 + .word 0x1f8b9bc + .word 0x1fc6803 + .word 0x1f8d689 + .word 0x1f45004 + .word 0x1f8a1bc + .word 0x1dd6804 + .word 0x1f8dec9 + .word 0x1f75005 + .word 0x1f8b9bc + .word 0x1de6805 + .word 0x1f8e709 + .word 0x1f45006 + .word 0x1f8a1bc + .word 0x1ff6806 + .word 0x1d8ef49 + .word 0x800a5bfc + .word 0x1f8b9bc + .word 0x802d5bfc + .word 0x1d8f789 + .word 0x400000ac + .word 0x1f8a1bc + .word 0x81f71b7c + .word 0x1f8ffc9 + .word 0x5e004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x8890ffa + .word 0x1f46b5b + .word 0x44800000 + .word 0x81ec617c + .word 0x81c05f3f + .word 0x180529d + .word 0x52061805 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x52071969 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x400001f3 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81ed09bc + .word 0x81e90b7c + .word 0x180529f + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x800b4bfc + .word 0x1f7b93c + .word 0x802e4bfc + .word 0x1e06b50 + .word 0x80000030 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x80000030 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800573b4 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055805 + .word 0x1e03b4b + .word 0x9090ff7 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1f97000 + .word 0x1f5a97d + .word 0x1f75801 + .word 0x1f76b6a + .word 0x1fa7001 + .word 0x1f64228 + .word 0x1f45802 + .word 0x1f8a1bc + .word 0x1fb7002 + .word 0x1f8ce49 + .word 0x1f75803 + .word 0x1f8b9bc + .word 0x1fc7003 + .word 0x1f8d689 + .word 0x1f45804 + .word 0x1f8a1bc + .word 0x1dd7004 + .word 0x1f8dec9 + .word 0x1f75805 + .word 0x1f8b9bc + .word 0x1de7005 + .word 0x1f8e709 + .word 0x1f45806 + .word 0x1f8a1bc + .word 0x1ff7006 + .word 0x1d8ef49 + .word 0x800b63fc + .word 0x1f8b9bc + .word 0x802e63fc + .word 0x1d8f789 + .word 0x400000ac + .word 0x1f8a1bc + .word 0x81f71b7c + .word 0x1f8ffc9 + .word 0x5e004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x44800000 + .word 0x81ed697c + .word 0x81c0673f + .word 0x180421d + .word 0x52061f5a + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x520718b6 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000207 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81eb09bc + .word 0x81ea0b7c + .word 0x180421f + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800c53fc + .word 0x1f7b93c + .word 0x802f53fc + .word 0x1e05ad0 + .word 0x80000030 + .word 0x214a57 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x80056334 + .word 0x1f38428 + .word 0x80000030 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80057bf4 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52056005 + .word 0x1e03acb + .word 0x9090ff7 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x1f46000 + .word 0x1e07bdc + .word 0x1f97800 + .word 0x1f5a97d + .word 0x1f76001 + .word 0x1f75aea + .word 0x1fa7801 + .word 0x1f64a68 + .word 0x1f46002 + .word 0x1f8a1be + .word 0x1fb7802 + .word 0x1f8ce4b + .word 0x1f76003 + .word 0x1f8b9be + .word 0x1fc7803 + .word 0x1f8d68b + .word 0x1f46004 + .word 0x1f8a1be + .word 0x1dd7804 + .word 0x1f8decb + .word 0x1f76005 + .word 0x1f8b9be + .word 0x1de7805 + .word 0x1f8e70b + .word 0x1f46006 + .word 0x1f8a1be + .word 0x1ff7806 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800c6bfc + .word 0x1d8f78b + .word 0x802f6bfc + .word 0x1f8a1be + .word 0x40000756 + .word 0x1f8ffcb + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x8890ffa + .word 0x1f4631b + .word 0x44800000 + .word 0x81eb597c + .word 0x81c06f3f + .word 0x1804a5d + .word 0x52061805 + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x520718ba + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000134 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81ec09bc + .word 0x81e80b7c + .word 0x1804a5f + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800a43fc + .word 0x1f7b93c + .word 0x802d43fc + .word 0x1e06310 + .word 0x80000030 + .word 0x215297 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x80000030 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80056b74 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055005 + .word 0x1e03b0b + .word 0x9090ff7 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x1f45000 + .word 0x1e0841c + .word 0x1f96800 + .word 0x1f5a97d + .word 0x1f75001 + .word 0x1f7632a + .word 0x1fa6801 + .word 0x1f652a8 + .word 0x1f45002 + .word 0x1f8a1be + .word 0x1fb6802 + .word 0x1f8ce4b + .word 0x1f75003 + .word 0x1f8b9be + .word 0x1fc6803 + .word 0x1f8d68b + .word 0x1f45004 + .word 0x1f8a1be + .word 0x1dd6804 + .word 0x1f8decb + .word 0x1f75005 + .word 0x1f8b9be + .word 0x1de6805 + .word 0x1f8e70b + .word 0x1f45006 + .word 0x1f8a1be + .word 0x1ff6806 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800a5bfc + .word 0x1d8f78b + .word 0x802d5bfc + .word 0x1f8a1be + .word 0x40000756 + .word 0x1f8ffcb + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x8890ffa + .word 0x1f46b5b + .word 0x44800000 + .word 0x81ec617c + .word 0x81c05f3f + .word 0x180529d + .word 0x52061805 + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x520718be + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x40000148 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x45400000 + .word 0x81ed09bc + .word 0x81e90b7c + .word 0x180529f + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x800b4bfc + .word 0x1f7b93c + .word 0x802e4bfc + .word 0x1e06b50 + .word 0x80000030 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x80000030 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800573b4 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055805 + .word 0x1e03b4b + .word 0x9090ff7 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x40000014 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x1f97000 + .word 0x1f5a97d + .word 0x1f75801 + .word 0x1f76b6a + .word 0x1fa7001 + .word 0x1f64228 + .word 0x1f45802 + .word 0x1f8a1be + .word 0x1fb7002 + .word 0x1f8ce4b + .word 0x1f75803 + .word 0x1f8b9be + .word 0x1fc7003 + .word 0x1f8d68b + .word 0x1f45804 + .word 0x1f8a1be + .word 0x1dd7004 + .word 0x1f8decb + .word 0x1f75805 + .word 0x1f8b9be + .word 0x1de7005 + .word 0x1f8e70b + .word 0x1f45806 + .word 0x1f8a1be + .word 0x1ff7006 + .word 0x1d8ef4b + .word 0x81f7137c + .word 0x1f8b9be + .word 0x800b63fc + .word 0x1d8f78b + .word 0x802e63fc + .word 0x1f8a1be + .word 0x40000756 + .word 0x1f8ffcb + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x44800000 + .word 0x81ed697c + .word 0x81c0673f + .word 0x180421d + .word 0x52061f5a + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x52071848 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x4000015c + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81c0673f + .word 0x180421d + .word 0x45400000 + .word 0x800002ff + .word 0x80000030 + .word 0x180421f + .word 0x80000030 + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x81ea0b7c + .word 0x1eb09bc + .word 0x40000005 + .word 0x1eb10bd + .word 0x80000030 + .word 0x1eb1aca + .word 0x45400000 + .word 0x81eb09bc + .word 0x81ea0b7c + .word 0x180421f + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x81ed0b7c + .word 0x1fc4a68 + .word 0x81f00b7c + .word 0x224213 + .word 0x800c53fc + .word 0x1f7b93c + .word 0x802f53fc + .word 0x1e05ad0 + .word 0x80000030 + .word 0x214a57 + .word 0x81e90bbc + .word 0x7152a8 + .word 0x81f5433c + .word 0x1f26b68 + .word 0x80056334 + .word 0x1f38428 + .word 0x82817ff + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80057bf4 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52056005 + .word 0x1e03acb + .word 0x9090ff7 + .word 0x1c04a5c + .word 0x800c6bfc + .word 0x1e07bdc + .word 0x802f6bfc + .word 0x1f5a97d + .word 0x4000001c + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x1f46000 + .word 0x1e07bdc + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff7800 + .word 0x1f5a97d + .word 0x1f94000 + .word 0x1f75aea + .word 0x1f76001 + .word 0x1f64a68 + .word 0x1f47801 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff6002 + .word 0x1f8ce4a + .word 0x1f77802 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f46003 + .word 0x1f8d68a + .word 0x1ff7803 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f76004 + .word 0x1f8deca + .word 0x1f47804 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff6005 + .word 0x1f8e70a + .word 0x1f77805 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f46006 + .word 0x1d8ef4a + .word 0x1f67806 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800c6bfc + .word 0x1f8a1bc + .word 0x802f6bfc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1eae9be + .word 0x3eaa802 + .word 0x1edf0be + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x1d0fb4a + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x1eac9bf + .word 0x8890ffa + .word 0x1f4631b + .word 0x44800000 + .word 0x81eb597c + .word 0x81c06f3f + .word 0x1804a5d + .word 0x5007187d + .word 0x1edd0bf + .word 0x8050033d + .word 0x1f0da8b + .word 0x45400000 + .word 0x81ec09bc + .word 0x81e80b7c + .word 0x1804a5f + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x81eb0b7c + .word 0x1fc52a8 + .word 0x81ee0b7c + .word 0x224a53 + .word 0x800a43fc + .word 0x1f7b93c + .word 0x802d43fc + .word 0x1e06310 + .word 0x80000030 + .word 0x215297 + .word 0x81ea0bbc + .word 0x714228 + .word 0x81f54b3c + .word 0x1f25ae8 + .word 0x800552b4 + .word 0x1f373a8 + .word 0x82817ff + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80056b74 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055005 + .word 0x1e03b0b + .word 0x9090ff7 + .word 0x1c0529c + .word 0x800a5bfc + .word 0x1e0841c + .word 0x802d5bfc + .word 0x1f5a97d + .word 0x4000001c + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x1f45000 + .word 0x1e0841c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff6800 + .word 0x1f5a97d + .word 0x1f94000 + .word 0x1f7632a + .word 0x1f75001 + .word 0x1f652a8 + .word 0x1f46801 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff5002 + .word 0x1f8ce4a + .word 0x1f76802 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f45003 + .word 0x1f8d68a + .word 0x1ff6803 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f75004 + .word 0x1f8deca + .word 0x1f46804 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff5005 + .word 0x1f8e70a + .word 0x1f76805 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f45006 + .word 0x1d8ef4a + .word 0x1f66806 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800a5bfc + .word 0x1f8a1bc + .word 0x802d5bfc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e8e9be + .word 0x3eba802 + .word 0x1ebf0be + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x1cefaca + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x1e8c9bf + .word 0x8890ffa + .word 0x1f46b5b + .word 0x44800000 + .word 0x81ec617c + .word 0x81c05f3f + .word 0x180529d + .word 0x5007188d + .word 0x1ebd0bf + .word 0x804e033d + .word 0x1eeda0b + .word 0x45400000 + .word 0x81ed09bc + .word 0x81e90b7c + .word 0x180529f + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x81ec0b7c + .word 0x1fc4228 + .word 0x81ef0b7c + .word 0x225293 + .word 0x800b4bfc + .word 0x1f7b93c + .word 0x802e4bfc + .word 0x1e06b50 + .word 0x80000030 + .word 0x214217 + .word 0x81e80bbc + .word 0x714a68 + .word 0x81f5533c + .word 0x1f26328 + .word 0x80055af4 + .word 0x1f37be8 + .word 0x82817ff + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800573b4 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x52055805 + .word 0x1e03b4b + .word 0x9090ff7 + .word 0x1c0421c + .word 0x800b63fc + .word 0x1e0739c + .word 0x802e63fc + .word 0x1f5a97d + .word 0x4000001c + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x1f45800 + .word 0x1e0739c + .word 0x80000030 + .word 0x1fdc61b + .word 0x1ff7000 + .word 0x1f5a97d + .word 0x1f94000 + .word 0x1f76b6a + .word 0x1f75801 + .word 0x1f64228 + .word 0x1f47001 + .word 0x1f8a1bc + .word 0x1fa4001 + .word 0x1f8f8bd + .word 0x1ff5802 + .word 0x1f8ce4a + .word 0x1f77002 + .word 0x1f8b9bc + .word 0x1fb4002 + .word 0x1f8a0bd + .word 0x1f45803 + .word 0x1f8d68a + .word 0x1ff7003 + .word 0x1f8f9bc + .word 0x1fc4003 + .word 0x1f8b8bd + .word 0x1f75804 + .word 0x1f8deca + .word 0x1f47004 + .word 0x1f8a1bc + .word 0x1dd4004 + .word 0x1f8f8bd + .word 0x1ff5805 + .word 0x1f8e70a + .word 0x1f77005 + .word 0x1f8b9bc + .word 0x1de4005 + .word 0x1f8a0bd + .word 0x1f45806 + .word 0x1d8ef4a + .word 0x1f67006 + .word 0x1f8f9bc + .word 0x1ff4006 + .word 0x1f8b8bd + .word 0x81f7137c + .word 0x1d8f78a + .word 0x800b63fc + .word 0x1f8a1bc + .word 0x802e63fc + .word 0x1f8b0bd + .word 0x1f60002 + .word 0x1f8ffca + .word 0x81f71b7c + .word 0x1f8b93c + .word 0x5e004802 + .word 0x1e9e9be + .word 0x3eca802 + .word 0x1ecf0be + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x1cffb0a + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x1e9c9bf + .word 0x8890ffa + .word 0x1f45adb + .word 0x44800000 + .word 0x81ed697c + .word 0x81c0673f + .word 0x180421d + .word 0x52071f4a + .word 0x1ecd0bf + .word 0x804f033d + .word 0x1efda4b + .word 0x4000009b + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x8280001 + .word 0x2ff + .word 0x800206bc + .word 0x1ec09bc + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x1004108c + .word 0x1fc52a8 + .word 0x810523fe + .word 0x224a53 + .word 0x8262001 + .word 0x1f7b93c + .word 0x5200403e + .word 0x2ff + .word 0x9072002 + .word 0x1e06310 + .word 0x81ea0bbc + .word 0x1e00654 + .word 0x81f54b3c + .word 0x1e00694 + .word 0x80042970 + .word 0x2ff + .word 0x10041173 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x800531b0 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x800639f0 + .word 0x1e03b0b + .word 0x9090ffa + .word 0x1c0529c + .word 0x100801ba + .word 0x1e0841c + .word 0x80024231 + .word 0x1f5a97d + .word 0x10084173 + .word 0x1f7632a + .word 0x81f71b7c + .word 0x1f652a8 + .word 0x5e004802 + .word 0x2ff + .word 0x3eba802 + .word 0x2ff + .word 0x80000030 + .word 0x1f5497d + .word 0x8034067c + .word 0x2ff + .word 0x3eb7800 + .word 0x1f16315 + .word 0x3ee7800 + .word 0x235297 + .word 0x3eea802 + .word 0x2ff + .word 0x8890ffd + .word 0x1f46b5b + .word 0x811923fd + .word 0x1ec617c + .word 0x809923fd + .word 0x2ff + .word 0x811a43fd + .word 0x2ff + .word 0x8220001 + .word 0x2ff + .word 0x809a23fd + .word 0x1ed09bc + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x80000030 + .word 0x2ff + .word 0x52001022 + .word 0x225293 + .word 0x80000030 + .word 0x1f7b93c + .word 0x4b000000 + .word 0x81e06b50 + .word 0x43800000 + .word 0x818006dd + .word 0x81f5533c + .word 0x2006dd + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x80000030 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x80000030 + .word 0x1e03b4b + .word 0x9090ffd + .word 0x1f9c93c + .word 0x80000030 + .word 0x1fad13c + .word 0x80000030 + .word 0x1f5a97d + .word 0x80000030 + .word 0x1f76b6a + .word 0x800028b5 + .word 0x1fbce68 + .word 0x5e004802 + .word 0x1fbd6a8 + .word 0x3eca802 + .word 0x2ff + .word 0x80000030 + .word 0x1f5517d + .word 0x52062802 + .word 0x2ff + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x800039b5 + .word 0x1fad66b + .word 0x3ef8000 + .word 0x2ff + .word 0x3efa802 + .word 0x2ff + .word 0x81fb2b7c + .word 0x2ff + .word 0x80000030 + .word 0x1ed697c + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1fbd93c + .word 0x3ec6801 + .word 0x2ff + .word 0x400000a2 + .word 0x2ff + .word 0x3ef6801 + .word 0x2ff + .word 0x45400000 + .word 0x80215297 + .word 0x400007c1 + .word 0x1804a5f + .word 0x80000030 + .word 0x2ff + .word 0x44800000 + .word 0x800002ff + .word 0x45400000 + .word 0x8180529d + .word 0x400007dc + .word 0x180529f + .word 0xa200001 + .word 0x2ff + .word 0x8280001 + .word 0x2ff + .word 0x800206bc + .word 0x1ed09bc + .word 0x3eb6001 + .word 0x1ed10bd + .word 0x3ee6001 + .word 0x1ed1b4a + .word 0x1004108c + .word 0x1fc4228 + .word 0x810523fe + .word 0x225293 + .word 0x8262001 + .word 0x1f7b93c + .word 0x5200403e + .word 0x2ff + .word 0x9072002 + .word 0x1e06b50 + .word 0x81e80bbc + .word 0x1e00654 + .word 0x81f5533c + .word 0x1e00694 + .word 0x80042970 + .word 0x2ff + .word 0x10041173 + .word 0x1ed21bc + .word 0x5a004802 + .word 0x1ed28bd + .word 0x800531b0 + .word 0x1ed30be + .word 0x80000030 + .word 0x31ad40 + .word 0x800639f0 + .word 0x1e03b4b + .word 0x9090ffa + .word 0x1c0421c + .word 0x100801ba + .word 0x1e0739c + .word 0x80024231 + .word 0x1f5a97d + .word 0x10084173 + .word 0x1f76b6a + .word 0x81f71b7c + .word 0x1f64228 + .word 0x5e004802 + .word 0x2ff + .word 0x3eca802 + .word 0x2ff + .word 0x80000030 + .word 0x1f5517d + .word 0x8034067c + .word 0x2ff + .word 0x3ec8000 + .word 0x1f16b55 + .word 0x3ef8000 + .word 0x234217 + .word 0x3efa802 + .word 0x2ff + .word 0x8890ffd + .word 0x1f45adb + .word 0x811923fd + .word 0x1ed697c + .word 0x809923fd + .word 0x2ff + .word 0x811a43fd + .word 0x2ff + .word 0x8220001 + .word 0x2ff + .word 0x809a23fd + .word 0x1eb09bc + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x80000030 + .word 0x2ff + .word 0x52001022 + .word 0x224213 + .word 0x80000030 + .word 0x1f7b93c + .word 0x4b000000 + .word 0x81e05ad0 + .word 0x43800000 + .word 0x818006dd + .word 0x81f5433c + .word 0x2006dd + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x80000030 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x80000030 + .word 0x1e03acb + .word 0x9090ffd + .word 0x1f9c93c + .word 0x80000030 + .word 0x1fad13c + .word 0x80000030 + .word 0x1f5a97d + .word 0x80000030 + .word 0x1f75aea + .word 0x800028b5 + .word 0x1fbce68 + .word 0x5e004802 + .word 0x1fbd6a8 + .word 0x3eaa802 + .word 0x2ff + .word 0x80000030 + .word 0x1f5417d + .word 0x52062802 + .word 0x2ff + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x800039b5 + .word 0x1fad66b + .word 0x3ed7000 + .word 0x2ff + .word 0x3eda802 + .word 0x2ff + .word 0x81fb2b7c + .word 0x2ff + .word 0x80000030 + .word 0x1eb597c + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1fbd93c + .word 0x3ea5801 + .word 0x2ff + .word 0x40000055 + .word 0x2ff + .word 0x3ed5801 + .word 0x2ff + .word 0x45400000 + .word 0x80214217 + .word 0x400007c1 + .word 0x180529f + .word 0x80000030 + .word 0x2ff + .word 0x44800000 + .word 0x800002ff + .word 0x45400000 + .word 0x8180421d + .word 0x400007dc + .word 0x180421f + .word 0xa200001 + .word 0x2ff + .word 0x8280001 + .word 0x2ff + .word 0x800206bc + .word 0x1eb09bc + .word 0x3ec6801 + .word 0x1eb10bd + .word 0x3ef6801 + .word 0x1eb1aca + .word 0x1004108c + .word 0x1fc4a68 + .word 0x810523fe + .word 0x224213 + .word 0x8262001 + .word 0x1f7b93c + .word 0x5200403e + .word 0x2ff + .word 0x9072002 + .word 0x1e05ad0 + .word 0x81e90bbc + .word 0x1e00654 + .word 0x81f5433c + .word 0x1e00694 + .word 0x80042970 + .word 0x2ff + .word 0x10041173 + .word 0x1eb21bc + .word 0x5a004802 + .word 0x1eb28bd + .word 0x800531b0 + .word 0x1eb30be + .word 0x80000030 + .word 0x31ad40 + .word 0x800639f0 + .word 0x1e03acb + .word 0x9090ffa + .word 0x1c04a5c + .word 0x100801ba + .word 0x1e07bdc + .word 0x80024231 + .word 0x1f5a97d + .word 0x10084173 + .word 0x1f75aea + .word 0x81f71b7c + .word 0x1f64a68 + .word 0x5e004802 + .word 0x2ff + .word 0x3eaa802 + .word 0x2ff + .word 0x80000030 + .word 0x1f5417d + .word 0x8034067c + .word 0x2ff + .word 0x3ea7000 + .word 0x1f15ad5 + .word 0x3ed7000 + .word 0x234a57 + .word 0x3eda802 + .word 0x2ff + .word 0x8890ffd + .word 0x1f4631b + .word 0x811923fd + .word 0x1eb597c + .word 0x809923fd + .word 0x2ff + .word 0x811a43fd + .word 0x2ff + .word 0x8220001 + .word 0x2ff + .word 0x809a23fd + .word 0x1ec09bc + .word 0x3ea5801 + .word 0x1ec10bd + .word 0x3ed5801 + .word 0x1ec1b0a + .word 0x80000030 + .word 0x2ff + .word 0x52001022 + .word 0x224a53 + .word 0x80000030 + .word 0x1f7b93c + .word 0x4b000000 + .word 0x81e06310 + .word 0x43800000 + .word 0x818006dd + .word 0x81f54b3c + .word 0x2006dd + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1ec21bc + .word 0x5a004802 + .word 0x1ec28bd + .word 0x80000030 + .word 0x1ec30be + .word 0x80000030 + .word 0x31ad40 + .word 0x80000030 + .word 0x1e03b0b + .word 0x9090ffd + .word 0x1f9c93c + .word 0x80000030 + .word 0x1fad13c + .word 0x80000030 + .word 0x1f5a97d + .word 0x80000030 + .word 0x1f7632a + .word 0x800028b5 + .word 0x1fbce68 + .word 0x5e004802 + .word 0x1fbd6a8 + .word 0x3eba802 + .word 0x2ff + .word 0x80000030 + .word 0x1f5497d + .word 0x52062802 + .word 0x2ff + .word 0x3eb7800 + .word 0x1f16315 + .word 0x800039b5 + .word 0x1fad66b + .word 0x3ee7800 + .word 0x2ff + .word 0x3eea802 + .word 0x2ff + .word 0x81fb2b7c + .word 0x2ff + .word 0x80000030 + .word 0x1ec617c + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x1fbd93c + .word 0x3eb6001 + .word 0x2ff + .word 0x40000008 + .word 0x2ff + .word 0x3ee6001 + .word 0x2ff + .word 0x45400000 + .word 0x80214a57 + .word 0x400007c1 + .word 0x180421f + .word 0x80000030 + .word 0x2ff + .word 0x44800000 + .word 0x800002ff + .word 0x45400000 + .word 0x81804a5d + .word 0x400007dc + .word 0x1804a5f + .word 0xa200001 + .word 0x2ff + .word 0x5007104a + .word 0x2ff + .word 0x82f0084 + .word 0x2ff + .word 0x5206280d + .word 0x1f9dae8 + .word 0x80000030 + .word 0x2ff + .word 0x5207300b + .word 0x2ff + .word 0x800039b5 + .word 0x1fad66b + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80085bfc + .word 0x2ff + .word 0x802a5bfc + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x1f04002 + .word 0x1e05bd0 + .word 0x1ed4000 + .word 0x2ff + .word 0x40000032 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x81fb2b7c + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80085bfc + .word 0x2ff + .word 0x80295bfc + .word 0x2ff + .word 0x80000030 + .word 0x1fbd93c + .word 0x80000030 + .word 0x2ff + .word 0x1ec4002 + .word 0x1e05bd0 + .word 0x1ed4000 + .word 0x2ff + .word 0x52062803 + .word 0x1f9dae8 + .word 0x80000030 + .word 0x2ff + .word 0x5007301c + .word 0x2ff + .word 0x800039b5 + .word 0x1fad66b + .word 0x81fb2b7c + .word 0x2c613f + .word 0x1ee4001 + .word 0x2ff + .word 0x80085bfc + .word 0x2ff + .word 0x802a5bfc + .word 0x2ff + .word 0x3e96800 + .word 0x1fbd93c + .word 0x3e97001 + .word 0x2f6328 + .word 0x1f04002 + .word 0x1e05bd0 + .word 0x1ed4000 + .word 0x2ff + .word 0x52062806 + .word 0x1f9dae8 + .word 0x3e96002 + .word 0x2ff + .word 0x52073004 + .word 0x2ff + .word 0x800039b5 + .word 0x1fad66b + .word 0x81ec833c + .word 0x2ff + .word 0x4000000d + .word 0x2ff + .word 0x80005275 + .word 0x2ff + .word 0x81fb2b7c + .word 0x30813f + .word 0x1ee4001 + .word 0x2ff + .word 0x80085bfc + .word 0x2ff + .word 0x80295bfc + .word 0x2ff + .word 0x3ea6800 + .word 0x1fbd93c + .word 0x3ea7001 + .word 0x2f8428 + .word 0x1ec4002 + .word 0x1e05bd0 + .word 0x1ed4000 + .word 0x2ff + .word 0x52062fe8 + .word 0x1f9dae8 + .word 0x3ea8002 + .word 0x2ff + .word 0x520737e6 + .word 0x2ff + .word 0x800039b5 + .word 0x1fad66b + .word 0x80000030 + .word 0x2c613f + .word 0x1ee4001 + .word 0x2ff + .word 0x80085bfc + .word 0x2ff + .word 0x802a5bfc + .word 0x2ff + .word 0x3e96800 + .word 0x2ff + .word 0x3e97001 + .word 0x2f6328 + .word 0x1f04002 + .word 0x1e05bd0 + .word 0x1ed4000 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x3e96002 + .word 0x2ff + .word 0x80000030 + .word 0x30813f + .word 0x1ee4001 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x3ea6800 + .word 0x2ff + .word 0x3ea7001 + .word 0x2f8428 + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x3ea8002 + .word 0x2ff + .word 0x52007804 + .word 0x2ff + .word 0x80000030 + .word 0x2ff + .word 0x800026fc + .word 0x2ff + .word 0x80000030 + .word 0x400002ff + .word 0x80000030 + .word 0x2ff + .word 0x1f40084 + .word 0x2ff + .word 0x1f50001 + .word 0x2ff + .word 0x80010072 + .word 0x2ff + .word 0xb0127fe + .word 0x2ff + .word 0x10020047 + .word 0x1140513 + .word 0xa4227ff + .word 0x2ff + .word 0x2e4affe + .word 0x2ff + .word 0xa200084 + .word 0x2ff + .word 0x304a7ff + .word 0x2ff + .word 0x800427b2 + .word 0x2ff + .word 0x800026fc + .word 0x2ff + .word 0x80000030 + .word 0x400002ff + .word 0x80000030 + .word 0x2ff \ No newline at end of file