Update lowrisc_ibex to lowRISC/ibex@ee1098f

Update code from upstream repository
https://github.com/lowRISC/ibex.git to revision
ee1098f9afb1a63a34d613a8949c00e5b0c75b47

* Tracer: Reference Verilator bug for miscompilation (Philipp Wagner)
* Include rs1 and rd in trace of c.addi16sp (Philipp Wagner)
* [DV] Top level toggle coverage (lowRISC/ibex#371) (udinator)
* [Doc] Add more pipeline details (Greg Chadwick)
* [Doc] Fix for table wrapping in RTD theme (Greg Chadwick)
* Add missing enum cast (Philipp Wagner)
* [Doc] Fix some rendering issues in cs_registers (Tom Roberts)
* [RTL PMP] Fix address matching bugs (Tom Roberts)
* [Priv modes] Add support for U-Mode (Tom Roberts)
* RISC-V Compliance test: Enable tracing (Philipp Wagner)
* [DV] Update ibex log regex (lowRISC/ibex#366) (udinator)
* Tracer: Fix default file name (Philipp Wagner)
* CI: Also check tracer in lint (Philipp Wagner)
* Lint: Enable lint for ibex_core_tracing (Philipp Wagner)
* Update gitignore to include trace log file (Philipp Wagner)
* Document new tracer implementation (Philipp Wagner)
* Implement Verilator-compatible tracer, and use it (Philipp Wagner)
* Remove tracer testbench (Philipp Wagner)
* [RTL] Fix timing path around exceptions and pc_set (Greg Chadwick)
* [RTL] Keep instr in ID valid for FLUSH state (Greg Chadwick)
* Pull `csr_we_int` around case in CSR (Marek PikuĊ‚a)
* CI: Unbreak build after simplesat breakage (Philipp Wagner)
* Docs: Fix Sphinx warnings and errors (Philipp Wagner)
* [DV] Debug single step test (lowRISC/ibex#362) (udinator)
* Add more parameters to core file (Philipp Wagner)
* ibex_core_tracing: Pass through all parameters (Philipp Wagner)
* ibex_core: Use correct width for param assignments (Philipp Wagner)
* Tracer: Update copyright notice to match other files (Philipp
  Wagner)
* [Prefetch buffer] - various bug fixes (Tom Roberts)
* [DV]Add Makefile target for functional coverage (lowRISC/ibex#358)
  (taoliug)
* [rtl/ibex_core] Added missing parameter assignment
  (lowRISC/ibex#356) (NilsGraf)
* [DV] Fix ovpsim compare issue (lowRISC/ibex#355) (udinator)
* [DV] Refactor debug stress stimulus to avoid race conditions
  (lowRISC/ibex#354) (udinator)
* Update google_riscv-dv to google/riscv-dv@d341944 (lowRISC/ibex#353)
  (udinator)
* [DV] Basic performance test (lowRISC/ibex#352) (udinator)
* Tighten debug stimulus assertion (lowRISC/ibex#351) (udinator)
* Update google_riscv-dv to google/riscv-dv@e3e1e30 (lowRISC/ibex#349)
  (udinator)
* Update google_riscv-dv to google/riscv-dv@4450592 (lowRISC/ibex#347)
  (udinator)
* [DV] Fix implemented_csr[] compile issue (lowRISC/ibex#346)
  (udinator)
* [DV] Update implemented CSRs (lowRISC/ibex#345) (udinator)
* Fix memory error test logic (lowRISC/ibex#344) (udinator)
* Tracing: Wrap fatal error message with `$fatal()` (Pirmin Vogel)
* [DV] Illegal instruction monitoring (lowRISC/ibex#338) (udinator)
* [DV] Shorten length of interrupt tests to prevent timeouts
  (lowRISC/ibex#337) (udinator)
* [DV] Drive external stimulus to 0 after reset (lowRISC/ibex#334)
  (udinator)
* Update google_riscv-dv to google/riscv-dv@80d4294 (lowRISC/ibex#333)
  (udinator)
* Add memory error testing (lowRISC/ibex#330) (udinator)
* Compliance test suite: Prefer D over I accesses (Philipp Wagner)
* Consolidate the script logging (lowRISC/ibex#329) (taoliug)
* Add dsim support (lowRISC/ibex#328) (taoliug)
* Lint: Enable RVFI when doing lint checks (Philipp Wagner)
* Lint: Fix signal width in tracer (Philipp Wagner)
* Ignore common editor files in Git (Philipp Wagner)
* Add interrupt testing, and update some debug test checks
  (lowRISC/ibex#324) (udinator)
* Integrate with the new riscv-dv user extension flow
  (lowRISC/ibex#323) (taoliug)
* Update google_riscv-dv to google/riscv-dv@0d2b5b7 (lowRISC/ibex#321)
  (udinator)
* ibex_riscv_compliance: Adjust to simutil_verilator (Philipp Wagner)
* simutil_verilator: Always produce toplevel class (Philipp Wagner)
* [DV] Fix latch in simple bus (Greg Chadwick)
* [DV] Standardize logging, allow parallel simulation
  (lowRISC/ibex#315) (taoliug)
* Fix ELF section name (lowRISC/ibex#314) (taoliug)
* Fix regression failure (lowRISC/ibex#313) (taoliug)
* Update google_riscv-dv to google/riscv-dv@c98d89c (lowRISC/ibex#312)
  (udinator)
diff --git a/hw/vendor/lowrisc_ibex.lock.hjson b/hw/vendor/lowrisc_ibex.lock.hjson
index acd95e5..9dc6ae6 100644
--- a/hw/vendor/lowrisc_ibex.lock.hjson
+++ b/hw/vendor/lowrisc_ibex.lock.hjson
@@ -9,6 +9,6 @@
   upstream:
   {
     url: https://github.com/lowRISC/ibex.git
-    rev: f025236a22e4d2290acf856de60449f24d79bc6f
+    rev: ee1098f9afb1a63a34d613a8949c00e5b0c75b47
   }
 }
diff --git a/hw/vendor/lowrisc_ibex/.gitignore b/hw/vendor/lowrisc_ibex/.gitignore
index 8b9e9c8..fd37ef5 100644
--- a/hw/vendor/lowrisc_ibex/.gitignore
+++ b/hw/vendor/lowrisc_ibex/.gitignore
@@ -1,3 +1,10 @@
-*.swp
-include/riscv_config.sv.bak
+# Build output
 build
+
+# Common editor/IDE config and temporary files
+.project
+.vscode/
+.sw[a-p]
+
+# ibex_tracer log file
+trace_core_*.log
diff --git a/hw/vendor/lowrisc_ibex/azure-pipelines.yml b/hw/vendor/lowrisc_ibex/azure-pipelines.yml
index e95f9f1..d559403 100644
--- a/hw/vendor/lowrisc_ibex/azure-pipelines.yml
+++ b/hw/vendor/lowrisc_ibex/azure-pipelines.yml
@@ -31,6 +31,9 @@
   # Installing six is a workaround for pip dependency resolution: six is already
   # installed as system package with a version below the required one.
   # Explicitly installing six through pip gets us a supported version.
+  #
+  # attrs is correctly declared as dependency, but currently broken.
+  # Tracked in https://github.com/enthought/sat-solver/issues/270
   - bash: |
       sudo apt-get install -y \
           python3 \
@@ -45,7 +48,7 @@
           flex \
           bison \
           curl \
-        && sudo pip3 install -U six fusesoc
+        && sudo pip3 install -U six attrs==19.1.0 fusesoc
     displayName: Install dependencies
 
   - bash: |
@@ -86,10 +89,10 @@
     displayName: Display environment
 
   - bash: |
-      fusesoc --cores-root . run --target=lint lowrisc:ibex:ibex_core
+      fusesoc --cores-root . run --target=lint lowrisc:ibex:ibex_core_tracing
       if [ $? != 0 ]; then
         echo -n "##vso[task.logissue type=error]"
-        echo "Verilog lint failed. Run 'fusesoc --cores-root . run --target=lint lowrisc:ibex:ibex_core' to check and fix all errors."
+        echo "Verilog lint failed. Run 'fusesoc --cores-root . run --target=lint lowrisc:ibex:ibex_core_tracing' to check and fix all errors."
         exit 1
       fi
     displayName: Lint Verilog source files with Verilator
@@ -115,7 +118,7 @@
       export RISCV_DEVICE=rv32imc
       fail=0
       for isa in rv32i rv32im rv32imc; do
-        make -C build/riscv-compliance RISCV_ISA=$isa 2>&1 | tee run.log 
+        make -C build/riscv-compliance RISCV_ISA=$isa 2>&1 | tee run.log
         if [ ${PIPESTATUS[0]} != 0 ]; then
           echo -n "##vso[task.logissue type=error]"
           echo "The RISC-V compliance test suite failed for $isa"
diff --git a/hw/vendor/lowrisc_ibex/doc/_static/theme_overrides.css b/hw/vendor/lowrisc_ibex/doc/_static/theme_overrides.css
new file mode 100644
index 0000000..63ee6cc
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/doc/_static/theme_overrides.css
@@ -0,0 +1,13 @@
+/* override table width restrictions */
+@media screen and (min-width: 767px) {
+
+   .wy-table-responsive table td {
+      /* !important prevents the common CSS stylesheets from overriding
+         this as on RTD they are loaded after this stylesheet */
+      white-space: normal !important;
+   }
+
+   .wy-table-responsive {
+      overflow: visible !important;
+   }
+}
diff --git a/hw/vendor/lowrisc_ibex/doc/conf.py b/hw/vendor/lowrisc_ibex/doc/conf.py
index 47ab96a..de2a370 100644
--- a/hw/vendor/lowrisc_ibex/doc/conf.py
+++ b/hw/vendor/lowrisc_ibex/doc/conf.py
@@ -103,7 +103,13 @@
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
+html_static_path = ['_static']
+
+html_context = {
+    'css_files' : [
+        '_static/theme_overrides.css', # Fix wide tables in RTD theme
+        ],
+    }
 
 # -- Options for HTMLHelp output ------------------------------------------
 
diff --git a/hw/vendor/lowrisc_ibex/doc/cs_registers.rst b/hw/vendor/lowrisc_ibex/doc/cs_registers.rst
index 9f29a7c..978aca7 100644
--- a/hw/vendor/lowrisc_ibex/doc/cs_registers.rst
+++ b/hw/vendor/lowrisc_ibex/doc/cs_registers.rst
@@ -90,18 +90,24 @@
 +-------+-----+---------------------------------------------------------------------------------+
 | Bit#  | R/W | Description                                                                     |
 +-------+-----+---------------------------------------------------------------------------------+
-| 12:11 | R   | **MPP:** Statically 2'b11 and cannot be altered (read-only).                    |
+| 21    | RW  | **TW:** Timeout Wait (WFI executed in User Mode will trap to Machine Mode).     |
++-------+-----+---------------------------------------------------------------------------------+
+| 17    | RW  | **MPRV:** Modify Privilege (Loads and stores use MPP for privilege checking).   |
++-------+-----+---------------------------------------------------------------------------------+
+| 12:11 | RW  | **MPP:** Machine Previous Privilege mode.                                       |
 +-------+-----+---------------------------------------------------------------------------------+
 | 7     | RW  | **Previous Interrupt Enable (MPIE)**, i.e., before entering exception handling. |
 +-------+-----+---------------------------------------------------------------------------------+
 | 3     | RW  | **Interrupt Enable (MIE):** If set to 1'b1, interrupts are globally enabled.    |
 +-------+-----+---------------------------------------------------------------------------------+
 
-When an exception is encountered, ``mstatus``.MPIE will be set to ``mstatus``.MIE.
-When the MRET instruction is executed, the value of MPIE will be stored back to ``mstatus``.MIE.
+When an exception is encountered, ``mstatus``.MPIE will be set to ``mstatus``.MIE, and ``mstatus``.MPP will be set to the current privilege mode.
+When the MRET instruction is executed, the value of MPIE will be stored back to ``mstatus``.MIE, and the privilege mode will be restored from ``mstatus``.MPP.
 
 If you want to enable interrupt handling in your exception handler, set ``mstatus``.MIE to 1'b1 inside your handler code.
 
+Only Machine Mode and User Mode are supported.
+Any write to ``mstatus``.MPP of an unsupported value will be interpreted as Machine Mode.
 
 Machine ISA Register (misa)
 ---------------------------
@@ -225,7 +231,7 @@
 +-------+---------------------------------------------------------------------------------------+
 
 PMP Configuration Register (pmpcfgx)
-----------------------------------------
+------------------------------------
 
 CSR Address: ``0x3A0 - 0x3A3``
 
@@ -233,11 +239,11 @@
 
 ``pmpcfgx`` are registers to configure PMP regions. Each register configures 4 PMP regions.
 
-+---------------------------------------+
++---------+---------+---------+---------+
 |  31:24  |  23:16  |  15:8   |   7:0   |
-+---------------------------------------+
++---------+---------+---------+---------+
 | pmp3cfg | pmp2cfg | pmp1cfg | pmp0cfg |
-+---------------------------------------+
++---------+---------+---------+---------+
 
 The configuration fields for each region are as follows:
 
@@ -262,7 +268,7 @@
 Note that the combination of Write permission = 1, Read permission = 0 is reserved, and will be treated by the core as Read/Write permission = 0.
 
 PMP Address Register (pmpaddrx)
-----------------------------------------
+-------------------------------
 
 CSR Address: ``0x3B0 - 0x3BF``
 
@@ -276,6 +282,15 @@
 | address[33:2]  |
 +----------------+
 
+Time Registers (time(h))
+------------------------
+
+CSR Address: ``0xC01 / 0xC81``
+
+The User Mode ``time(h)`` registers are not implemented in Ibex.
+Any access to these registers will trap.
+It is recommended that trap handler software provides a means of accessing platform-defined ``mtime(h)`` timers where available.
+
 .. _csr-mhartid:
 
 Hardware Thread ID (mhartid)
diff --git a/hw/vendor/lowrisc_ibex/doc/exception_interrupts.rst b/hw/vendor/lowrisc_ibex/doc/exception_interrupts.rst
index 99be67e..3f9a0fb 100644
--- a/hw/vendor/lowrisc_ibex/doc/exception_interrupts.rst
+++ b/hw/vendor/lowrisc_ibex/doc/exception_interrupts.rst
@@ -15,6 +15,12 @@
 The core starts fetching at the address made by concatenating the most significant 3 bytes of the boot address and the reset value (0x80) as the least significant byte.
 It is assumed that the boot address is supplied via a register to avoid long paths to the instruction fetch unit.
 
+Privilege Modes
+---------------
+
+Ibex supports operation in Machine Mode (M-Mode) and User Mode (U-Mode).
+The core resets into M-Mode and will jump to M-Mode on any interrupt or exception.
+On execution of an MRET instruction, the core will return to the Privilege Mode stored in ``mstatus``.MPP.
 
 Interrupts
 ----------
@@ -80,7 +86,9 @@
 +----------------+---------------------------------------------------------------+
 |              7 | Store access fault                                            |
 +----------------+---------------------------------------------------------------+
-|             11 | Environment call from M-mode (ECALL)                          |
+|              8 | Environment call from U-Mode (ECALL)                          |
++----------------+---------------------------------------------------------------+
+|             11 | Environment call from M-Mode (ECALL)                          |
 +----------------+---------------------------------------------------------------+
 
 The illegal instruction exception, instruction access fault, LSU error exceptions and ECALL instruction exceptions cannot be disabled and are always active.
diff --git a/hw/vendor/lowrisc_ibex/doc/images/blockdiagram.svg b/hw/vendor/lowrisc_ibex/doc/images/blockdiagram.svg
index b8421a3..60ef641 100644
--- a/hw/vendor/lowrisc_ibex/doc/images/blockdiagram.svg
+++ b/hw/vendor/lowrisc_ibex/doc/images/blockdiagram.svg
@@ -183,19 +183,19 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="0.84532862"
-     inkscape:cx="549.42368"
-     inkscape:cy="100.13996"
+     inkscape:zoom="10.42572"
+     inkscape:cx="274.44948"
+     inkscape:cy="133.08434"
      inkscape:document-units="mm"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:snap-bbox="false"
      inkscape:snap-text-baseline="true"
-     inkscape:window-width="1853"
-     inkscape:window-height="1025"
-     inkscape:window-x="67"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
+     inkscape:window-width="3440"
+     inkscape:window-height="1416"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
      inkscape:snap-object-midpoints="true"
      fit-margin-top="0"
      fit-margin-left="0"
@@ -466,15 +466,15 @@
        y="243.02469"
        id="text959-9"><tspan
          sodipodi:role="line"
-         id="tspan957-2"
          x="56.885418"
          y="243.02469"
-         style="stroke-width:0.26458332px">IF</tspan><tspan
+         style="stroke-width:0.26458332px"
+         id="tspan1288">ID</tspan><tspan
          sodipodi:role="line"
          x="56.885418"
          y="247.98563"
          style="stroke-width:0.26458332px"
-         id="tspan1288">IDE</tspan></text>
+         id="tspan1260">EX</tspan></text>
     <path
        style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        d="m 33.072917,245.40625 1.322917,-3.175 1.322917,3.175 z"
diff --git a/hw/vendor/lowrisc_ibex/doc/images/de_ex_stage.svg b/hw/vendor/lowrisc_ibex/doc/images/de_ex_stage.svg
new file mode 100644
index 0000000..5b0d1eb
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/doc/images/de_ex_stage.svg
@@ -0,0 +1,1128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="163mm"
+   height="82.550011mm"
+   viewBox="0 0 163 82.550011"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="de_ex_stage.svg">
+  <defs
+     id="defs2">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4774">
+      <stop
+         style="stop-color:#e53651;stop-opacity:1;"
+         offset="0"
+         id="stop4770" />
+      <stop
+         style="stop-color:#e53651;stop-opacity:0;"
+         offset="1"
+         id="stop4772" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4711"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4702"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4699"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,5.92,0.8)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM-5"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4702-6"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM-2"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4711-9"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM-5-2"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4702-6-7"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM-2-0"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4711-9-9"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM-2"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4702-0"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM-23"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4711-7"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4774"
+       id="linearGradient4776"
+       x1="52.916668"
+       y1="212.33333"
+       x2="173.30208"
+       y2="212.33333"
+       gradientUnits="userSpaceOnUse" />
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath2644">
+      <rect
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-opacity:1"
+         id="rect2646"
+         width="173.30208"
+         height="96.572914"
+         x="29.104168"
+         y="195.13542" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.309052"
+     inkscape:cx="395.04431"
+     inkscape:cy="161.47566"
+     inkscape:document-units="mm"
+     inkscape:current-layer="g2586"
+     showgrid="true"
+     inkscape:snap-bbox="false"
+     inkscape:snap-text-baseline="true"
+     inkscape:window-width="3440"
+     inkscape:window-height="1416"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:snap-object-midpoints="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid815"
+       originx="8.1359377"
+       originy="-12.964578" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(8.1359365,-201.48542)">
+    <g
+       id="g2586"
+       clip-path="url(#clipPath2644)"
+       transform="translate(-37.041665)">
+      <rect
+         ry="1.3229218"
+         y="201.75"
+         x="51.59375"
+         height="82.020836"
+         width="112.44791"
+         id="rect4554-36-6-2"
+         style="fill:url(#linearGradient4776);fill-opacity:1;stroke:none;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="201.75"
+         x="13.229165"
+         height="82.020836"
+         width="39.6875"
+         id="rect4554-36-6"
+         style="fill:#e53651;fill-opacity:1;stroke:none;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="201.75"
+         x="13.229167"
+         height="82.020844"
+         width="150.8125"
+         id="rect4554-36"
+         style="fill:none;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.52916676;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="266.57291"
+         x="127"
+         height="13.229177"
+         width="13.229167"
+         id="rect4554-36-7-5"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text951-3"
+         y="274.51041"
+         x="129.91054"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="274.51041"
+           x="129.91054"
+           id="tspan949-5"
+           sodipodi:role="line">CSR</tspan></text>
+      <rect
+         ry="0"
+         y="214.97917"
+         x="70.114586"
+         height="64.822914"
+         width="51.593746"
+         id="rect4554-36-7-5-6-1"
+         style="fill:#ffe0e5;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.26499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-1-0-0-7-4-6"
+         y="236.1458"
+         x="106.3625"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="236.1458"
+           x="106.3625"
+           id="tspan957-9-8-2-6-4-4-88"
+           sodipodi:role="line">IM</tspan></text>
+      <text
+         id="text959-2-2"
+         y="221.59375"
+         x="74.083336"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="221.59375"
+           x="74.083336"
+           id="tspan957-9-7"
+           sodipodi:role="line">ID Stage</tspan></text>
+      <rect
+         ry="0"
+         y="214.97917"
+         x="127"
+         height="47.624996"
+         width="31.75"
+         id="rect4554-36-7-5-6-1-0"
+         style="fill:#ffe0e5;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-2-9"
+         y="221.59375"
+         x="130.96875"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="221.59375"
+           x="130.96875"
+           id="tspan957-9-7-3"
+           sodipodi:role="line">EX Block</tspan></text>
+      <rect
+         ry="0"
+         y="214.97917"
+         x="55.5625"
+         height="64.822914"
+         width="9.260417"
+         id="rect4554-36-7-5-6-5"
+         style="fill:#ffe0e5;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.26499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-9"
+         y="243.02469"
+         x="56.885418"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan1288"
+           style="stroke-width:0.26458332px"
+           y="243.02469"
+           x="56.885418"
+           sodipodi:role="line">ID</tspan><tspan
+           style="stroke-width:0.26458332px"
+           y="247.98563"
+           x="56.885418"
+           sodipodi:role="line"
+           id="tspan998">EX</tspan></text>
+      <path
+         inkscape:connector-curvature="0"
+         id="path1294-3"
+         d="m 59.002083,279.80206 1.322917,-3.175 1.322917,3.175 z"
+         style="fill:none;fill-rule:evenodd;stroke:#6c0e1d;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="228.20833"
+         x="74.083336"
+         height="13.229172"
+         width="25.135414"
+         id="rect4554-36-7-5-6-6-6"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.52916676;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-0-1"
+         y="234.82292"
+         x="76.729172"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan1150-9"
+           style="stroke-width:0.26458332px"
+           y="234.82292"
+           x="76.729172"
+           sodipodi:role="line">Decoder</tspan></text>
+      <path
+         inkscape:connector-curvature="0"
+         id="path1294-31"
+         d="m 85.460418,241.4375 1.322916,-3.175 1.322918,3.175 z"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="245.40625"
+         x="74.083336"
+         height="13.229167"
+         width="25.135414"
+         id="rect4554-36-7-5-6-6-6-9"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-0-1-4"
+         y="252.02084"
+         x="76.729172"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan1150-9-7"
+           style="stroke-width:0.26458332px"
+           y="252.02084"
+           x="76.729172"
+           sodipodi:role="line">Controller</tspan></text>
+      <path
+         inkscape:connector-curvature="0"
+         id="path1294-31-8"
+         d="m 85.460416,258.63542 1.322915,-3.175 1.322919,3.175 z"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="262.60416"
+         x="74.083328"
+         height="13.229167"
+         width="25.135414"
+         id="rect4554-36-7-5-6-6-6-9-4"
+         style="fill:#f08c9b;fill-opacity:1;stroke:#000000;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-0-1-4-5"
+         y="269.21875"
+         x="76.199997"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan1150-9-7-0"
+           style="stroke-width:0.26458332px"
+           y="269.21875"
+           x="76.199997"
+           sodipodi:role="line">Reg File</tspan></text>
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path1294-31-8-3"
+         d="m 85.460409,275.83334 8e-6,-2.64584 h 2.645833 l -7e-6,2.64584 z"
+         style="fill:#fffffb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="1.3229218"
+         y="228.20833"
+         x="130.96875"
+         height="13.229172"
+         width="22.489584"
+         id="rect4554-36-7-5-6-1-0-6"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-2-9-1"
+         y="236.14583"
+         x="139.43541"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="236.14583"
+           x="139.43541"
+           id="tspan957-9-7-3-0"
+           sodipodi:role="line">ALU</tspan></text>
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-63"
+         d="m 129.64583,233.76458 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2"
+         d="m 129.64583,237.73333 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <text
+         id="text959-2-1-0-0"
+         y="233.76457"
+         x="133.08542"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666679px;stroke-width:0.26458332px"
+           y="233.76457"
+           x="133.08542"
+           id="tspan957-9-8-2-6"
+           sodipodi:role="line">OpA</tspan></text>
+      <text
+         id="text959-2-1-0-0-1"
+         y="237.73332"
+         x="133.08542"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666703px;stroke-width:0.26458332px"
+           y="237.73332"
+           x="133.08542"
+           id="tspan957-9-8-2-6-5"
+           sodipodi:role="line">OpB</tspan></text>
+      <rect
+         ry="1.3229218"
+         y="245.40625"
+         x="130.96875"
+         height="14.552083"
+         width="22.489584"
+         id="rect4554-36-7-5-6-1-0-6-5"
+         style="fill:#f08c9b;fill-opacity:1;stroke:#000000;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text959-2-2-9-1-4"
+         y="250.96251"
+         x="138.11249"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="250.96251"
+           x="138.11249"
+           id="tspan957-9-7-3-0-7"
+           sodipodi:role="line">MULT</tspan><tspan
+           id="tspan1532"
+           style="stroke-width:0.26458332px"
+           y="255.92345"
+           x="138.11249"
+           sodipodi:role="line">DIV</tspan></text>
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-5-6"
+         d="m 100.54167,273.71667 v -1.5875 h -2.116668 l -0.79376,0.79375 0.79376,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-63-6-9"
+         d="M 97.895833,266.8375 V 265.25 h 2.116667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-5-3"
+         d="m 97.895833,269.74792 v -1.5875 h 2.116667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <text
+         id="text959-2-1-0-0-7"
+         y="266.83749"
+         x="92.868752"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666703px;stroke-width:0.26458332px"
+           y="266.83749"
+           x="92.868752"
+           id="tspan957-9-8-2-6-4"
+           sodipodi:role="line">RdA</tspan></text>
+      <text
+         id="text959-2-1-0-0-7-5"
+         y="269.74792"
+         x="92.868752"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="269.74792"
+           x="92.868752"
+           id="tspan957-9-8-2-6-4-2"
+           sodipodi:role="line">RdB</tspan></text>
+      <text
+         id="text959-2-1-0-0-7-5-5"
+         y="273.71667"
+         x="93.397919"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="273.71667"
+           x="93.397919"
+           id="tspan957-9-8-2-6-4-2-4"
+           sodipodi:role="line">Wr</tspan></text>
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-63-6-9-7"
+         d="M 97.895833,235.0875 V 233.5 h 2.116667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <text
+         id="text959-2-1-0-0-7-4"
+         y="235.08745"
+         x="94.456253"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="235.08745"
+           x="94.456253"
+           id="tspan957-9-8-2-6-4-4"
+           sodipodi:role="line">IM</tspan></text>
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path1660"
+         d="m 105.83333,228.7375 v 13.22917 l 3.96875,-2.11667 v -8.99583 l -3.96875,-2.11667"
+         style="fill:#ffe0e5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text959-2-1-0-0-7-4-3"
+         y="232.97078"
+         x="106.3625"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="232.97078"
+           x="106.3625"
+           id="tspan957-9-8-2-6-4-4-0"
+           sodipodi:role="line">PC</tspan></text>
+      <text
+         id="text959-2-1-0-0-7-4-7"
+         y="239.58542"
+         x="106.3625"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="239.58542"
+           x="106.3625"
+           id="tspan957-9-8-2-6-4-4-8"
+           sodipodi:role="line">RF</tspan></text>
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path1660-4"
+         d="m 105.83333,245.40625 v 11.1125 l 3.96875,-2.11667 v -6.87916 l -3.96875,-2.11667"
+         style="fill:#ffe0e5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text959-2-1-0-0-7-4-7-4"
+         y="253.34375"
+         x="106.3625"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="253.34375"
+           x="106.3625"
+           id="tspan957-9-8-2-6-4-4-8-9"
+           sodipodi:role="line">RF</tspan></text>
+      <text
+         id="text959-2-1-0-0-7-4-6-2"
+         y="250.16875"
+         x="106.3625"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="250.16875"
+           x="106.3625"
+           id="tspan957-9-8-2-6-4-4-88-0"
+           sodipodi:role="line">IM</tspan></text>
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1729"
+         d="m 105.83333,235.61667 h -2.64583 v -1.32292 h -2.38125"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1731"
+         d="M 64.822916,225.5625 H 103.1875 v 6.61458 h 2.64583"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1733"
+         d="m 100.80625,266.04375 h 1.05833 v -27.25208 h 3.96875"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path1735"
+         d="M 105.83333,249.375 H 103.1875 V 235.61667"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <circle
+         r="0.13229166"
+         cy="235.61667"
+         cx="103.1875"
+         id="path1737"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1739"
+         d="m 100.80625,268.95417 h 2.38125 v -16.13959 h 2.64583"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path1660-4-6"
+         d="m 116.41667,229.26667 v 7.40833 l 3.96875,-2.11667 v -3.17499 l -3.96875,-2.11667"
+         style="fill:#ffe0e5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path1660-4-6-4"
+         d="m 116.41667,237.53826 v 7.40833 l 3.96875,-2.11667 v -3.17499 l -3.96875,-2.11667"
+         style="fill:#ffe0e5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1810"
+         d="m 109.80208,235.61667 h 2.64584 v -3.70417 h 3.96875"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1812"
+         d="m 120.38542,232.97084 h 2.64583 v -1e-5 h 6.61458"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-5-6-7"
+         d="m 128.05833,276.62708 v -1.5875 h -2.11667 l -0.79376,0.79375 0.79376,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <rect
+         ry="1.3229218"
+         y="266.57291"
+         x="145.52083"
+         height="13.229177"
+         width="13.229167"
+         id="rect4554-36-7-5-1"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text955"
+         y="274.51041"
+         x="148.16667"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="274.51041"
+           x="148.16667"
+           id="tspan953"
+           sodipodi:role="line">LSU</tspan></text>
+      <path
+         inkscape:connector-curvature="0"
+         id="path1294-31-8-7"
+         d="m 141.2875,259.95831 1.32292,-3.175 1.32292,3.175 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path1294-31-8-7-2"
+         d="m 150.8125,279.80208 1.32292,-3.175 1.32292,3.175 z"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path1294-31-8-7-7"
+         d="m 132.02708,279.80206 1.32292,-3.175 1.32292,3.175 z"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-2"
+         d="m 157.42708,269.21875 v 1.5875 h 2.11667 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-26"
+         d="m 160.07292,276.36251 v 1.5875 h -2.11667 l -0.79375,-0.79375 0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-2-1"
+         d="m 157.42708,272.12917 v 1.5875 h 2.11667 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <rect
+         ry="1.3229116"
+         y="230.85417"
+         x="182.56242"
+         height="52.916668"
+         width="7.9375772"
+         id="rect4554-36-7-5-6-2-0"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         transform="rotate(-90)"
+         id="text971-6"
+         y="187.85417"
+         x="-267.89584"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="187.85417"
+           x="-267.89584"
+           id="tspan969-1"
+           sodipodi:role="line">Data Mem</tspan></text>
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-2-4"
+         d="m 181.23962,269.21875 v 1.5875 h 2.11667 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-26-9"
+         d="m 183.88546,276.36251 v 1.5875 h -2.11667 l -0.79375,-0.79375 0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-2-1-0"
+         d="m 181.23962,272.12917 v 1.5875 h 2.11667 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path1188-2-9"
+         d="M 181.23958,270.0125 H 160.3375"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path1188-2-9-1"
+         d="M 181.23958,272.92292 H 160.3375"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path1188-2-9-7"
+         d="m 180.975,277.15625 -20.90209,10e-6"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text959-2-1-7"
+         y="268.86334"
+         x="164.83542"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.82222223px;stroke-width:0.26458332px"
+           y="268.86334"
+           x="164.83542"
+           id="tspan957-9-8-1"
+           sodipodi:role="line">addr_o</tspan></text>
+      <text
+         id="text959-2-1-7-1"
+         y="275.56882"
+         x="164.83542"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.82222223px;stroke-width:0.26458332px"
+           y="275.56882"
+           x="164.83542"
+           id="tspan957-9-8-1-5"
+           sodipodi:role="line">wdata_o</tspan></text>
+      <text
+         id="text959-2-1-7-1-9"
+         y="280.33139"
+         x="164.83542"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.82222223px;stroke-width:0.26458332px"
+           y="280.33139"
+           x="164.83542"
+           id="tspan957-9-8-1-5-7"
+           sodipodi:role="line">rdata_i</tspan></text>
+      <text
+         id="text2070"
+         y="209.6875"
+         x="70.114586"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
+           y="209.6875"
+           x="70.114586"
+           id="tspan2068"
+           sodipodi:role="line">Ibex Core</tspan></text>
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1812-7"
+         d="m 120.38542,241.17292 h 2.64583 v -4.23334 h 6.61458"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-7"
+         d="m 152.13542,235.61667 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-63-3"
+         d="m 152.13542,253.07917 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-6"
+         d="m 152.13542,257.57708 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-7-5"
+         d="m 152.13542,249.63958 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path2140"
+         d="m 109.80208,251.22708 h 2.64584 v -11.64167 h 3.96875"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path2142"
+         d="m 116.41667,234.29375 h -2.64584 v 13.75833 h 15.875 v -3.96875 h 26.45834 v 4.7625 h -1.05833"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path2144"
+         d="m 116.15208,242.76041 h -1.05833 v 3.96875 h 13.22917 v -3.96875 l 29.10416,1e-5 v 9.525 h -2.38125"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-63-6"
+         d="m 129.64583,251.22708 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-3"
+         d="m 129.64583,254.40208 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <text
+         id="text959-2-1-0-0-9"
+         y="251.22707"
+         x="133.08543"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666703px;stroke-width:0.26458332px"
+           y="251.22707"
+           x="133.08543"
+           id="tspan957-9-8-2-6-48"
+           sodipodi:role="line">OpA</tspan></text>
+      <text
+         id="text959-2-1-0-0-1-1"
+         y="254.40208"
+         x="133.08543"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="254.40208"
+           x="133.08543"
+           id="tspan957-9-8-2-6-5-2"
+           sodipodi:role="line">OpB</tspan></text>
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path2176"
+         d="m 101.86458,266.04375 h 11.90625 v -15.61042 h 15.875"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <circle
+         r="0.13229166"
+         cy="266.04376"
+         cx="101.86459"
+         id="path1737-9"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
+      <circle
+         r="0.13229166"
+         cy="268.95416"
+         cx="103.1875"
+         id="path1737-3"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path2199"
+         d="m 103.1875,268.95417 h 11.90625 v -15.34584 h 14.55208"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path1660-4-6-9"
+         d="m 109.80208,271.07083 v 7.40833 l -3.96875,-2.11667 v -3.17499 l 3.96875,-2.11667"
+         style="fill:#ffe0e5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path2216"
+         d="m 105.83333,274.775 h -2.64583 v -1.85208 h -2.64583"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path2218"
+         d="m 109.80208,275.83333 h 5.82084 3.70416 5.82084"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-5-6-7-0"
+         d="m 146.84375,277.95 v -1.5875 h -2.11667 l -0.79376,0.79375 0.79376,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path2235"
+         d="m 109.80208,277.15625 h 14.55209 V 281.125 H 142.875 v -3.96875 h 1.05833"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path2239"
+         d="m 155.04583,256.78333 h 5.02709 v 7.14375 h -42.33334 v 9.26042 h -7.9375"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path2241"
+         d="m 155.04583,234.82292 h 6.35 V 265.25 H 119.0625 v 9.26042 h -9.26042"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-2-3-0"
+         d="m 129.64583,257.57708 v -1.5875 h 2.11667 l 0.79375,0.79375 -0.79375,0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path2288"
+         d="m 125.67708,265.25 v -8.46667 h 3.96875"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <circle
+         r="0.13229166"
+         cy="265.25"
+         cx="125.67709"
+         id="path1737-9-9"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path2320"
+         d="m 21.166668,281.12501 33.072915,-10e-6 H 119.0625 v -6.61458"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <circle
+         r="0.13229166"
+         cy="274.51041"
+         cx="119.06251"
+         id="path1737-9-9-5"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path2367-5"
+         d="m 64.822917,234.29375 h 7.9375"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-6-1-9"
+         d="m 72.892712,233.5 10e-7,1.5875 h 2.116666 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <path
+         id="path2580"
+         d="m 136.4242,205.76336 c 0.0485,0.083 -0.0483,4.72377 -0.083,5.25611 0,0 -0.93366,0.007 -0.98891,-0.0275 -0.0553,-0.0417 -0.0553,-5.11111 0.0485,-5.20086 0.0965,-0.09 1.00267,-0.0762 1.02341,-0.0278 m 5.26246,1.71513 c 0.083,0 0.58102,2.27563 0.58102,2.27563 0.17294,-0.53975 0.53256,-1.3625 0.60855,-1.6256 -0.0343,-0.11748 -0.15897,-0.44958 -0.15897,-0.52536 0.0692,-0.0692 0.87144,-0.1524 0.95441,-0.10392 0.0692,0.0417 0.60156,2.13021 0.63627,2.24092 0.0415,-0.11071 0.66379,-2.26844 0.6985,-2.27543 0.0417,-0.006 1.00986,0.20067 1.00288,0.24215 -0.0967,0.43561 -1.09263,3.27131 -1.12734,3.30602 -0.09,0.076 -1.08606,-0.014 -1.09284,-0.0345 -0.007,-0.006 -0.2487,-0.72623 -0.47032,-1.61841 -0.29739,0.87165 -0.62251,1.63217 -0.63627,1.65312 -0.0902,0.076 -1.08585,-0.014 -1.09283,-0.0279 -0.007,-0.0135 -0.91292,-3.09139 -0.90594,-3.30601 0,-0.0487 0.91313,-0.20067 1.00288,-0.20067 m 4.8061,3.50647 c -0.0345,-0.32491 -0.007,-4.32943 0.0555,-4.80652 0.35285,-0.0417 1.09982,-0.0762 1.63936,-0.0762 1.32779,0 2.08852,0.52536 2.08852,1.68063 0,0.71925 -0.33888,1.14109 -0.87821,1.3625 0.52557,0.63627 1.06511,1.47997 1.04415,1.5077 -0.076,0.10372 -0.87143,0.43561 -1.07886,0.42884 -0.0207,0 -0.62251,-0.97515 -1.19655,-1.72932 -0.0277,0.007 -0.0622,0.007 -0.09,0.007 -0.11769,0 -0.28364,-0.007 -0.36661,-0.0138 -0.007,0.4773 -0.007,1.41773 -0.0345,1.6184 -0.0692,0.0278 -1.17581,0.0622 -1.18279,0.0207 m 1.78435,-2.57979 c 0.44958,0 0.76094,-0.17992 0.76094,-0.59479 0,-0.38735 -0.20066,-0.63627 -0.80222,-0.63627 -0.13144,0 -0.31834,0.006 -0.45656,0.0207 0.007,0.18669 0,0.94763 0,1.18957 0.13123,0.014 0.33866,0.0207 0.49784,0.0207 m 4.02463,-2.25467 c 0.0483,0.29061 0.0417,4.37112 -0.007,4.81372 -0.0415,0.12446 -1.22407,0.0762 -1.23106,0.0278 -0.0277,-0.49086 -0.0483,-4.16348 0.007,-4.82748 0.2212,-0.0832 1.18936,-0.0553 1.23085,-0.014 m 0.6913,4.35715 c -0.0277,-0.13843 0.31115,-1.02362 0.38735,-0.98891 0.15896,0.0969 0.67776,0.47054 1.26577,0.47054 0.40809,0 0.67098,-0.12467 0.67098,-0.42186 0,-0.22119 -0.16616,-0.38734 -0.87842,-0.53255 -0.90588,-0.18669 -1.41092,-0.60853 -1.41092,-1.51468 0,-0.78846 0.64326,-1.4732 1.81208,-1.4732 0.73322,0 1.34874,0.19388 1.61841,0.40809 0.0902,0.0692 -0.32491,0.96838 -0.39413,0.96139 -0.10393,-0.0482 -0.60875,-0.30437 -1.19655,-0.30437 -0.41487,0 -0.60875,0.16616 -0.60875,0.39433 0,0.21421 0.11768,0.32491 0.78846,0.4771 0.89196,0.20743 1.58369,0.56705 1.58369,1.51469 0,0.7332 -0.5878,1.50071 -1.93654,1.50071 -0.7747,-2.1e-4 -1.45246,-0.30438 -1.70138,-0.49128 m 6.52145,-0.56705 c 0.56028,0 0.94065,-0.29718 1.09262,-0.4081 0.15918,0.11071 0.46355,0.67077 0.57404,0.90594 -0.29739,0.33887 -0.99589,0.67098 -1.79133,0.67098 -1.6184,0 -2.37236,-1.15485 -2.37236,-2.60054 0,-1.39022 0.98213,-2.4621 2.55206,-2.4621 0.79545,0 1.36928,0.24892 1.58369,0.45656 0,0.13822 -0.2904,0.88519 -0.46333,1.0306 -0.24892,-0.14541 -0.67078,-0.3321 -1.1066,-0.3321 -0.71226,0 -1.26555,0.56727 -1.26555,1.35573 2.1e-4,0.9889 0.60875,1.38303 1.19676,1.38303 M 139.3958,208.8629 c 0.0868,0.13208 0.13801,0.28956 0.13801,0.45931 a 0.8382,0.8382 0 1 1 -0.8382,-0.8382 c 0.14795,0 0.28469,0.0417 0.40534,0.1088 l 0.704,-0.704 c -0.30353,-0.2358 -0.69257,-0.36152 -1.11972,-0.36152 -1.07886,0 -1.74307,0.85068 -1.74307,1.71534 0,1.12713 0.7747,1.8051 1.75683,1.8051 1.1066,-0.0207 1.74985,-0.82318 1.74985,-1.71536 0,-0.47328 -0.1361,-0.86317 -0.36343,-1.15887 z m -5.23346,-1.23401 -3.3456,3.34539 c 0.25103,0.35411 0.20701,0.85682 -0.1342,1.15717 -0.33337,0.29338 -0.85577,0.28173 -1.17623,-0.0256 a 0.87270168,0.87270168 0 0 1 -0.0133,-1.24332 c 0.30353,-0.30354 0.77936,-0.33402 1.11866,-0.0934 l 3.47366,-3.47344 c -0.52493,-1.93294 -2.29108,-3.35471 -4.39018,-3.35471 -2.3006,0 -4.20116,1.70773 -4.50596,3.92451 l 1.02849,-1.02848 a 0.38629166,0.38629166 0 0 1 0.27305,-0.11324 h 1.20078 c 0.0699,-0.41 0.42799,-0.72517 0.85704,-0.72517 0.34396,0 0.66802,0.19621 0.7982,0.51456 0.25506,0.62336 -0.20468,1.22555 -0.7982,1.22555 -0.42905,0 -0.78719,-0.31496 -0.85704,-0.72518 h -1.13833 a 0.24765,0.24765 0 0 0 -0.17484,0.0724 l -1.22851,1.22873 c -0.002,0.0589 -0.005,0.11705 -0.005,0.17611 0,0.6968 0.15705,1.35699 0.4373,1.94733 l 0.92202,-0.92202 c -0.24067,-0.33931 -0.21019,-0.81513 0.0931,-1.11866 a 0.87249,0.87249 0 0 1 1.23042,0 0.87270168,0.87270168 0 0 1 0,1.23063 c -0.30332,0.30332 -0.77936,0.33401 -1.11866,0.0931 l -0.987,0.987 a 4.5684017,4.5684017 0 0 0 1.10215,1.3098 l 3.91773,-3.91774 c 0.0436,-0.0436 0.0682,-0.10308 0.0682,-0.16489 v -1.52569 c -0.42841,-0.0728 -0.75353,-0.46101 -0.72305,-0.91567 0.0292,-0.43942 0.40111,-0.79756 0.84159,-0.8109 a 0.87249,0.87249 0 0 1 0.89662,0.86974 c 0,0.42926 -0.31496,0.7874 -0.72517,0.85704 v 1.57818 c 0,0.1052 -0.0417,0.20617 -0.116,0.28047 l -3.92726,3.92705 a 4.5247983,4.5247983 0 0 0 2.63779,0.84518 c 2.5127,0 4.54999,-2.03708 4.54999,-4.54998 a 4.5698834,4.5698834 0 0 0 -0.0828,-0.86191"
+         style="fill:#ffffff;stroke-width:0.21166666"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path1235-4"
+         d="m 179.91667,276.09791 -1.32292,2.11667"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <text
+         id="text959-2-1-0-3-4"
+         y="280.33124"
+         x="176.47708"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666679px;stroke-width:0.26458332px"
+           y="280.33124"
+           x="176.47708"
+           id="tspan957-9-8-2-7-7"
+           sodipodi:role="line">32</tspan></text>
+      <path
+         inkscape:connector-curvature="0"
+         id="path1235-6"
+         d="m 179.78437,271.86458 -1.32292,2.11667"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <text
+         id="text959-2-1-0-3-3"
+         y="272.39374"
+         x="176.47708"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666679px;stroke-width:0.26458332px"
+           y="272.39374"
+           x="176.47708"
+           id="tspan957-9-8-2-7-1"
+           sodipodi:role="line">32</tspan></text>
+      <text
+         id="text959-2-1-0-0-7-4-6-2-3"
+         y="236.41043"
+         x="106.3625"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.11666727px;stroke-width:0.26458332px"
+           y="236.41043"
+           x="106.3625"
+           id="tspan957-9-8-2-6-4-4-88-0-6"
+           sodipodi:role="line">IM</tspan></text>
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path1188-2-5"
+         d="M 73.025001,252.28543 H 66.145835 V 213.65626 H -5.2916653"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path1152-6-9-7"
+         d="m 73.025001,251.49168 10e-7,1.5875 h 2.116666 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" />
+      <text
+         id="text959-2-1-9"
+         y="212.33334"
+         x="30.427084"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.82222223px;stroke-width:0.26458332px"
+           y="212.33334"
+           x="30.427084"
+           id="tspan957-9-8-12"
+           sodipodi:role="line">debug_req_i</tspan></text>
+      <text
+         id="text959-2-1-9-3"
+         y="279.80209"
+         x="30.427084"
+         style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:2.82222223px;stroke-width:0.26458332px"
+           y="279.80209"
+           x="30.427084"
+           id="tspan957-9-8-12-6"
+           sodipodi:role="line">jump_target_ex</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/hw/vendor/lowrisc_ibex/doc/images/if_stage.svg b/hw/vendor/lowrisc_ibex/doc/images/if_stage.svg
new file mode 100644
index 0000000..3c7c87f
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/doc/images/if_stage.svg
@@ -0,0 +1,668 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="102mm"
+   height="82.550011mm"
+   viewBox="0 0 102 82.550011"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="if_stage.svg">
+  <defs
+     id="defs2">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4774">
+      <stop
+         style="stop-color:#e53651;stop-opacity:1;"
+         offset="0"
+         id="stop4770" />
+      <stop
+         style="stop-color:#e53651;stop-opacity:0;"
+         offset="1"
+         id="stop4772" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4711"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4702"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4699"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,5.92,0.8)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM-5"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4702-6"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM-2"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4711-9"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM-5-2"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4702-6-7"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM-2-0"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4711-9-9"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#0046ff;fill-opacity:1;fill-rule:evenodd;stroke:#0046ff;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DotM-2"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4702-0"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM-23"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4711-7"
+         d="M -5,-5 V 5 H 5 V -5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="scale(0.4)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4774"
+       id="linearGradient4776"
+       x1="52.916668"
+       y1="212.33333"
+       x2="173.30208"
+       y2="212.33333"
+       gradientUnits="userSpaceOnUse" />
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6338">
+      <rect
+         style="fill:none;stroke:#000000;stroke-width:0.74811929;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect6340"
+         width="17.197916"
+         height="15.875015"
+         x="186.53125"
+         y="225.5625" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6444">
+      <rect
+         style="fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect6446"
+         width="100.54166"
+         height="96.572914"
+         x="-18.520832"
+         y="197.78125" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath4160">
+      <rect
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.49247217;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4162"
+         width="103.1875"
+         height="113.77083"
+         x="-10.583332"
+         y="191.16667" />
+    </clipPath>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4774"
+       id="linearGradient4164"
+       gradientUnits="userSpaceOnUse"
+       x1="52.916668"
+       y1="212.33333"
+       x2="173.30208"
+       y2="212.33333" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.7687075"
+     inkscape:cx="184.07003"
+     inkscape:cy="88.605651"
+     inkscape:document-units="mm"
+     inkscape:current-layer="g5370"
+     showgrid="true"
+     inkscape:snap-bbox="false"
+     inkscape:snap-text-baseline="true"
+     inkscape:window-width="1712"
+     inkscape:window-height="1406"
+     inkscape:window-x="1722"
+     inkscape:window-y="4"
+     inkscape:window-maximized="0"
+     inkscape:snap-object-midpoints="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     units="mm"
+     inkscape:measure-start="0.750001,311"
+     inkscape:measure-end="340.75,311"
+     showguides="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid815"
+       originx="8.1359377"
+       originy="-12.964578" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(8.1359365,-201.48542)">
+    <g
+       id="g4156"
+       clip-path="url(#clipPath4160)">
+      <rect
+         clip-path="none"
+         ry="1.3229218"
+         y="201.75"
+         x="51.59375"
+         height="82.020836"
+         width="112.44791"
+         id="rect4554-36-6-2"
+         style="fill:url(#linearGradient4164);fill-opacity:1;stroke:none;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <g
+         id="g2924">
+        <rect
+           style="fill:#e53651;fill-opacity:1;stroke:none;stroke-width:0.52916682;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4554-36-6"
+           width="39.6875"
+           height="82.020836"
+           x="13.229165"
+           y="201.75"
+           ry="1.3229218"
+           clip-path="none" />
+        <rect
+           style="fill:#ffe0e5;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.3310166;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4554-36-7-5-6"
+           width="47.625"
+           height="54.239578"
+           x="19.84375"
+           y="214.97917"
+           ry="0"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="23.8125"
+           y="221.59375"
+           id="text959-2"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan957-9"
+             x="23.8125"
+             y="221.59375"
+             style="stroke-width:0.26458332px">IF Stage</tspan></text>
+        <rect
+           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4554-36-7-5-6-6"
+           width="38.364586"
+           height="17.197922"
+           x="23.812498"
+           y="228.20833"
+           ry="1.3229218"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="26.458334"
+           y="234.82292"
+           id="text959-2-0"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan957-9-6"
+             x="26.458334"
+             y="234.82292"
+             style="stroke-width:0.26458332px">Prefetch</tspan><tspan
+             sodipodi:role="line"
+             x="26.458334"
+             y="239.78386"
+             style="stroke-width:0.26458332px"
+             id="tspan1150">Buffer</tspan></text>
+        <path
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+           d="m 25.135417,233.5 -1e-6,1.5875 H 23.01875 L 22.225,234.29375 23.01875,233.5 Z"
+           id="path1152"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <rect
+           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4554-36-7-5-6-2"
+           width="7.9375"
+           height="50.270832"
+           x="-7.9374986"
+           y="216.30209"
+           ry="1.3228403"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="-257.57697"
+           y="-2.6458323"
+           id="text971"
+           transform="rotate(-90)"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan969"
+             x="-257.57697"
+             y="-2.6458323"
+             style="stroke-width:0.26458332px">Instruction Mem</tspan></text>
+        <path
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+           d="m 1.3229167,233.5 -8e-7,1.5875 H -0.79375033 L -1.5875003,234.29375 -0.79375033,233.5 Z"
+           id="path1152-6"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="M 22.225,234.29375 H 1.3229166"
+           id="path1188"
+           inkscape:connector-curvature="0"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="1.3985116"
+           y="232.64955"
+           id="text959-2-1"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan957-9-8"
+             x="1.3985116"
+             y="232.64955"
+             style="font-size:2.82222223px;stroke-width:0.26458332px">addr_o</tspan></text>
+        <path
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+           d="m -1.322916,236.41042 v 1.5875 H 0.79375 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+           id="path1152-7"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 48.947918,234.28254 -3.96875,0.0112 0,1.85208 h -19.84375 v 1.05833 H 1.5874927"
+           id="path1188-2"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="1.6630881"
+           y="240.85156"
+           id="text959-2-1-0"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan957-9-8-2"
+             x="1.6630881"
+             y="240.85156"
+             style="font-size:2.82222223px;stroke-width:0.26458332px">rdata_i</tspan></text>
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+           d="m 17.197915,236.14583 -1.322917,2.11667"
+           id="path1235"
+           inkscape:connector-curvature="0"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="14.287499"
+           y="240.90834"
+           id="text959-2-1-0-3"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan957-9-8-2-7"
+             x="14.287499"
+             y="240.90834"
+             style="font-size:2.82222223px;stroke-width:0.26458332px">32</tspan></text>
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 33.072917,245.40625 1.322917,-3.175 1.322917,3.175 z"
+           id="path1294"
+           inkscape:connector-curvature="0"
+           clip-path="none" />
+        <rect
+           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.52916676;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4554-36-7-5-6-6-2"
+           width="21.166668"
+           height="17.197924"
+           x="23.8125"
+           y="249.375"
+           ry="1.3229218"
+           clip-path="none" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="26.458334"
+           y="255.98959"
+           id="text959-2-0-8"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan957-9-6-9"
+             x="26.458334"
+             y="255.98959"
+             style="stroke-width:0.26458332px">Comp</tspan><tspan
+             sodipodi:role="line"
+             x="26.458334"
+             y="260.95053"
+             style="stroke-width:0.26458332px"
+             id="tspan1150-7">Decoder</tspan></text>
+        <g
+           id="g5370"
+           transform="translate(22.489587,2.3504841e-6)"
+           clip-path="none">
+          <rect
+             ry="0"
+             y="214.97917"
+             x="55.5625"
+             height="64.822914"
+             width="9.260417"
+             id="rect4554-36-7-5-6-5"
+             style="fill:#ffe0e5;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.26499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <text
+             id="text959-9"
+             y="243.02469"
+             x="56.885418"
+             style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             xml:space="preserve"><tspan
+               id="tspan1288"
+               style="stroke-width:0.26458332px"
+               y="243.02469"
+               x="56.885418"
+               sodipodi:role="line">ID</tspan><tspan
+               style="stroke-width:0.26458332px"
+               y="247.98563"
+               x="56.885418"
+               sodipodi:role="line"
+               id="tspan1959">EX</tspan></text>
+          <path
+             inkscape:connector-curvature="0"
+             id="path1294-3"
+             d="m 59.002083,279.80206 1.322917,-3.175 1.322917,3.175 z"
+             style="fill:none;fill-rule:evenodd;stroke:#6c0e1d;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="16.404165"
+           y="209.6875"
+           id="text2070"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             id="tspan2068"
+             x="16.404165"
+             y="209.6875"
+             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px">Ibex Core</tspan></text>
+        <path
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+           d="m 22.489583,241.4375 1e-6,1.5875 H 24.60625 L 25.4,242.23125 24.60625,241.4375 Z"
+           id="path1152-638"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+           d="m 58.208335,234.29375 h 19.84375"
+           id="path2367"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc"
+           clip-path="none" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+           d="M 46.566667,259.69378 H 78.052085"
+           id="path2367-1"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc"
+           clip-path="none" />
+        <path
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+           d="m 46.302083,255.98958 -1e-6,1.5875 h -2.116666 l -0.79375,-0.79375 0.79375,-0.79375 z"
+           id="path1152-0"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <path
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
+           d="m 43.656249,258.9 10e-7,1.5875 h 2.116666 l 0.79375,-0.79375 -0.79375,-0.79375 z"
+           id="path1152-6-9-3"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+           d="m 64.756772,234.29375 v 22.48958 H 46.302085"
+           id="path2483"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccc"
+           clip-path="none" />
+        <circle
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
+           id="path1737-4"
+           cx="64.756775"
+           cy="234.29375"
+           r="0.13229166"
+           clip-path="none" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ffffff;stroke-width:0.21166666"
+           d="m 26.511665,274.51452 c 0.04847,0.083 -0.04826,4.72377 -0.08297,5.25611 0,0 -0.933661,0.007 -0.988906,-0.0275 -0.05525,-0.0417 -0.05525,-5.11111 0.04847,-5.20086 0.09652,-0.09 1.002666,-0.0762 1.023409,-0.0278 m 5.262457,1.71513 c 0.08297,0 0.581024,2.27563 0.581024,2.27563 0.172932,-0.53975 0.532554,-1.3625 0.608542,-1.6256 -0.03429,-0.11748 -0.158962,-0.44958 -0.158962,-0.52536 0.06922,-0.0692 0.871432,-0.1524 0.954405,-0.10392 0.06922,0.0417 0.601557,2.13021 0.636271,2.24092 0.04149,-0.11071 0.663786,-2.26844 0.6985,-2.27543 0.0417,-0.006 1.009861,0.20067 1.002876,0.24215 -0.09673,0.43561 -1.092624,3.27131 -1.127336,3.30602 -0.08996,0.076 -1.086062,-0.014 -1.092836,-0.0345 -0.007,-0.006 -0.248708,-0.72623 -0.470323,-1.61841 -0.297392,0.87165 -0.622512,1.63217 -0.63627,1.65312 -0.09017,0.076 -1.08585,-0.014 -1.092835,-0.0279 -0.007,-0.0135 -0.912918,-3.09139 -0.905933,-3.30601 0,-0.0487 0.913129,-0.20067 1.002877,-0.20067 m 4.806103,3.50647 c -0.0345,-0.32491 -0.0068,-4.32943 0.05546,-4.80652 0.352848,-0.0417 1.09982,-0.0762 1.639358,-0.0762 1.327785,0 2.088515,0.52536 2.088515,1.68063 0,0.71925 -0.338879,1.14109 -0.878205,1.3625 0.525569,0.63627 1.065106,1.47997 1.044152,1.5077 -0.07599,0.10372 -0.871432,0.43561 -1.078865,0.42884 -0.02074,0 -0.622512,-0.97515 -1.196552,-1.72932 -0.02773,0.007 -0.06223,0.007 -0.08996,0.007 -0.117687,0 -0.283634,-0.007 -0.366607,-0.0138 -0.007,0.4773 -0.007,1.41773 -0.0345,1.6184 -0.06922,0.0278 -1.175809,0.0622 -1.182793,0.0207 m 1.784352,-2.57979 c 0.44958,0 0.760942,-0.17992 0.760942,-0.59479 0,-0.38735 -0.20066,-0.63627 -0.802217,-0.63627 -0.131445,0 -0.318347,0.006 -0.456565,0.0207 0.007,0.18669 0,0.94763 0,1.18957 0.131233,0.014 0.338667,0.0207 0.49784,0.0207 m 4.02463,-2.25467 c 0.04826,0.29061 0.0417,4.37112 -0.0068,4.81372 -0.04149,0.12446 -1.224068,0.0762 -1.231053,0.0278 -0.02773,-0.49086 -0.04826,-4.16348 0.007,-4.82748 0.221191,-0.0832 1.189355,-0.0553 1.230842,-0.014 m 0.691303,4.35715 c -0.02773,-0.13843 0.31115,-1.02362 0.38735,-0.98891 0.158962,0.0969 0.677756,0.47054 1.265767,0.47054 0.408093,0 0.670983,-0.12467 0.670983,-0.42186 0,-0.22119 -0.166158,-0.38734 -0.878417,-0.53255 -0.905881,-0.18669 -1.410918,-0.60853 -1.410918,-1.51468 0,-0.78846 0.643255,-1.4732 1.812078,-1.4732 0.733213,0 1.34874,0.19388 1.618403,0.40809 0.09017,0.0692 -0.324908,0.96838 -0.394123,0.96139 -0.103929,-0.0482 -0.608753,-0.30437 -1.196552,-0.30437 -0.414866,0 -0.608753,0.16616 -0.608753,0.39433 0,0.21421 0.117687,0.32491 0.788458,0.4771 0.891963,0.20743 1.58369,0.56705 1.58369,1.51469 0,0.7332 -0.587798,1.50071 -1.936538,1.50071 -0.7747,-2.1e-4 -1.452457,-0.30438 -1.701377,-0.49128 m 6.521451,-0.56705 c 0.560281,0 0.940646,-0.29718 1.092623,-0.4081 0.159173,0.11071 0.463549,0.67077 0.57404,0.90594 -0.297392,0.33887 -0.995892,0.67098 -1.791335,0.67098 -1.618404,0 -2.37236,-1.15485 -2.37236,-2.60054 0,-1.39022 0.982133,-2.4621 2.552064,-2.4621 0.795444,0 1.369272,0.24892 1.583691,0.45656 0,0.13822 -0.290407,0.88519 -0.463339,1.0306 -0.24892,-0.14541 -0.670772,-0.3321 -1.106593,-0.3321 -0.712259,0 -1.265555,0.56727 -1.265555,1.35573 2.12e-4,0.9889 0.608753,1.38303 1.196764,1.38303 m -20.118542,-1.07757 c 0.08678,0.13208 0.138006,0.28956 0.138006,0.45931 a 0.8382,0.8382 0 1 1 -0.8382,-0.8382 c 0.147956,0 0.284692,0.0417 0.405342,0.1088 l 0.704003,-0.704 c -0.303529,-0.2358 -0.692573,-0.36152 -1.119716,-0.36152 -1.078865,0 -1.743075,0.85068 -1.743075,1.71534 0,1.12713 0.7747,1.8051 1.756834,1.8051 1.106592,-0.0207 1.749848,-0.82318 1.749848,-1.71536 0,-0.47328 -0.136102,-0.86317 -0.363432,-1.15887 z m -5.233458,-1.23401 -3.345604,3.34539 c 0.251037,0.35411 0.20701,0.85682 -0.134197,1.15717 -0.333375,0.29338 -0.855767,0.28173 -1.176231,-0.0256 a 0.87270168,0.87270168 0 0 1 -0.01334,-1.24332 c 0.303529,-0.30354 0.779356,-0.33402 1.118658,-0.0934 l 3.473662,-3.47344 c -0.524934,-1.93294 -2.29108,-3.35471 -4.390179,-3.35471 -2.300605,0 -4.20116,1.70773 -4.50596,3.92451 l 1.028488,-1.02848 a 0.38629166,0.38629166 0 0 1 0.273051,-0.11324 h 1.200784 c 0.06985,-0.41 0.42799,-0.72517 0.857039,-0.72517 0.343958,0 0.66802,0.19621 0.798195,0.51456 0.255058,0.62336 -0.204682,1.22555 -0.798195,1.22555 -0.429049,0 -0.787189,-0.31496 -0.857039,-0.72518 h -1.138337 a 0.24765,0.24765 0 0 0 -0.174837,0.0724 l -1.228514,1.22873 c -0.0021,0.0589 -0.0045,0.11705 -0.0045,0.17611 0,0.6968 0.157057,1.35699 0.437304,1.94733 l 0.92202,-0.92202 c -0.240665,-0.33931 -0.210185,-0.81513 0.09313,-1.11866 a 0.87249,0.87249 0 0 1 1.230419,0 0.87270168,0.87270168 0 0 1 0,1.23063 c -0.303319,0.30332 -0.779357,0.33401 -1.118659,0.0931 l -0.987001,0.987 a 4.5684017,4.5684017 0 0 0 1.102148,1.3098 l 3.917738,-3.91774 c 0.0436,-0.0436 0.06816,-0.10308 0.06816,-0.16489 v -1.52569 c -0.428414,-0.0728 -0.753534,-0.46101 -0.723054,-0.91567 0.02921,-0.43942 0.401109,-0.79756 0.841588,-0.8109 a 0.87249,0.87249 0 0 1 0.89662,0.86974 c 0,0.42926 -0.31496,0.7874 -0.725171,0.85704 v 1.57818 c 0,0.1052 -0.0417,0.20617 -0.115993,0.28047 l -3.927264,3.92705 a 4.5247983,4.5247983 0 0 0 2.637791,0.84518 c 2.512694,0 4.549986,-2.03708 4.549986,-4.54998 a 4.5698834,4.5698834 0 0 0 -0.08276,-0.86191"
+           id="path2580"
+           clip-path="none" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+           d="m 22.489584,242.23126 h -1.322916 v 28.31042 h 33.072916 v 10.58333 h 43.656251"
+           id="path2320"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc"
+           clip-path="none" />
+        <g
+           id="g6378"
+           clip-path="none">
+          <g
+             id="g6384">
+            <g
+               id="g6390">
+              <g
+                 id="g6396"
+                 transform="rotate(-90,123.69271,302.95313)">
+                <rect
+                   id="rect5381"
+                   width="6.6145897"
+                   height="13.229179"
+                   x="189.17708"
+                   y="224.23958"
+                   ry="1.4699136"
+                   style="fill:none;stroke:#000000;stroke-width:0.55761498;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   clip-path="url(#clipPath6338)" />
+                <path
+                   sodipodi:nodetypes="cc"
+                   style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   d="m 189.17708,228.20834 h 6.61459"
+                   id="path6342"
+                   inkscape:connector-curvature="0" />
+                <path
+                   sodipodi:nodetypes="cc"
+                   style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   d="m 189.17708,230.85417 h 6.61459"
+                   id="path6342-5"
+                   inkscape:connector-curvature="0" />
+                <path
+                   sodipodi:nodetypes="cc"
+                   style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   d="m 189.17708,233.50001 h 6.61459"
+                   id="path6342-5-6"
+                   inkscape:connector-curvature="0" />
+              </g>
+            </g>
+          </g>
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:2.51530552px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           x="47.625"
+           y="240.11459"
+           id="text959-2-0-2"
+           clip-path="none"><tspan
+             sodipodi:role="line"
+             x="47.625"
+             y="240.11459"
+             style="font-size:2.82222223px;line-height:89.12498951%;stroke-width:0.26458332px"
+             id="tspan1150-2">Fetch</tspan><tspan
+             sodipodi:role="line"
+             x="47.625"
+             y="242.6299"
+             style="font-size:2.82222223px;line-height:89.12498951%;stroke-width:0.26458332px"
+             id="tspan6432">FIFO</tspan></text>
+        <text
+           id="text959-2-1-9-3"
+           y="279.80209"
+           x="55.5625"
+           style="font-style:normal;font-weight:normal;font-size:3.96875px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           xml:space="preserve"
+           clip-path="none"><tspan
+             style="font-size:2.82222223px;stroke-width:0.26458332px"
+             y="279.80209"
+             x="55.5625"
+             id="tspan957-9-8-12-6"
+             sodipodi:role="line">jump_target_ex</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.79374995,0.26458332;stroke-dashoffset:0.10583333"
+           d="m 48.947917,234.29376 h 9.260416 v 0"
+           id="path912"
+           inkscape:connector-curvature="0" />
+      </g>
+      <rect
+         clip-path="none"
+         ry="1.3229218"
+         y="201.75"
+         x="13.229167"
+         height="82.020844"
+         width="150.8125"
+         id="rect4554-36"
+         style="fill:none;fill-opacity:1;stroke:#6c0e1d;stroke-width:0.52899998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/hw/vendor/lowrisc_ibex/doc/index.rst b/hw/vendor/lowrisc_ibex/doc/index.rst
index 7b241fd..331c2e4 100644
--- a/hw/vendor/lowrisc_ibex/doc/index.rst
+++ b/hw/vendor/lowrisc_ibex/doc/index.rst
@@ -8,7 +8,9 @@
    introduction
    getting_started
    integration
+   pipeline_details
    instruction_fetch
+   instruction_decode_execute
    load_store_unit
    register_file
    cs_registers
diff --git a/hw/vendor/lowrisc_ibex/doc/instruction_decode_execute.rst b/hw/vendor/lowrisc_ibex/doc/instruction_decode_execute.rst
new file mode 100644
index 0000000..af1cbef
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/doc/instruction_decode_execute.rst
@@ -0,0 +1,111 @@
+.. _instruction-decode-execute:
+
+Instruction Decode and Execute
+==============================
+
+.. figure:: images/de_ex_stage.svg
+   :name: de_ex_stage
+   :align: center
+
+   Instruction Decode and Execute
+
+The Instruction Decode and Execute stage takes instruction data from the instruction fetch stage (which has been converted to the uncompressed representation in the compressed instruction case).
+The instructions are decoded and executed all within one cycle including the register read and write.
+The stage is made up of multiple sub-blocks which are described below.
+
+Instruction Decode Block (ID)
+-----------------------------
+Source File: :file:`rtl/ibex_id_stage.sv`
+
+The Instruction Decode (ID) controls the overall decode/execution process.
+It contains the muxes to choose what is sent to the ALU inputs and where the write data for the register file comes from.
+A small state machine is used to control multi-cycle instructions (see :ref:`pipeline-details` for more details), which stalls the whole stage whilst a multi-cycle instruction is executing.
+
+Controller
+----------
+Source File: :file:`rtl/ibex_controller.sv`
+
+The Controller contains the state machine that controls the overall execution of the processor.
+It is responsible for:
+
+* Handling core startup from reset
+* Setting the PC for the IF stage on jump/branch
+* Dealing with exceptions/interrupts (jump to appropriate PC, set relevant CSR values)
+* Controlling sleep/wakeup on WFI
+* Debugging control
+
+Decoder
+-------
+Source File: :file:`rtl/ibex_decoder.sv`
+
+The decoder takes uncompressed instruction data and issues appropriate control signals to the other blocks to execute the instruction.
+
+Register File
+-------------
+Source Files: :file:`rtl/ibex_register_file_ff.sv` :file:`rtl/ibex_register_file_latch.sv`
+
+See :ref:`register-file` for more details.
+
+Execute Block
+-------------
+Source File: :file:`rtl/ibex_ex_block.sv`
+
+The execute block contains the ALU and the multiplier/divider blocks, it does little beyond wiring and instantiating these blocks.
+
+Arithmetic Logic Unit (ALU)
+---------------------------
+Source File: :file:`rtl/ibex_alu.sv`
+
+The Arithmetic Logic Logic (ALU) is a purely combinational block that implements operations required for the Integer Computational Instructions and the comparison operations required for the Control Transfer Instructions in the RV32I RISC-V Specification.
+Other blocks use the ALU for the following tasks:
+
+* Mult/Div uses it to perform addition as part of the multiplication and division algorithms
+* It computes branch targets with a PC + Imm calculation
+* It computes memory addresses for loads and stores with a Reg + Imm calculation
+* The LSU uses it to increment addresses when performing two accesses to handle an unaligned access
+
+.. _mult-div:
+
+Multiplier/Divider Block (MULT/DIV)
+-----------------------------------
+Source Files: :file:`rtl/ibex_multdiv_slow.sv` :file:`rtl/ibex_multdiv_fast.sv`
+
+The Multiplier/Divider (MULT/DIV) is a state machine driven block to perform multiplication and division.
+The fast and slow versions differ in multiplier only, both implement the same form of long division algorithm.
+The ALU block is used by the long division algorithm in both the fast and slow blocks.
+
+Fast Multiplier
+  - Completes multiply in 3-4 cycles using a MAC (multiply accumulate) which is capable of a 17-bit x 17-bit multiplication with a 34-bit accumulator.
+  - A MUL instruction takes 3 cycles, MULH takes 4.
+  - This MAC is internal to the mult/div block (no external ALU use).
+  - Beware it is simply implemented with the ``*`` and ``+`` operators so results heavily depend upon the synthesis tool used.
+  - In some cases it may be desirable to replace this with a specific implementation (such as a hard macro in an FPGA or an explicit gate level implementation).
+
+Slow Multiplier
+  - Completes multiply in 33 cycles using a Baugh-Wooley multiplier (for both MUL and MULH).
+  - The ALU block is used to compute additions.
+
+Divider
+  Both the fast and slow blocks use the same long division algorithm, it takes 37 cycles to compute (though only requires 2 cycles when there is a divide by 0) and proceeds as follows:
+
+    - Cycle 0: Check for divide by 0
+    - Cycle 1: Compute absolute value of operand A (or return result on divide by 0)
+    - Cycle 2: Compute absolute value of operand B
+    - Cycles 4 - 36: Perform long division as described here: https://en.wikipedia.org/wiki/Division_algorithm#Integer_division_(unsigned)_with_remainder.
+
+Control and Status Register Block (CSR)
+---------------------------------------
+Source File: :file:`rtl/ibex_cs_registers.sv`
+
+The CSR contains all of the CSRs (control/status registers).
+Any CSR read/write is handled through this block.
+Performance counters are held in this block and incremented when appropriate (this includes ``mcycle`` and ``minstret``).
+Read data from a CSR is available the same cycle it is requested.
+Further detail on the implemented CSRs can be found in :ref:`cs-registers`
+
+Load-Store Unit (LSU)
+---------------------
+Source File: :file:`rtl/ibex_load_store_unit.sv`
+
+The Load-Store Unit (LSU) interfaces with main memory to perform load and store operations.
+See :ref:`load-store-unit` for more details.
diff --git a/hw/vendor/lowrisc_ibex/doc/instruction_fetch.rst b/hw/vendor/lowrisc_ibex/doc/instruction_fetch.rst
index 3c62b85..82f0e62 100644
--- a/hw/vendor/lowrisc_ibex/doc/instruction_fetch.rst
+++ b/hw/vendor/lowrisc_ibex/doc/instruction_fetch.rst
@@ -2,9 +2,27 @@
 
 Instruction Fetch
 =================
+:file:`rtl/ibex_if_stage.sv.`
 
-The Instruction-Fetch (IF) stage of the core is able to supply one instruction to the Instruction-Decode (ID) stage per cycle if the instruction cache or the instruction memory is able to serve one instruction per cycle.
-For optimal performance and timing closure reasons, a prefetcher is used which fetches instructions from the instruction memory, or instruction cache.
+.. figure:: images/if_stage.svg
+   :name: if_stage
+   :align: center
+
+   Instruction Fetch (IF) stage
+
+The Instruction Fetch (IF) stage of the core is able to supply one instruction to the Instruction-Decode (ID) stage per cycle if the instruction cache or the instruction memory is able to serve one instruction per cycle.
+
+Instructions are fetched into a prefetch buffer (:file:`rtl/ibex_prefetch_buffer.sv`) for optimal performance and timing closure reasons.
+This buffer simply fetches instructions linearly until it is full.
+The instructions themselves are stored along with the Program Counter (PC) they came from in the fetch FIFO (:file:`rtl/ibex_fetch_fifo.sv`).
+The fetch FIFO has a feedthrough path so when empty a new instruction entering the FIFO is immediately made available on the FIFO output.
+A localparam ``DEPTH`` gives a configurable depth which is set to 3 by default.
+
+The top-level of the instruction fetch controls the prefetch buffer (in particular flushing it on branches/jumps/exception and beginning prefetching from the appropriate new PC) and supplies new instructions to the ID/EX stage along with their PC.
+Compressed instructions are expanded by the IF stage so the decoder can always deal with uncompressed instructions (the ID stage still receives the compressed instruction for placing into ``mtval`` on an illegal instruction exception).
+
+Instruction-Side Memory Interface
+---------------------------------
 
 The following table describes the signals that are used to fetch instructions.
 This interface is a simplified version of the interface used on the data interface as described in :ref:`load-store-unit`.
@@ -49,25 +67,3 @@
 The protocol used to communicate with the instruction cache or the instruction memory is very similar to the protocol used by the LSU on the data interface of Ibex.
 See the description of the LSU in :ref:`LSU Protocol<lsu-protocol>` for details about this protocol.
 
-.. caution::
-
-   The IF protocol differs from the LSU protocol in that the address can change while the request is valid (``instr_req_o`` is high).
-   This allows the core to immediately update the instruction fetch address when a branch occurs.
-   As depicted in :numref:`if_timing_difference`, care has to be taken when working with the address.
-   The data returned must match the address during the grant cycle.
-
-   .. wavedrom::
-      :name: if_timing_difference
-      :caption: Memory transaction with wait states
-
-      {"signal":
-        [
-          {"name": "clk", "wave": "p......"},
-          {"name": "instr_req_o", "wave": "01..0.."},
-          {"name": "instr_addr_o", "wave": "x=.=xxx", "data": ["Addr1", "Addr2"]},
-          {"name": "instr_gnt_i", "wave": "0..10.."},
-          {"name": "instr_rvalid_i", "wave": "0....10"},
-          {"name": "instr_rdata_i", "wave": "xxxxx=x", "data": ["RData2"]}
-        ],
-        "config": { "hscale": 2 }
-      }
diff --git a/hw/vendor/lowrisc_ibex/doc/integration.rst b/hw/vendor/lowrisc_ibex/doc/integration.rst
index 309083b..122cd9f 100644
--- a/hw/vendor/lowrisc_ibex/doc/integration.rst
+++ b/hw/vendor/lowrisc_ibex/doc/integration.rst
@@ -120,7 +120,7 @@
 | ``fetch_enable_i``      | 1                       | in  | Enable the core, won't fetch when 0    |
 +-------------------------+-------------------------+-----+----------------------------------------+
 | ``core_sleep_o``        | 1                       | out | Core in WFI with no outstanding data   |
-|                         |                         |     | or instruction accesses.  Deasserts    |
+|                         |                         |     | or instruction accesses. Deasserts     |
 |                         |                         |     | if an external event (interrupt or     |
 |                         |                         |     | debug req) wakes the core up           |
 +-------------------------+-------------------------+-----+----------------------------------------+
diff --git a/hw/vendor/lowrisc_ibex/doc/introduction.rst b/hw/vendor/lowrisc_ibex/doc/introduction.rst
index b21235d..fcd9410 100644
--- a/hw/vendor/lowrisc_ibex/doc/introduction.rst
+++ b/hw/vendor/lowrisc_ibex/doc/introduction.rst
@@ -53,7 +53,7 @@
 Most content of the RISC-V privileged specification is optional.
 Ibex currently supports the following features according to the RISC-V Privileged Specification, version 1.11.
 
-* M mode
+* M-Mode and U-Mode
 * All CSRs listed in :ref:`cs-registers`
 * Performance counters as described in :ref:`performance-counters`
 * Vectorized trap handling as described at :ref:`exceptions-interrupts`
@@ -75,18 +75,20 @@
 Contents
 --------
 
-:ref:`getting-started` discusses the requirements and initial steps to start using Ibex.
-:ref:`core-integration` provides the instantiation template and gives descriptions of the design parameters as well as the input and output ports.
-The instruction and data interfaces of Ibex are explained in :ref:`instruction-fetch` and :ref:`load-store-unit`, respectively.
-The two register-file flavors are described in :ref:`register-file`.
-The control and status registers are explained in :ref:`cs-registers`.
-:ref:`performance-counters` gives an overview of the performance monitors and event counters available in Ibex.
-:ref:`exceptions-interrupts` deals with the infrastructure for handling exceptions and interrupts,
-:ref:`pmp` gives a brief overview of PMP support.
-:ref:`debug-support` gives a brief overview on the debug infrastructure.
-:ref:`tracer` gives a brief overview of the tracer module.
-For information regarding formal verification support, check out :ref:`rvfi`.
-:ref:`examples` gives an overview of how Ibex can be used.
+ * :ref:`getting-started` discusses the requirements and initial steps to start using Ibex.
+ * :ref:`core-integration` provides the instantiation template and gives descriptions of the design parameters as well as the input and output ports.
+ * :ref:`pipeline-details` described the overal pipeline structure.
+ * :ref:`instruction-decode-execute` describes how the Instruction Decode and Execute stage works.
+ * The instruction and data interfaces of Ibex are explained in :ref:`instruction-fetch` and :ref:`load-store-unit`, respectively.
+ * The two register-file flavors are described in :ref:`register-file`.
+ * The control and status registers are explained in :ref:`cs-registers`.
+ * :ref:`performance-counters` gives an overview of the performance monitors and event counters available in Ibex.
+ * :ref:`exceptions-interrupts` deals with the infrastructure for handling exceptions and interrupts,
+ * :ref:`pmp` gives a brief overview of PMP support.
+ * :ref:`debug-support` gives a brief overview on the debug infrastructure.
+ * :ref:`tracer` gives a brief overview of the tracer module.
+ * For information regarding formal verification support, check out :ref:`rvfi`.
+ * :ref:`examples` gives an overview of how Ibex can be used.
 
 
 History
diff --git a/hw/vendor/lowrisc_ibex/doc/load_store_unit.rst b/hw/vendor/lowrisc_ibex/doc/load_store_unit.rst
index cedfe61..55b7737 100644
--- a/hw/vendor/lowrisc_ibex/doc/load_store_unit.rst
+++ b/hw/vendor/lowrisc_ibex/doc/load_store_unit.rst
@@ -2,10 +2,16 @@
 
 Load-Store Unit
 ===============
+:file:`rtl/ibex_load_store_unit.sv`
 
 The Load-Store Unit (LSU) of the core takes care of accessing the data memory.
 Loads and stores of words (32 bit), half words (16 bit) and bytes (8 bit) are supported.
 
+Any load or store will stall the ID/EX stage for at least a cycle to await the response (whether that is awaiting load data or a response indicating whether an error has been seen for a store).
+
+Data-Side Memory Interface
+--------------------------
+
 Signals that are used by the LSU:
 
 +-------------------------+-----------+-----------------------------------------------+
@@ -81,7 +87,7 @@
        {"name": "data_we_o", "wave": "x=.xxxx", "data": ["WE"]},
        {"name": "data_be_o", "wave": "x=.xxxx", "data": ["BE"]},
        {"name": "data_wdata_o", "wave": "x=.xxxx", "data": ["WData"]},
-       {"name": "data_gnt_i", "wave": "0.10..."}, 
+       {"name": "data_gnt_i", "wave": "0.10..."},
        {"name": "data_rvalid_i", "wave": "0..10.."},
        {"name": "data_err_i", "wave": "xxx=xxx", "data": ["Err"]},
        {"name": "data_rdata_i", "wave": "xxx=xxx", "data": ["RData"]}
@@ -109,7 +115,7 @@
      ],
      "config": { "hscale": 2 }
    }
-   
+
 .. wavedrom::
    :name: timing3
    :caption: Slow Response Memory Transaction
@@ -122,7 +128,7 @@
        {"name": "data_we_o", "wave": "x=..xxx", "data": ["WE"]},
        {"name": "data_be_o", "wave": "x=..xxx", "data": ["BE"]},
        {"name": "data_wdata_o", "wave": "x=..xxx", "data": ["WData"]},
-       {"name": "data_gnt_i", "wave": "0..10.."}, 
+       {"name": "data_gnt_i", "wave": "0..10.."},
        {"name": "data_rvalid_i", "wave": "0....10"},
        {"name": "data_err_i", "wave": "xxxxx=x", "data": ["Err"]},
        {"name": "data_rdata_i", "wave": "xxxxx=x", "data": ["RData"]}
diff --git a/hw/vendor/lowrisc_ibex/doc/performance_counters.rst b/hw/vendor/lowrisc_ibex/doc/performance_counters.rst
index 5c17148..e42b32b 100644
--- a/hw/vendor/lowrisc_ibex/doc/performance_counters.rst
+++ b/hw/vendor/lowrisc_ibex/doc/performance_counters.rst
@@ -71,7 +71,7 @@
 
 Unavailable counters always read 0.
 
-The association of events with the ``mphmcounter``s is hardwired as listed in the following table.
+The association of events with the ``mphmcounter`` registers is hardwired as listed in the following table.
 
 +----------------------+----------------+--------------+------------------+
 | Event Counter        | CSR Address    | Event ID/Bit | Event Name       |
diff --git a/hw/vendor/lowrisc_ibex/doc/pipeline_details.rst b/hw/vendor/lowrisc_ibex/doc/pipeline_details.rst
new file mode 100644
index 0000000..eb13dd6
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/doc/pipeline_details.rst
@@ -0,0 +1,77 @@
+.. _pipeline-details:
+
+.. figure:: images/blockdiagram.svg
+   :name: ibex-pipeline
+   :align: center
+
+   Ibex Pipeline
+
+Pipeline Details
+================
+Ibex has a 2-stage pipeline, the 2 stages are:
+
+Instruction Fetch (IF)
+  Fetches instructions from memory via a prefetch buffer, capable of fetching 1 instruction per cycle if the instruction side memory system allows. See :ref:`instruction-fetch` for details.
+
+Instruction Decode and Execute (ID/EX)
+  Decodes fetched instruction and immediately executes it, register read and write all occurs in this stage.
+  Multi-cycle instructions will stall this stage until they are complete See :ref:`instruction-decode-execute` for details.
+
+All instructions require two cycles minimum to pass down the pipeline.
+One cycle in the IF stage and one in the ID/EX stage.
+Not all instructions can complete in the ID/EX stage in one cycle so will stall there until they complete.
+This means the maximum IPC (Instructions per Cycle) Ibex can achieve is 1 when multi-cycle instructions aren't used.
+See Multi- and Single-Cycle Instructions below for the details.
+
+Multi- and Single-Cycle Instructions
+------------------------------------
+
+In the table below when an instruction stalls for X cycles X + 1 cycles pass before a new instruction enters the ID/EX stage.
+Some instructions stall for a variable time, this is indicated as a range e.g. 1 - N means the instruction stalls a minimum of 1 cycle with an indeterminate maximum cycles.
+Read the description for more information.
+
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Instruction Type      | Stall Cycles          | Description                                                 |
++=======================+=======================+=============================================================+
+| Integer Computational | 0                     | Integer Computational Instructions are defined in the       |
+|                       |                       | RISCV-V RV32I Base Integer Instruction Set.                 |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| CSR Access            | 0                     | CSR Access Instruction are defined in 'Zicsr' of the        |
+|                       |                       | RISC-V specification.                                       |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Load/Store            | 1 - N                 | Both loads and stores stall for at least one cycle to await |
+|                       |                       | a response.  For loads this response is the load data       |
+|                       |                       | (which is written directly to the register file the same    |
+|                       |                       | cycle it is received).  For stores this is whether an error |
+|                       |                       | was seen or not.  The longer the data side memory interface |
+|                       |                       | takes to receive a response the longer loads and stores     |
+|                       |                       | will stall.                                                 |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Multiplication        | 2/3 (Fast Multiplier) | 2 for MUL, 3 for MULH.                                      |
+|                       |                       | See details in :ref:`mult-div`                              |
+|                       | 32 (Slow Multiplier)  |                                                             |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Division              | 1 or 37               | 1 stall cycle if divide by 0, otherwise full long division. |
+|                       |                       | See details in :ref:`mult-div`                              |
+| Remainder             |                       |                                                             |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Jump                  | 1 - N                 | Minimum one cycle stall to flush the prefetch counter and   |
+|                       |                       | begin fetching from the new Program Counter (PC).  The new  |
+|                       |                       | PC request will appear on the instruction-side memory       |
+|                       |                       | interface the same cycle the jump instruction enters ID/EX. |
+|                       |                       | The longer the instruction-side memory interface takes to   |
+|                       |                       | receive data the longer the jump will stall.                |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Branch (Not-Taken)    | 0                     | Any branch where the condition is not met will              |
+|                       |                       | not stall.                                                  |
++-----------------------+-----------------------+-------------------------------------------------------------+
+| Branch (Taken)        | 2 - N                 | Any branch where the condition is met will stall for 2      |
+|                       |                       | cycles as in the first cycle the branch is in ID/EX the ALU |
+|                       |                       | is used to calculate the branch condition.  The following   |
+|                       |                       | cycle the ALU is used again to calculate the branch target  |
+|                       |                       | where it proceeds as Jump does above (Flush IF stage and    |
+|                       |                       | prefetch buffer, new PC on instruction-side memory          |
+|                       |                       | interface the same cycle it is calculated).  The longer the |
+|                       |                       | instruction-side memory interface takes to receive data the |
+|                       |                       | longer the branch will stall.                               |
++-----------------------+-----------------------+-------------------------------------------------------------+
diff --git a/hw/vendor/lowrisc_ibex/doc/register_file.rst b/hw/vendor/lowrisc_ibex/doc/register_file.rst
index 60b1684..8c98879 100644
--- a/hw/vendor/lowrisc_ibex/doc/register_file.rst
+++ b/hw/vendor/lowrisc_ibex/doc/register_file.rst
@@ -2,10 +2,14 @@
 
 Register File
 =============
+Source FIles: :file:`rtl/ibex_register_file_ff.sv` :file:`rtl/ibex_register_file_latch.sv`
 
 Ibex has either 31 or 15 32-bit registers if the RV32E extension is disabled or enabled, respectively.
 Register ``x0`` is statically bound to 0 and can only be read, it does not contain any sequential logic.
 
+The register file has two read ports and one write port, register file data is available the same cycle a read is requested.
+There is no write to read forwarding path so if one register is being both read and written the read will return the current value rather than the value being written.
+
 There are two flavors of register file available, both having their own benefits and trade-offs.
 
 Flip-Flop-Based Register File
diff --git a/hw/vendor/lowrisc_ibex/doc/tracer.rst b/hw/vendor/lowrisc_ibex/doc/tracer.rst
index 7b67845..9e87950 100644
--- a/hw/vendor/lowrisc_ibex/doc/tracer.rst
+++ b/hw/vendor/lowrisc_ibex/doc/tracer.rst
@@ -4,8 +4,40 @@
 ======
 
 The module ``ibex_tracer`` can be used to create a log of the executed instructions.
-It is used by ``ibex_core_tracing`` which forwards the signals added by :ref:`rvfi` as an input for the tracer.
+It is used by ``ibex_core_tracing`` which forwards the `RVFI signals <https://github.com/SymbioticEDA/riscv-formal/blob/master/docs/rvfi.md>`_ to the tracer (see also :ref:`rvfi`).
 
-.. note::
+Output file
+-----------
 
-   ``ibex_tracer`` is not compatible with Verilator.
+All traced instructions are written to a log file.
+By default, the log file is named ``trace_core_<HARTID>.log``, with ``<HARTID>`` being the 8 digit hart ID of the core being traced.
+
+The file name base, defaulting to ``trace_core`` can be set using the ``ibex_tracer_file_base`` plusarg passed to the simulation.
+For example, ``+ibex_tracer_file_base=ibex_my_trace`` will produce log files named ``ibex_my_trace_<HARTID>.log``.
+The exact syntax of passing plusargs to a simulation depends on the simulator.
+
+Trace output format
+-------------------
+
+The trace output is in tab-separated columns.
+
+1. **Time**: The current simulation time.
+2. **Cycle**: The number of cycles since the last reset.
+3. **PC**: The program counter
+4. **Instr**: The executed instruction (base 16).
+   32 bit wide instructions (8 hex digits) are uncompressed instructions, 16 bit wide instructions (4 hex digits) are compressed instructions.
+5. **Decoded instruction**: The decoded (disassembled) instruction in a format equal to what objdump produces when calling it like ``objdump -Mnumeric -Mno-aliases -D``.
+   - Unsigned numbers are given in hex (prefixed with ``0x``), signed numbers are given as decimal numbers.
+   - Numeric register names are used (e.g. ``x1``).
+   - Symbolic CSR names are used.
+   - Jump/branch targets are given as absolute address if possible (PC + immediate).
+6. **Register and memory contents**: For all accessed registers, the value before and after the instruction execution is given. Writes to registers are indicated as ``registername=value``, reads as ``registername:value``. For memory accesses, the address and the loaded and stored data are given.
+
+.. code-block:: text
+
+  Time          Cycle      PC       Instr    Decoded instruction Register and memory contents
+            130         61 00000150 4481     c.li    x9,0        x9=0x00000000
+            132         62 00000152 00008437 lui     x8,0x8      x8=0x00008000
+            134         63 00000156 fff40413 addi    x8,x8,-1    x8:0x00008000  x8=0x00007fff
+            136         64 0000015a 8c65     c.and   x8,x9       x8:0x00007fff  x9:0x00000000  x8=0x00000000
+            142         67 0000015c c622     c.swsp  x8,12(x2)   x2:0x00002000  x8:0x00000000 PA:0x0000200c store:0x00000000  load:0xffffffff
diff --git a/hw/vendor/lowrisc_ibex/doc/verification.rst b/hw/vendor/lowrisc_ibex/doc/verification.rst
index 66cd79b..c011d51 100644
--- a/hw/vendor/lowrisc_ibex/doc/verification.rst
+++ b/hw/vendor/lowrisc_ibex/doc/verification.rst
@@ -47,7 +47,7 @@
 The flow is controlled by a `Makefile <https://github.com/lowRISC/ibex/blob/master/dv/uvm/Makefile>`_, here’s the list of frequently
 used commands:
 
-.. codeblock:: bash
+.. code-block:: bash
 
    # Run a full regression
    make
@@ -90,7 +90,7 @@
 
 You can add the compile/simulation options in `simulator.yaml <https://github.com/lowRISC/ibex/blob/master/dv/uvm/yaml/rtl_simulation.yaml>`_.
 
-.. codeblock:: bash
+.. code-block:: bash
 
    # Use the new RTL simulator to run
    make ... SIMULATOR=xxx
diff --git a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.cc b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.cc
index 7a02524..e5f02ee 100644
--- a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.cc
+++ b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.cc
@@ -6,12 +6,9 @@
 
 #include <iostream>
 
-#include "Vibex_riscv_compliance.h"
 #include "verilated_toplevel.h"
 #include "verilator_sim_ctrl.h"
 
-VERILATED_TOPLEVEL(ibex_riscv_compliance)
-
 ibex_riscv_compliance *top;
 VerilatorSimCtrl *simctrl;
 
diff --git a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.core b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.core
index 5f7a316..6139e9b 100644
--- a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.core
+++ b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/ibex_riscv_compliance.core
@@ -8,7 +8,7 @@
   files_sim_verilator:
     depend:
       - lowrisc:dv_verilator:simutil_verilator
-      - lowrisc:ibex:ibex_core
+      - lowrisc:ibex:ibex_core_tracing
 
     files:
       - rtl/ibex_riscv_compliance.sv
@@ -56,7 +56,7 @@
 # -O
 #   Optimization levels have a large impact on the runtime performance of the
 #   simulation model. -O2 and -O3 are pretty similar, -Os is slower than -O2/-O3
-          - '-CFLAGS "-std=c++11 -Wall -DVM_TRACE_FMT_FST -g -O0"'
+          - '-CFLAGS "-std=c++11 -Wall -DVM_TRACE_FMT_FST -DTOPLEVEL_NAME=ibex_riscv_compliance -g -O0"'
           - '-LDFLAGS "-pthread -lutil"'
           - "-Wall"
           - "-Wno-PINCONNECTEMPTY"
diff --git a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/bus.sv b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/bus.sv
index 4491e9e..188a2b8 100644
--- a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/bus.sv
+++ b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/bus.sv
@@ -104,12 +104,13 @@
 
   always_comb begin
     for (integer host = 0; host < NrHosts; host = host + 1) begin
+      host_gnt_o[host] = 1'b0;
+
       if ($clog2(NrHosts)'(host) == host_sel_resp) begin
         host_rvalid_o[host] = device_rvalid_i[device_sel_resp];
         host_err_o[host]    = device_err_i[device_sel_resp];
         host_rdata_o[host]  = device_rdata_i[device_sel_resp];
       end else begin
-        host_gnt_o[host]    = 1'b0;
         host_rvalid_o[host] = 1'b0;
         host_err_o[host]    = 1'b0;
         host_rdata_o[host]  = 'b0;
diff --git a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/ibex_riscv_compliance.sv b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/ibex_riscv_compliance.sv
index c55ec67..fc3facf 100644
--- a/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/ibex_riscv_compliance.sv
+++ b/hw/vendor/lowrisc_ibex/dv/riscv_compliance/rtl/ibex_riscv_compliance.sv
@@ -23,10 +23,11 @@
   assign clk_sys = IO_CLK;
   assign rst_sys_n = IO_RST_N;
 
+  // Bus hosts, ordered in decreasing priority
   typedef enum {
     TestUtilHost,
-    CoreI,
-    CoreD
+    CoreD,
+    CoreI
   } bus_host_e;
 
   typedef enum {
@@ -99,7 +100,7 @@
     .cfg_device_addr_mask
   );
 
-  ibex_core #(
+  ibex_core_tracing #(
       .DmHaltAddr(32'h00000000),
       .DmExceptionAddr(32'h00000000),
       .RV32E(RV32E),
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/Makefile b/hw/vendor/lowrisc_ibex/dv/uvm/Makefile
index b113a3c..d1e9534 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/Makefile
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/Makefile
@@ -73,11 +73,11 @@
      --steps=gen \
      --gen_timeout=${TIMEOUT} \
      --lsf_cmd="${LSF_CMD}" \
+     --core_setting_dir=${DV_DIR}/riscv_dv_extension \
+     --user_extension_dir=${DV_DIR}/riscv_dv_extension \
+     --simulator=${SIMULATOR} \
      ${COMMON_OPTS} \
      ${CSR_OPTS} \
-     --cmp_opts="+define+RISCV_CORE_SETTING=${DV_DIR}/riscv_dv_extension/ibex_core_setting.sv \
-       +define+RISCV_DV_EXT_FILE_LIST=${DV_DIR}/riscv_dv_extension/flist \
-       +incdir+${DV_DIR}/riscv_dv_extension/ " \
      --sim_opts="+uvm_set_type_override=riscv_asm_program_gen,ibex_asm_program_gen \
                  +signature_addr=${SIGNATURE_ADDR}";
 
@@ -123,6 +123,7 @@
      --simulator=${SIMULATOR} \
      --en_cov ${COV} \
      --en_wave ${WAVES} \
+     --lsf_cmd="${LSF_CMD}" \
      --sim_opts="+signature_addr=0x${SIGNATURE_ADDR}" \
      ${SIM_OPTS}
 
@@ -136,6 +137,12 @@
      --simulator=${SIMULATOR} \
      --iss=${ISS}
 
+
+# Generate functional coverage
+fcov:
+	cd ${GEN_DIR}; \
+	python3 ./cov.py --dir ${OUT}/instr_gen/spike_sim -o ${OUT}/fcov
+
 # Load verdi to review coverage
 cov:
 	cd ${OUT}/rtl_sim; verdi -cov -covdir test.vdb &
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf.sv
index 8285e56..6d0cf08 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf.sv
@@ -14,5 +14,6 @@
   logic                    rvalid;
   logic [DATA_WIDTH-1:0]   wdata;
   logic [DATA_WIDTH-1:0]   rdata;
+  logic                    error;
 
 endinterface : ibex_mem_intf
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_seq_item.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_seq_item.sv
index ae1ff19..fc218c0 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_seq_item.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_seq_item.sv
@@ -15,6 +15,7 @@
   rand bit [3:0]                gnt_delay;
   rand bit [3:0]                req_delay;
   rand bit [5:0]                rvalid_delay;
+  rand bit                      error;
 
   `uvm_object_utils_begin(ibex_mem_intf_seq_item)
     `uvm_field_int      (addr,             UVM_DEFAULT)
@@ -23,6 +24,7 @@
     `uvm_field_int      (data,             UVM_DEFAULT)
     `uvm_field_int      (gnt_delay,        UVM_DEFAULT)
     `uvm_field_int      (rvalid_delay,     UVM_DEFAULT)
+    `uvm_field_int      (error,            UVM_DEFAULT)
   `uvm_object_utils_end
 
   `uvm_object_new
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_driver.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_driver.sv
index 2a48b9d..49c76e0 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_driver.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_driver.sv
@@ -10,15 +10,16 @@
 
   protected virtual ibex_mem_intf vif;
 
+  int unsigned min_grant_delay = 0;
+  int unsigned max_grant_delay = 10;
+
   `uvm_component_utils(ibex_mem_intf_slave_driver)
   `uvm_component_new
 
-  mailbox #(ibex_mem_intf_seq_item) grant_queue;
   mailbox #(ibex_mem_intf_seq_item) rdata_queue;
 
   function void build_phase(uvm_phase phase);
     super.build_phase(phase);
-    grant_queue = new();
     rdata_queue = new();
     if(!uvm_config_db#(virtual ibex_mem_intf)::get(this, "", "vif", vif))
       `uvm_fatal("NOVIF",{"virtual interface must be set for: ",get_full_name(),".vif"});
@@ -36,6 +37,7 @@
     vif.rvalid  <= 1'b0;
     vif.grant   <= 1'b0;
     vif.rdata   <= 'b0;
+    vif.error   <= 1'b0;
   endtask : reset_signals
 
   virtual protected task get_and_drive();
@@ -55,15 +57,22 @@
     join_none
   endtask : get_and_drive
 
-  // TODO(udinator) - this direct send_grant logic is temporary until instruction fetch protocol
-  // issue is clarified (https://github.com/lowRISC/ibex/pull/293). After resolution, will re-add
-  // random delays insertion before driving grant to the ibex core.
   virtual protected task send_grant();
     int gnt_delay;
     forever begin
       while(vif.request !== 1'b1) begin
         @(negedge vif.clock);
       end
+      if (!std::randomize(gnt_delay) with {
+        gnt_delay dist {
+          min_grant_delay                         :/ 1,
+          [min_grant_delay+1 : max_grant_delay-1] :/ 1,
+          max_grant_delay                         :/ 1
+        };
+      }) begin
+        `uvm_fatal(`gfn, $sformatf("Cannot randomize grant"))
+      end
+      repeat(gnt_delay) @(negedge vif.clock);
       if(~vif.reset) begin
         vif.grant = 1'b1;
         @(negedge vif.clock);
@@ -78,11 +87,13 @@
       @(posedge vif.clock);
       vif.rvalid <=  1'b0;
       vif.rdata  <= 'x;
+      vif.error  <= 1'b0;
       rdata_queue.get(tr);
       if(vif.reset) continue;
       repeat(tr.rvalid_delay) @(posedge vif.clock);
       if(~vif.reset) begin
         vif.rvalid <=  1'b1;
+        vif.error  <=  tr.error;
         vif.rdata  <=  tr.data;
       end
     end
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_seq_lib.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_seq_lib.sv
index 9ece388..1dc80ef 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_seq_lib.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/ibex_mem_intf_agent/ibex_mem_intf_slave_seq_lib.sv
@@ -12,6 +12,10 @@
   int                     min_rvalid_delay = 0;
   ibex_mem_intf_seq_item  item;
   mem_model               m_mem;
+  bit                     enable_error = 1'b0;
+  // Used to ensure that whenever inject_error() is called, the very next transaction will inject an
+  // error, and that enable_error will not be flipped back to 0 immediately
+  bit                     error_synch = 1'b1;
 
   `uvm_object_utils(ibex_mem_intf_slave_seq)
   `uvm_declare_p_sequencer(ibex_mem_intf_slave_sequencer)
@@ -23,9 +27,11 @@
     forever
     begin
       bit [ADDR_WIDTH-1:0] aligned_addr;
+      bit [DATA_WIDTH-1:0] rand_data;
       p_sequencer.addr_ph_port.get(item);
       req = ibex_mem_intf_seq_item::type_id::create("req");
-      req.randomize() with {
+      error_synch = 1'b0;
+      if (!req.randomize() with {
         addr       == item.addr;
         read_write == item.read_write;
         data       == item.data;
@@ -36,10 +42,20 @@
           [max_rvalid_delay/2 : max_rvalid_delay-1]   :/ 1,
           max_rvalid_delay                            :/ 1
         };
-      };
+        error == enable_error;
+      }) begin
+        `uvm_fatal(`gfn, "Cannot randomize slave request")
+      end
+      enable_error = 1'b0;
+      error_synch = 1'b1;
       aligned_addr = {req.addr[DATA_WIDTH-1:2], 2'b0};
-      if(req.read_write == READ) begin : READ_block
-        req.data = m_mem.read(aligned_addr);
+      if (req.error) begin
+        `DV_CHECK_STD_RANDOMIZE_FATAL(rand_data)
+        req.data = rand_data;
+      end else begin
+        if(req.read_write == READ) begin : READ_block
+          req.data = m_mem.read(aligned_addr);
+        end
       end
       `uvm_info(get_full_name(), $sformatf("Response transfer:\n%0s", req.sprint()), UVM_HIGH)
       start_item(req);
@@ -56,4 +72,12 @@
     end
   endtask : body
 
+  virtual function inject_error();
+    this.enable_error = 1'b1;
+  endfunction
+
+  virtual function bit get_error_synch();
+    return this.error_synch;
+  endfunction
+
 endclass : ibex_mem_intf_slave_seq
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_master_driver.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_master_driver.sv
index 23ad25a..89709c6 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_master_driver.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_master_driver.sv
@@ -40,10 +40,8 @@
   endtask : get_and_drive
 
   virtual protected task reset_signals();
-    forever begin
-      @(posedge vif.reset);
-      drive_reset_value();
-    end
+    @(negedge vif.reset);
+    drive_reset_value();
   endtask : reset_signals
 
   virtual protected task drive_seq_item (irq_seq_item trans);
@@ -52,11 +50,6 @@
     vif.irq_external <= trans.irq_external;
     vif.irq_fast     <= trans.irq_fast;
     vif.irq_nm       <= trans.irq_nm;
-    // We hold the interrupt high for two cycles as Ibex is level sensitive,
-    // so this guarantees that Ibex will respond appropriately to the
-    // interrupt
-    repeat (2) @(posedge vif.clock);
-    drive_reset_value();
   endtask : drive_seq_item
 
   task drive_reset_value();
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_monitor.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_monitor.sv
index f3332f3..d4c5362 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_monitor.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_monitor.sv
@@ -25,11 +25,23 @@
     collect_irq();
   endtask : run_phase
 
+  // We know that for Ibex, any given interrupt stimulus will be asserted until the core signals the
+  // testbench that it has finished handling, and this stimulus will not change until the testbench
+  // receives the signal, at which point it will drop.
+  // Given this, as well as how the interrupt handshakes are designed, sending an irq_seq_item every
+  // cycle is not useful at all.
+  // In order to not send unnecessary sequence items, but to also send enough information that the
+  // testbench can handle nested interrupt scenarios, the monitor will send out a sequence
+  // item every time the interrupt lines change.
   virtual protected task collect_irq();
     irq_seq_item irq;
+    bit[DATA_WIDTH-1:0] stored_irq_val = '0;
+    bit[DATA_WIDTH-1:0] current_irq = '0;
     forever begin
-      if (|{vif.irq_software, vif.irq_timer, vif.irq_external,
-            vif.irq_fast, vif.irq_nm}) begin
+      current_irq = {vif.irq_nm, vif.irq_fast, 4'b0, vif.irq_external, 3'b0,
+                     vif.irq_timer, 3'b0, vif.irq_software, 3'b0};
+      if (current_irq !== stored_irq_val) begin
+        stored_irq_val = current_irq;
         irq = irq_seq_item::type_id::create("irq");
         irq.irq_software = vif.irq_software;
         irq.irq_timer = vif.irq_timer;
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_seq_item.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_seq_item.sv
index 771fa03..ccc99bc 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_seq_item.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/irq_agent/irq_seq_item.sv
@@ -12,7 +12,7 @@
   rand int          num_of_interrupt;
 
   constraint num_of_interrupt_c {
-    num_of_interrupt inside {[1:19]};
+    num_of_interrupt inside {[0:DATA_WIDTH-1]};
     $countones({irq_software, irq_timer, irq_external, irq_fast, irq_nm}) == num_of_interrupt;
   }
 
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/common/mem_model/mem_model.sv b/hw/vendor/lowrisc_ibex/dv/uvm/common/mem_model/mem_model.sv
index 4609a7f..a31529d 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/common/mem_model/mem_model.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/common/mem_model/mem_model.sv
@@ -23,7 +23,7 @@
                 $sformatf("Read Mem  : Addr[0x%0h], Data[0x%0h]", addr, data), UVM_HIGH)
     end
     else begin
-      std::randomize(data);
+      void'(std::randomize(data));
       `uvm_error(get_full_name(), $sformatf("read to uninitialzed addr 0x%0h", addr))
     end
     return data;
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/cover.cfg b/hw/vendor/lowrisc_ibex/dv/uvm/cover.cfg
index e3a4a0d..452ce7f 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/cover.cfg
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/cover.cfg
@@ -1 +1,4 @@
 +tree core_ibex_tb_top.dut
+begin tgl
+  -tree core_ibex_tb_top.dut.*
+end
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_dut_probe_if.sv b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_dut_probe_if.sv
index 48fa34c..efa9ff3 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_dut_probe_if.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_dut_probe_if.sv
@@ -11,5 +11,6 @@
   logic dret;
   logic mret;
   logic fetch_enable;
+  logic core_sleep;
   logic debug_req;
 endinterface
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env.sv b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env.sv
index 58af297..3e20b3d 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env.sv
@@ -25,9 +25,7 @@
                           create("data_if_slave_agent", this);
     instr_if_slave_agent = ibex_mem_intf_slave_agent::type_id::
                            create("instr_if_slave_agent", this);
-    if (cfg.enable_irq_stress_seq || cfg.enable_irq_single_seq) begin
-      irq_agent = irq_master_agent::type_id::create("irq_agent", this);
-    end
+    irq_agent = irq_master_agent::type_id::create("irq_agent", this);
     // Create virtual sequencer
     vseqr = core_ibex_vseqr::type_id::create("vseqr", this);
   endfunction : build_phase
@@ -36,9 +34,7 @@
     super.connect_phase(phase);
     vseqr.data_if_seqr = data_if_slave_agent.sequencer;
     vseqr.instr_if_seqr = instr_if_slave_agent.sequencer;
-    if (cfg.enable_irq_stress_seq || cfg.enable_irq_single_seq) begin
-      vseqr.irq_seqr = irq_agent.sequencer;
-    end
+    vseqr.irq_seqr = irq_agent.sequencer;
   endfunction : connect_phase
 
 endclass
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_cfg.sv b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_cfg.sv
index 388bc24..988de60 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_cfg.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_cfg.sv
@@ -4,8 +4,7 @@
 
 class core_ibex_env_cfg extends uvm_object;
 
-  bit       enable_irq_stress_seq;
-  bit       enable_irq_single_seq;
+  bit       enable_irq_seq;
   bit       enable_debug_stress_seq;
   bit       enable_debug_single_seq;
   bit[31:0] max_interval;
@@ -13,8 +12,7 @@
   bit[31:0] signature_addr;
 
   `uvm_object_utils_begin(core_ibex_env_cfg)
-    `uvm_field_int(enable_irq_stress_seq,   UVM_DEFAULT)
-    `uvm_field_int(enable_irq_single_seq,   UVM_DEFAULT)
+    `uvm_field_int(enable_irq_seq,   UVM_DEFAULT)
     `uvm_field_int(enable_debug_single_seq, UVM_DEFAULT)
     `uvm_field_int(enable_debug_stress_seq, UVM_DEFAULT)
     `uvm_field_int(max_interval, UVM_DEFAULT)
@@ -24,8 +22,7 @@
 
   function new(string name = "");
     super.new(name);
-    void'($value$plusargs("enable_irq_stress_seq=%0d", enable_irq_stress_seq));
-    void'($value$plusargs("enable_irq_single_seq=%0d", enable_irq_single_seq));
+    void'($value$plusargs("enable_irq_seq=%0d", enable_irq_seq));
     void'($value$plusargs("enable_debug_stress_seq=%0d", enable_debug_stress_seq));
     void'($value$plusargs("enable_debug_single_seq=%0d", enable_debug_single_seq));
     void'($value$plusargs("max_interval=%0d", max_interval));
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_pkg.sv b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_pkg.sv
index c8b69db..63ee631 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_pkg.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_env_pkg.sv
@@ -7,6 +7,7 @@
 // ---------------------------------------------
 
 `include "core_ibex_dut_probe_if.sv"
+`include "core_ibex_rvfi_if.sv"
 
 package core_ibex_env_pkg;
 
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_rvfi_if.sv b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_rvfi_if.sv
new file mode 100644
index 0000000..1515adf
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/env/core_ibex_rvfi_if.sv
@@ -0,0 +1,27 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// Interface to probe Ibex RVFI interface
+interface core_ibex_rvfi_if(input logic clk);
+  logic        valid;
+  logic [63:0] order;
+  logic [31:0] insn;
+  logic        trap;
+  logic        halt;
+  logic        intr;
+  logic [1:0]  mode;
+  logic [4:0]  rs1_addr;
+  logic [4:0]  rs2_addr;
+  logic [31:0] rs1_rdata;
+  logic [31:0] rs2_rdata;
+  logic [4:0]  rd_addr;
+  logic [31:0] rd_wdata;
+  logic [31:0] pc_rdata;
+  logic [31:0] pc_wdata;
+  logic [31:0] mem_addr;
+  logic [3:0]  mem_rmask;
+  logic [3:0]  mem_wmask;
+  logic [31:0] mem_rdata;
+  logic [31:0] mem_wdata;
+endinterface
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_asm_program_gen.sv b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_asm_program_gen.sv
index 1abe405..e81d962 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_asm_program_gen.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_asm_program_gen.sv
@@ -21,9 +21,7 @@
     // with ibex.
     cfg.check_misa_init_val = 1'b0;
     cfg.check_xstatus = 1'b0;
-    instr_stream.push_back(".macro init");
-    instr_stream.push_back(".endm");
-    instr_stream.push_back(".section .text.init");
+    instr_stream.push_back(".section .text");
     instr_stream.push_back(".globl _start");
     instr_stream.push_back(".option norvc");
     // 0x0 debug mode entry
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_core_setting.sv b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_core_setting.sv
deleted file mode 100644
index 4f4c598..0000000
--- a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_core_setting.sv
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2019 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//-----------------------------------------------------------------------------
-// Processor feature configuration
-//-----------------------------------------------------------------------------
-// XLEN
-parameter int XLEN = 32;
-
-// Parameter for SATP mode, set to BARE if address translation is not supported
-parameter satp_mode_t SATP_MODE = BARE;
-
-// Supported Privileged mode
-privileged_mode_t supported_privileged_mode[] = {MACHINE_MODE};
-
-// Unsupported instructions
-// Avoid generating these instructions in regular regression
-// FENCE.I is intentionally treated as illegal instruction by ibex core
-riscv_instr_name_t unsupported_instr[] = {FENCEI};
-
-// ISA supported by the processor
-riscv_instr_group_t supported_isa[$] = {RV32I, RV32M, RV32C};
-
-// Interrupt mode support
-mtvec_mode_t supported_interrupt_mode[$] = {VECTORED};
-
-// Debug mode support
-bit support_debug_mode = 1;
-
-// Support delegate trap to user mode
-bit support_umode_trap = 0;
-
-// Support sfence.vma instruction
-bit support_sfence = 0;
-
-// Cache line size (in bytes)
-// If processor does not support caches, set to XLEN/8
-int dcache_line_size_in_bytes = 128;
-
-// Number of data section
-// For processor that doesn't have data TLB, this can be set to 1
-// For processor that supports data TLB, this should be set to be larger than the number
-// of entries of dTLB to cover dTLB hit/miss scenario
-int num_of_data_pages = 4;
-
-// Data section byte size
-// For processor with no dTLB and data cache, keep the value below 10K
-// For processor with dTLB support, set it to the physical memory size that covers one entry
-// of the dTLB
-int data_page_size = 4096;
-int data_page_alignment = $clog2(data_page_size);
-
-// Stack section word length
-int stack_len = 5000;
-
-//-----------------------------------------------------------------------------
-// Kernel section setting, used by supervisor mode programs
-//-----------------------------------------------------------------------------
-
-// Number of kernel data pages
-int num_of_kernel_data_pages = 2;
-
-// Byte size of kernel data pages
-int kernel_data_page_size = 4096;
-
-// Kernel Stack section word length
-int kernel_stack_len = 5000;
-
-// Number of instructions for each kernel program
-int kernel_program_instr_cnt = 400;
-
-// ----------------------------------------------------------------------------
-// Previleged CSR implementation
-// ----------------------------------------------------------------------------
-
-// Implemented previlieged CSR list
-privileged_reg_t implemented_csr[$] = {
-    // Machine mode mode CSR
-    MVENDORID,  // Vendor ID
-    MARCHID,    // Architecture ID
-    MHARTID,    // Hardware thread ID
-    MSTATUS,    // Machine status
-    MISA,       // ISA and extensions
-    MTVEC,      // Machine trap-handler base address
-    MEPC,       // Machine exception program counter
-    MCAUSE,     // Machine trap cause
-    MTVAL,      // Machine bad address or instruction
-    MIE         // Machine interrupt enable
-    // TODO: Add performance CSRs and debug mode CSR
-};
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py
index d6c7fac..03d508c 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py
@@ -11,6 +11,7 @@
 sys.path.insert(0, "../../vendor/google_riscv-dv/scripts")
 
 from riscv_trace_csv import *
+from lib import *
 
 
 def process_ibex_sim_log(ibex_log, csv):
@@ -19,7 +20,7 @@
     Extract instruction and affected register information from ibex simulation
     log and save to a standard CSV format.
     """
-    print("Processing ibex log : %s" % ibex_log)
+    logging.info("Processing ibex log : %s" % ibex_log)
     instr_cnt = 0
     ibex_instr = ""
 
@@ -29,10 +30,10 @@
         for line in f:
             if re.search("ecall", line):
               break
-            # Extract instruction infromation
-            m = re.search(r"^\s*(?P<time>\d+)\s+(?P<cycle>\d+) " \
-                          "(?P<pc>[0-9a-f]+) (?P<bin>[0-9a-f]+) (?P<instr>.*)" \
-                          "x(?P<rd>\d+)=0x(?P<val>[0-9a-f]+)", line)
+            # Extract instruction information
+            m = re.search(r"^\s*(?P<time>\d+)\s+(?P<cycle>\d+)\s+" \
+                          "(?P<pc>[0-9a-f]+)\s+(?P<bin>[0-9a-f]+)\s+(?P<instr>.*)" \
+                          ".*x(?P<rd>[1-9]\d*)=0x(?P<val>[0-9a-f]+)", line)
             if m:
                 # Write the extracted instruction to a csvcol buffer file
                 rv_instr_trace = RiscvInstructiontTraceEntry()
@@ -44,7 +45,7 @@
                 trace_csv.write_trace_entry(rv_instr_trace)
                 instr_cnt += 1
 
-    print("Processed instruction count : %d" % instr_cnt)
+    logging.info("Processed instruction count : %d" % instr_cnt)
 
 
 def check_ibex_uvm_log(uvm_log, core_name, test_name, report, write=True):
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/riscv_core_setting.sv b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/riscv_core_setting.sv
new file mode 100644
index 0000000..621aeee
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/riscv_core_setting.sv
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//-----------------------------------------------------------------------------
+// Processor feature configuration
+//-----------------------------------------------------------------------------
+// XLEN
+parameter int XLEN = 32;
+
+// Parameter for SATP mode, set to BARE if address translation is not supported
+parameter satp_mode_t SATP_MODE = BARE;
+
+// Supported Privileged mode
+privileged_mode_t supported_privileged_mode[] = {MACHINE_MODE};
+
+// Unsupported instructions
+// Avoid generating these instructions in regular regression
+// FENCE.I is intentionally treated as illegal instruction by ibex core
+riscv_instr_name_t unsupported_instr[] = {FENCE_I};
+
+// ISA supported by the processor
+riscv_instr_group_t supported_isa[$] = {RV32I, RV32M, RV32C};
+
+// Interrupt mode support
+mtvec_mode_t supported_interrupt_mode[$] = {VECTORED};
+
+// The number of interrupt vectors to be generated, only used if VECTORED interrupt mode is
+// supported
+int max_interrupt_vector_num = 32;
+
+// Debug mode support
+bit support_debug_mode = 1;
+
+// Support delegate trap to user mode
+bit support_umode_trap = 0;
+
+// Support sfence.vma instruction
+bit support_sfence = 0;
+
+//-----------------------------------------------------------------------------
+// Kernel section setting, used by supervisor mode programs
+//-----------------------------------------------------------------------------
+
+// Number of kernel data pages
+int num_of_kernel_data_pages = 2;
+
+// Byte size of kernel data pages
+int kernel_data_page_size = 4096;
+
+// Kernel Stack section word length
+int kernel_stack_len = 5000;
+
+// Number of instructions for each kernel program
+int kernel_program_instr_cnt = 400;
+
+// ----------------------------------------------------------------------------
+// Previleged CSR implementation
+// ----------------------------------------------------------------------------
+
+// Implemented previlieged CSR list
+parameter privileged_reg_t implemented_csr[] = {
+    // Machine mode mode CSR
+    MVENDORID,        // Vendor ID
+    MARCHID,          // Architecture ID
+    MHARTID,          // Hardware thread ID
+    MSTATUS,          // Machine status
+    MISA,             // ISA and extensions
+    MTVEC,            // Machine trap-handler base address
+    MEPC,             // Machine exception program counter
+    MCAUSE,           // Machine trap cause
+    MTVAL,            // Machine bad address or instruction
+    MIE,              // Machine interrupt enable
+    MCYCLE,           // Machine cycle counter (lower 32 bits)
+    MCYCLEH,          // Machine cycle counter (upper 32 bits)
+    MINSTRET,         // Machine instructions retired counter (lower 32 bits)
+    MINSTRETH,        // Machine instructions retired counter (upper 32 bits)
+    MCOUNTINHIBIT,    // Machine counter inhibit register
+    MHPMEVENT3,       // Machine performance monitoring event selector
+    MHPMEVENT4,       // Machine performance monitoring event selector
+    MHPMEVENT5,       // Machine performance monitoring event selector
+    MHPMEVENT6,       // Machine performance monitoring event selector
+    MHPMEVENT7,       // Machine performance monitoring event selector
+    MHPMEVENT8,       // Machine performance monitoring event selector
+    MHPMEVENT9,       // Machine performance monitoring event selector
+    MHPMEVENT10,      // Machine performance monitoring event selector
+    MHPMCOUNTER3,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER4,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER5,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER6,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER7,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER8,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER9,     // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER10,    // Machine performance monitoring counter (lower 32 bits)
+    MHPMCOUNTER3H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER4H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER5H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER6H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER7H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER8H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER9H,    // Machine performance monitoring counter (upper 32 bits)
+    MHPMCOUNTER10H,   // Machine performance monitoring counter (upper 32 bits)
+    PMPCFG0,          // PMP configuration register
+    PMPCFG1,          // PMP configuration register
+    PMPCFG2,          // PMP configuration register
+    PMPCFG3,          // PMP configuration register
+    PMPADDR0,         // PMP address register
+    PMPADDR1,         // PMP address register
+    PMPADDR2,         // PMP address register
+    PMPADDR3,         // PMP address register
+    PMPADDR4,         // PMP address register
+    PMPADDR5,         // PMP address register
+    PMPADDR6,         // PMP address register
+    PMPADDR7,         // PMP address register
+    PMPADDR8,         // PMP address register
+    PMPADDR9,         // PMP address register
+    PMPADDR10,        // PMP address register
+    PMPADDR11,        // PMP address register
+    PMPADDR12,        // PMP address register
+    PMPADDR13,        // PMP address register
+    PMPADDR14,        // PMP address register
+    PMPADDR15,        // PMP address register
+    DCSR,             // Debug control and status register
+    DPC,              // Debug PC
+    DSCRATCH0,        // Debug scratch register 0
+    DSCRATCH1         // Debug scratch register 1
+};
+
+// --------------------------------------------------------------------------
+// Supported interrupt/exception setting, used for functional coverage
+// --------------------------------------------------------------------------
+
+parameter interrupt_cause_t implemented_interrupt[] = {
+  M_SOFTWARE_INTR,
+  M_TIMER_INTR,
+  M_EXTERNAL_INTR
+};
+
+parameter exception_cause_t implemented_exception[] = {
+  INSTRUCTION_ACCESS_FAULT,
+  ILLEGAL_INSTRUCTION,
+  BREAKPOINT,
+  LOAD_ACCESS_FAULT,
+  STORE_AMO_ACCESS_FAULT,
+  ECALL_MMODE
+};
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/testlist.yaml b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/testlist.yaml
index d21b79e..7f92fbc 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/testlist.yaml
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/testlist.yaml
@@ -9,8 +9,8 @@
     +instr_cnt=10000
     +num_of_sub_program=0
     +no_fence=1
-    +no_data_page=1'b1
-    +no_branch_jump=1'b1
+    +no_data_page=1
+    +no_branch_jump=1
     +boot_mode=m
   iterations: 10
   gen_test: riscv_instr_base_test
@@ -35,12 +35,6 @@
   gen_opts: >
     +instr_cnt=10000
     +num_of_sub_program=5
-    +directed_instr_0=riscv_load_store_rand_instr_stream,4
-    +directed_instr_1=riscv_loop_instr,4
-    +directed_instr_2=riscv_hazard_instr_stream,4
-    +directed_instr_3=riscv_load_store_hazard_instr_stream,4
-    +directed_instr_4=riscv_cache_line_stress_instr_stream,4
-    +directed_instr_5=riscv_multi_page_load_store_instr_stream,4
   rtl_test: core_ibex_base_test
 
 - test: riscv_rand_jump_test
@@ -65,8 +59,7 @@
     +num_of_sub_program=5
     +directed_instr_0=riscv_load_store_rand_instr_stream,40
     +directed_instr_1=riscv_load_store_hazard_instr_stream,40
-    +directed_instr_2=riscv_cache_line_stress_instr_stream,40
-    +directed_instr_3=riscv_multi_page_load_store_instr_stream,40
+    +directed_instr_2=riscv_multi_page_load_store_instr_stream,40
   rtl_test: core_ibex_base_test
 
 - test: riscv_illegal_instr_test
@@ -78,7 +71,7 @@
   iterations: 10
   gen_test: riscv_rand_instr_test
   gen_opts: >
-    +enable_illegal_instruction=1
+    +illegal_instr_ratio=5
   rtl_test: core_ibex_base_test
 
 - test: riscv_hint_instr_test
@@ -88,7 +81,7 @@
   iterations: 10
   gen_test: riscv_rand_instr_test
   gen_opts: >
-    +enable_hint_instruction=1
+    +hint_instr_ratio=5
   rtl_test: core_ibex_base_test
 
 - test: riscv_ebreak_test
@@ -116,6 +109,7 @@
     +no_csr_instr=1
     +no_fence=1
     +num_of_sub_program=0
+    +randomize_csr=1
   rtl_test: core_ibex_debug_intr_basic_test
   sim_opts: >
     +require_signature_addr=1
@@ -158,11 +152,12 @@
     +no_csr_instr=1
     +no_fence=1
     +num_of_sub_program=0
-    +num_debug_sub_program=3
+    +num_debug_sub_program=2
+    +randomize_csr=1
   rtl_test: core_ibex_debug_intr_basic_test
   sim_opts: >
     +require_signature_addr=1
-    +max_interval=2000
+    +max_interval=3000
     +enable_debug_stress_seq=1
   compare_opts:
     compare_final_value_only: 1
@@ -177,10 +172,12 @@
     +require_signature_addr=1
     +gen_debug_section=1
     +no_ebreak=1
-    +instr_cnt=3000
+    +instr_cnt=6000
     +no_csr_instr=1
     +no_fence=1
     +no_wfi=0
+    +randomize_csr=1
+    +num_of_sub_program=0
   rtl_test: core_ibex_debug_wfi_test
   sim_opts: >
     +require_signature_addr=1
@@ -203,16 +200,6 @@
   sim_opts: >
     +require_signature_addr=1
 
-- test: riscv_ebreak_test
-  description: >
-    Ebreak instructions will be inserted into the M mode code, ibex should handle them normally.
-  iterations: 5
-  gen_test: riscv_rand_instr_test
-  gen_opts: >
-    +no_ebreak=0
-    +instr_cnt=6000
-  rtl_test: core_ibex_base_test
-
 - test: riscv_debug_ebreak_test
   description: >
     A directed ebreak sequence will be inserted into the debug rom, upon encountering it,
@@ -229,6 +216,7 @@
     +no_wfi=1
     +no_ebreak=0
     +instr_cnt=6000
+    +randomize_csr=1
   rtl_test: core_ibex_debug_ebreak_test
   sim_opts: >
     +require_signature_addr=1
@@ -251,6 +239,8 @@
     +no_fence=1
     +no_wfi=1
     +instr_cnt=6000
+    +randomize_csr=1
+    +num_of_sub_program=0
   rtl_test: core_ibex_debug_ebreakm_test
   sim_opts: >
     +require_signature_addr=1
@@ -261,14 +251,17 @@
 - test: riscv_interrupt_test
   description: >
     Random instruction test with complete interrupt handling
-  iterations: 0
+  iterations: 10
   gen_test: riscv_rand_instr_test
   gen_opts: >
+    +instr_cnt=6000
     +require_signature_addr=1
+    +enable_interrupt=1
+    +randomize_csr=1
   rtl_test: core_ibex_debug_intr_basic_test
   sim_opts: >
     +require_signature_addr=1
-    +enable_irq_stress_seq=1
+    +enable_irq_seq=1
   compare_opts:
     compare_final_value_only: 1
 
@@ -290,7 +283,59 @@
     +num_of_sub_program=5
     +directed_instr_0=riscv_load_store_rand_instr_stream,20
     +directed_instr_1=riscv_load_store_hazard_instr_stream,20
-    +directed_instr_2=riscv_cache_line_stress_instr_stream,20
-    +directed_instr_3=riscv_multi_page_load_store_instr_stream,20
+    +directed_instr_2=riscv_multi_page_load_store_instr_stream,20
     +enable_unaligned_load_store=1
   rtl_test: core_ibex_base_test
+
+- test: riscv_mem_error_test
+  description: >
+    Normal random instruction test, but randomly insert instruction fetch or memory load/store errors
+  iterations: 5
+  gen_test: riscv_rand_instr_test
+  gen_opts: >
+    +require_signature_addr=1
+    +instr_cnt=10000
+    +randomize_csr=1
+  rtl_test: core_ibex_mem_error_test
+  sim_opts: >
+    +require_signature_addr=1
+  compare_opts:
+    compare_final_value_only: 1
+
+- test: riscv_perf_counter_test
+  description: >
+    Dump performance counters at EOT for any analysis
+  iterations: 5
+  gen_test: riscv_rand_instr_test
+  gen_opts: >
+    +require_signature_addr=1
+    +instr_cnt=10000
+    +num_of_sub_program=5
+  rtl_test: core_ibex_perf_test
+  sim_opts: >
+    +require_signature_addr=1
+
+- test: riscv_debug_single_step_test
+  description: >
+    Randomly assert debug_req_i, and set dcsr.step to make ibex execute one isntruction and then re-enter debug mode
+  iterations: 5
+  gen_test: riscv_instr_base_test
+  gen_opts: >
+    +require_signature_addr=1
+    +gen_debug_section=1
+    +no_ebreak=1
+    +no_branch_jump=1
+    +instr_cnt=6000
+    +no_csr_instr=1
+    +no_fence=1
+    +num_of_sub_program=0
+    +randomize_csr=1
+    +enable_debug_single_step=1
+  rtl_test: core_ibex_debug_single_step_test
+  sim_opts: >
+    +require_signature_addr=1
+    +max_interval=1500
+    +enable_debug_single_seq=1
+  compare_opts:
+    compare_final_value_only: 1
+    verbose: 1
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/flist b/hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/user_extension.svh
similarity index 100%
rename from hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/flist
rename to hw/vendor/lowrisc_ibex/dv/uvm/riscv_dv_extension/user_extension.svh
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/sim.py b/hw/vendor/lowrisc_ibex/dv/uvm/sim.py
index 02c501b..c3ea22d 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/sim.py
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/sim.py
@@ -32,6 +32,7 @@
 from ovpsim_log_to_trace_csv import *
 from instr_trace_compare import *
 
+
 def process_cmd(keyword, cmd, opts, enable):
   """ Process the compile and simulation command
 
@@ -63,27 +64,36 @@
     compile_cmd    : RTL simulator command to compile the instruction generator
     sim_cmd        : RTL simulator command to run the instruction generator
   """
-  print("Processing simulator setup file : %s" % simulator_yaml)
+  logging.info("Processing simulator setup file : %s" % simulator_yaml)
   yaml_data = read_yaml(simulator_yaml)
   # Search for matched simulator
   for entry in yaml_data:
     if entry['tool'] == simulator:
-      print("Found matching simulator: %s" % entry['tool'])
+      logging.info("Found matching simulator: %s" % entry['tool'])
       compile_cmd = entry['compile']['cmd']
       for i in range(len(compile_cmd)):
-        compile_cmd[i] = process_cmd("<cov_opts>", compile_cmd[i],
-                                     entry['compile']['cov_opts'], en_cov)
-        compile_cmd[i] = process_cmd("<wave_opts>", compile_cmd[i],
-                                     entry['compile']['wave_opts'], en_wave)
+        if 'cov_opts' in entry['compile']:
+          compile_cmd[i] = process_cmd("<cov_opts>", compile_cmd[i],
+                                       entry['compile']['cov_opts'], en_cov)
+        if 'wave_opts' in entry['compile']:
+          compile_cmd[i] = process_cmd("<wave_opts>", compile_cmd[i],
+                                       entry['compile']['wave_opts'], en_wave)
       sim_cmd = entry['sim']['cmd']
-      sim_cmd = process_cmd("<cov_opts>", sim_cmd, entry['sim']['cov_opts'], en_cov)
-      sim_cmd = process_cmd("<wave_opts>", sim_cmd, entry['sim']['wave_opts'], en_wave)
+      if 'cov_opts' in entry['sim']:
+        sim_cmd = process_cmd("<cov_opts>", sim_cmd, entry['sim']['cov_opts'], en_cov)
+      if 'wave_opts' in entry['sim']:
+        sim_cmd = process_cmd("<wave_opts>", sim_cmd, entry['sim']['wave_opts'], en_wave)
+      if 'env_var' in entry:
+        for env_var in entry['env_var'].split(','):
+          for i in range(len(compile_cmd)):
+            compile_cmd[i] = re.sub("<"+env_var+">", get_env_var(env_var), compile_cmd[i])
+          sim_cmd = re.sub("<"+env_var+">", get_env_var(env_var), sim_cmd)
       return compile_cmd, sim_cmd
-  print ("Cannot find RTL simulator %0s" % simulator)
+  logging.info("Cannot find RTL simulator %0s" % simulator)
   sys.exit(1)
 
 
-def rtl_compile(compile_cmd, test_list, output_dir, lsf_cmd, opts, verbose):
+def rtl_compile(compile_cmd, test_list, output_dir, lsf_cmd, opts):
   """Run the instruction generator
 
   Args:
@@ -92,21 +102,17 @@
     output_dir  : Output directory of the ELF files
     lsf_cmd     : LSF command to run compilation
     opts        : Compile options for the generator
-    verbose     : Verbose logging
   """
   # Compile the TB
-  print ("Compiling TB")
+  logging.info("Compiling TB")
   for cmd in compile_cmd:
     cmd = re.sub("<out>", output_dir, cmd)
     cmd = re.sub("<cmp_opts>", opts, cmd)
-    if verbose:
-      print("Compile command: %s" % cmd)
-    output = run_cmd(cmd)
-    if verbose:
-      print(output)
+    logging.debug("Compile command: %s" % cmd)
+    run_cmd(cmd)
 
 
-def rtl_sim(sim_cmd, test_list, output_dir, bin_dir, lsf_cmd, seed, opts, verbose):
+def rtl_sim(sim_cmd, test_list, output_dir, bin_dir, lsf_cmd, seed, opts):
   """Run the instruction generator
 
   Args:
@@ -117,37 +123,37 @@
     lsf_cmd    : LSF command to run simulation
     seed       : Seed of RTL simulation
     opts       : Simulation options
-    verbose    : Verbose logging
   """
   # Run the RTL simulation
   sim_cmd = re.sub("<out>", output_dir, sim_cmd)
   sim_cmd = re.sub("<sim_opts>", opts, sim_cmd)
   sim_cmd = re.sub("<cwd>", cwd, sim_cmd)
-  print ("Running RTL simulation...")
+  logging.info("Running RTL simulation...")
   cmd_list = []
   for test in test_list:
     for i in range(test['iterations']):
       rand_seed = get_seed(seed)
       test_sim_cmd = re.sub("<seed>", str(rand_seed), sim_cmd)
       if "sim_opts" in test:
+        test_sim_cmd += ' '
         test_sim_cmd += test['sim_opts']
-      print(test_sim_cmd)
       sim_dir = output_dir + ("/%s.%d" %(test['test'], i))
       run_cmd(("mkdir -p %s" % sim_dir))
       os.chdir(sim_dir)
-      if verbose:
-        print("Run dir: %s" % sim_dir)
-      binary = ("%s/%s.%d.bin" % (bin_dir, test['test'], i))
-      cmd = lsf_cmd + " " + test_sim_cmd.rstrip() + \
+      binary = ("%s/%s_%d.bin" % (bin_dir, test['test'], i))
+      cmd = lsf_cmd + " " + test_sim_cmd + \
             (" +UVM_TESTNAME=%s " % test['rtl_test']) + \
             (" +bin=%s " % binary) + \
             (" -l sim.log ")
-      print("Running %s with %s" % (test['rtl_test'], binary))
-      if verbose:
-        print(cmd)
-      output = run_cmd(' '.join(cmd.split()))
-      if verbose:
-        print(output)
+      cmd = re.sub('\n', '', cmd)
+      if lsf_cmd == "":
+        logging.info("Running %s with %s" % (test['rtl_test'], binary))
+        run_cmd(cmd, 300)
+      else:
+        cmd_list.append(cmd)
+  if lsf_cmd != "":
+    logging.info("Running %0d simulation jobs." % len(cmd_list))
+    run_parallel_cmd(cmd_list, 600)
 
 
 def compare(test_list, iss, output_dir, verbose):
@@ -161,9 +167,15 @@
   """
   report = ("%s/regr.log" % output_dir).rstrip()
   for test in test_list:
+    compare_opts = test.get('compare_opts', {})
+    in_order_mode = compare_opts.get('in_order_mode', 1)
+    coalescing_limit = compare_opts.get('coalescing_limit', 0)
+    verbose = compare_opts.get('verbose', 0)
+    mismatch = compare_opts.get('mismatch_print_limit', 5)
+    compare_final = compare_opts.get('compare_final_value_only', 0)
     for i in range(0, test['iterations']):
       elf = ("%s/asm_tests/%s.%d.o" % (output_dir, test['test'], i))
-      print("Comparing %s/DUT sim result : %s" % (iss, elf))
+      logging.info("Comparing %s/DUT sim result : %s" % (iss, elf))
       run_cmd(("echo 'Test binary: %s' >> %s" % (elf, report)))
       uvm_log = ("%s/rtl_sim/%s.%d/sim.log" % (output_dir, test['test'], i))
       rtl_log = ("%s/rtl_sim/%s.%d/trace_core_00000000.log" % (output_dir, test['test'], i))
@@ -180,19 +192,13 @@
         elif iss == "ovpsim":
           process_ovpsim_sim_log(iss_log, iss_csv)
         else:
-          print("Unsupported ISS" % iss)
+          logging.info("Unsupported ISS" % iss)
           sys.exit(1)
         uvm_result = check_ibex_uvm_log(uvm_log, "ibex", test_name, report, False)
         if not uvm_result:
           check_ibex_uvm_log(uvm_log, "ibex", test_name, report)
         else:
           if 'compare_opts' in test:
-            compare_opts = test.get('compare_opts')
-            in_order_mode = compare_opts.get('in_order_mode', 1)
-            coalescing_limit = compare_opts.get('coalescing_limit', 0)
-            verbose = compare_opts.get('verbose', 0)
-            mismatch = compare_opts.get('mismatch_print_limit', 5)
-            compare_final = compare_opts.get('compare_final_value_only', 0)
             compare_trace_csv(rtl_csv, iss_csv, "ibex", iss, report,
                               in_order_mode, coalescing_limit, verbose,
                               mismatch, compare_final)
@@ -201,9 +207,9 @@
   passed_cnt = run_cmd("grep PASSED %s | wc -l" % report).strip()
   failed_cnt = run_cmd("grep FAILED %s | wc -l" % report).strip()
   summary = ("%s PASSED, %s FAILED" % (passed_cnt, failed_cnt))
-  print(summary)
+  logging.info(summary)
   run_cmd(("echo %s >> %s" % (summary, report)))
-  print("RTL & ISS regression report is saved to %s" % report)
+  logging.info("RTL & ISS regression report is saved to %s" % report)
 
 
 # Parse input arguments
@@ -242,6 +248,7 @@
                           command is not specified")
 
 args = parser.parse_args()
+setup_logging(args.verbose)
 parser.set_defaults(verbose=False)
 cwd = os.path.dirname(os.path.realpath(__file__))
 
@@ -263,13 +270,12 @@
                                          args.en_cov, args.en_wave)
 # Compile TB
 if args.steps == "all" or re.match("compile", args.steps):
-  rtl_compile(compile_cmd, matched_list, output_dir,
-              args.lsf_cmd, args.cmp_opts, args.verbose)
+  rtl_compile(compile_cmd, matched_list, output_dir, args.lsf_cmd, args.cmp_opts)
 
 # Run RTL simulation
 if args.steps == "all" or re.match("sim", args.steps):
   rtl_sim(sim_cmd, matched_list, output_dir, bin_dir, args.lsf_cmd,
-          args.seed, args.sim_opts, args.verbose)
+          args.seed, args.sim_opts)
 
 # Compare RTL & ISS simulation result.;
 if args.steps == "all" or re.match("compare", args.steps):
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/tb/core_ibex_tb_top.sv b/hw/vendor/lowrisc_ibex/dv/uvm/tb/core_ibex_tb_top.sv
index 251ea86..9d8b064 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/tb/core_ibex_tb_top.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/tb/core_ibex_tb_top.sv
@@ -5,18 +5,24 @@
 module core_ibex_tb_top;
 
   import uvm_pkg::*;
+  import core_ibex_test_pkg::*;
 
   logic clk;
   logic rst_n;
   logic fetch_enable;
-  logic debug_req;
 
-  clk_if ibex_clk_if(.clk(clk));
-  irq_if irq_vif();
+  clk_if         ibex_clk_if(.clk(clk));
+  irq_if         irq_vif();
+  ibex_mem_intf  data_mem_vif();
+  ibex_mem_intf  instr_mem_vif();
+
 
   // DUT probe interface
   core_ibex_dut_probe_if dut_if(.clk(clk));
 
+  // RVFI interface
+  core_ibex_rvfi_if rvfi_if(.clk(clk));
+
   // TODO(taliu) Resolve the tied-off ports
   ibex_core_tracing #(.DmHaltAddr(`BOOT_ADDR + 'h0),
                       .DmExceptionAddr(`BOOT_ADDR + 'h4)) dut (
@@ -25,59 +31,75 @@
     .test_en_i(1'b1),
     .hart_id_i(32'b0),
     .boot_addr_i(`BOOT_ADDR), // align with spike boot address
-    .debug_req_i(debug_req),
-    .irq_software_i(irq_if.irq_software),
-    .irq_timer_i(irq_if.irq_timer),
-    .irq_external_i(irq_if.irq_external),
-    .irq_fast_i(irq_if.irq_fast),
-    .irq_nm_i(irq_if.irq_nm),
+    .irq_software_i(irq_vif.irq_software),
+    .irq_timer_i(irq_vif.irq_timer),
+    .irq_external_i(irq_vif.irq_external),
+    .irq_fast_i(irq_vif.irq_fast),
+    .irq_nm_i(irq_vif.irq_nm),
     .fetch_enable_i(dut_if.fetch_enable),
-    .debug_req_i(dut_if.debug_req)
+    .debug_req_i(dut_if.debug_req),
+    .data_gnt_i(data_mem_vif.grant),
+    .data_rvalid_i(data_mem_vif.rvalid),
+    .data_rdata_i(data_mem_vif.rdata),
+    .data_err_i(data_mem_vif.error),
+    .instr_gnt_i(instr_mem_vif.grant),
+    .instr_rvalid_i(instr_mem_vif.rvalid),
+    .instr_rdata_i(instr_mem_vif.rdata),
+    .instr_err_i(instr_mem_vif.error)
   );
 
-  ibex_mem_intf  data_mem_vif();
-  ibex_mem_intf  instr_mem_vif();
-
-  initial begin
-    // Data load/store vif connection
-    force data_mem_vif.clock    = clk;
-    force data_mem_vif.reset    = ~rst_n;
-    force data_mem_vif.request  = dut.data_req_o;
-    force dut.data_gnt_i        = data_mem_vif.grant;
-    force dut.data_rvalid_i     = data_mem_vif.rvalid;
-    force data_mem_vif.we       = dut.data_we_o;
-    force data_mem_vif.be       = dut.data_be_o;
-    force data_mem_vif.addr     = dut.data_addr_o;
-    force data_mem_vif.wdata    = dut.data_wdata_o;
-    force dut.data_rdata_i      = data_mem_vif.rdata;
-    force dut.data_err_i        = 0; // TODO(taliu) Support interface error
-    // Instruction fetch vif connnection
-    force instr_mem_vif.clock   = clk;
-    force instr_mem_vif.reset   = ~rst_n;
-    force instr_mem_vif.request = dut.instr_req_o;
-    force dut.instr_gnt_i       = instr_mem_vif.grant;
-    force instr_mem_vif.we      = 0;
-    force instr_mem_vif.be      = 0;
-    force instr_mem_vif.wdata   = 0;
-    force dut.instr_rvalid_i    = instr_mem_vif.rvalid;
-    force instr_mem_vif.addr    = dut.instr_addr_o;
-    force dut.instr_rdata_i     = instr_mem_vif.rdata;
-    force dut.instr_err_i       = 0; // TODO(taliu) Support interface error
-    // IRQ interface
-    force irq_vif.clock         = clk;
-    force irq_vif.reset         = ~rst_n;
-  end
-
-  assign dut_if.ecall   = dut.u_ibex_core.id_stage_i.ecall_insn_dec;
-  assign dut_if.wfi     = dut.u_ibex_core.id_stage_i.wfi_insn_dec;
-  assign dut_if.ebreak  = dut.u_ibex_core.id_stage_i.ebrk_insn;
-  assign dut_if.dret    = dut.u_ibex_core.id_stage_i.dret_insn_dec;
-  assign dut_if.mret    = dut.u_ibex_core.id_stage_i.mret_insn_dec;
+  // Data load/store vif connection
+  assign data_mem_vif.clock     = clk;
+  assign data_mem_vif.reset     = ~rst_n;
+  assign data_mem_vif.request   = dut.data_req_o;
+  assign data_mem_vif.we        = dut.data_we_o;
+  assign data_mem_vif.be        = dut.data_be_o;
+  assign data_mem_vif.addr      = dut.data_addr_o;
+  assign data_mem_vif.wdata     = dut.data_wdata_o;
+  // Instruction fetch vif connnection
+  assign instr_mem_vif.clock    = clk;
+  assign instr_mem_vif.reset    = ~rst_n;
+  assign instr_mem_vif.request  = dut.instr_req_o;
+  assign instr_mem_vif.we       = 0;
+  assign instr_mem_vif.be       = 0;
+  assign instr_mem_vif.wdata    = 0;
+  assign instr_mem_vif.addr     = dut.instr_addr_o;
+  // RVFI interface connections
+  assign rvfi_if.valid          = dut.rvfi_valid;
+  assign rvfi_if.order          = dut.rvfi_order;
+  assign rvfi_if.insn           = dut.rvfi_insn;
+  assign rvfi_if.trap           = dut.rvfi_trap;
+  assign rvfi_if.intr           = dut.rvfi_intr;
+  assign rvfi_if.mode           = dut.rvfi_mode;
+  assign rvfi_if.rs1_addr       = dut.rvfi_rs1_addr;
+  assign rvfi_if.rs2_addr       = dut.rvfi_rs2_addr;
+  assign rvfi_if.rs1_rdata      = dut.rvfi_rs1_rdata;
+  assign rvfi_if.rs2_rdata      = dut.rvfi_rs2_rdata;
+  assign rvfi_if.rd_addr        = dut.rvfi_rd_addr;
+  assign rvfi_if.rd_wdata       = dut.rvfi_rd_wdata;
+  assign rvfi_if.pc_rdata       = dut.rvfi_pc_rdata;
+  assign rvfi_if_pc_wdata       = dut.rvfi_pc_wdata;
+  assign rvfi_if.mem_addr       = dut.rvfi_mem_addr;
+  assign rvfi_if.mem_rmask      = dut.rvfi_mem_rmask;
+  assign rvfi_if.mem_rdata      = dut.rvfi_mem_rdata;
+  assign rvfi_if.mem_wdata      = dut.rvfi_mem_wdata;
+  // Irq interface connections
+  assign irq_vif.clock          = clk;
+  assign irq_vif.reset          = ~rst_n;
+  // Dut_if interface connections
+  assign dut_if.ecall           = dut.u_ibex_core.id_stage_i.ecall_insn_dec;
+  assign dut_if.wfi             = dut.u_ibex_core.id_stage_i.wfi_insn_dec;
+  assign dut_if.ebreak          = dut.u_ibex_core.id_stage_i.ebrk_insn;
+  assign dut_if.illegal_instr   = dut.u_ibex_core.id_stage_i.illegal_insn_dec;
+  assign dut_if.dret            = dut.u_ibex_core.id_stage_i.dret_insn_dec;
+  assign dut_if.mret            = dut.u_ibex_core.id_stage_i.mret_insn_dec;
+  assign dut_if.core_sleep      = dut.u_ibex_core.core_sleep_o;
 
 
   initial begin
     uvm_config_db#(virtual clk_if)::set(null, "*", "clk_if", ibex_clk_if);
     uvm_config_db#(virtual core_ibex_dut_probe_if)::set(null, "*", "dut_if", dut_if);
+    uvm_config_db#(virtual core_ibex_rvfi_if)::set(null, "*", "rvfi_if", rvfi_if);
     uvm_config_db#(virtual ibex_mem_intf)::set(null, "*data_if_slave*", "vif", data_mem_vif);
     uvm_config_db#(virtual ibex_mem_intf)::set(null, "*instr_if_slave*", "vif", instr_mem_vif);
     uvm_config_db#(virtual irq_if)::set(null, "*", "vif", irq_vif);
@@ -97,6 +119,7 @@
     rst_n = 1'b0;
     repeat(100) @(posedge clk);
     rst_n = 1'b1;
+    dut_if.debug_req = 1'b0;
   end
 
 endmodule
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_base_test.sv b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_base_test.sv
index 54cd279..6bd5635 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_base_test.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_base_test.sv
@@ -10,8 +10,7 @@
   virtual core_ibex_dut_probe_if                  dut_vif;
   mem_model_pkg::mem_model                        mem;
   core_ibex_vseq                                  vseq;
-  irq_seq                                         irq_seq_h;
-  int unsigned                                    timeout_in_cycles = 3000000;
+  int unsigned                                    timeout_in_cycles = 5000000;
   // If no signature_addr handshake functionality is desired between the testbench and the generated
   // code, the test will wait for the specifield number of cycles before starting stimulus
   // sequences (irq and debug)
@@ -19,6 +18,7 @@
   bit[ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0]    signature_data_q[$];
   bit[ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0]    signature_data;
   uvm_tlm_analysis_fifo #(ibex_mem_intf_seq_item) item_collected_port;
+  uvm_tlm_analysis_fifo #(irq_seq_item)           irq_collected_port;
 
   `uvm_component_utils(core_ibex_base_test)
 
@@ -28,6 +28,7 @@
     ibex_report_server = new();
     uvm_report_server::set_server(ibex_report_server);
     item_collected_port = new("item_collected_port_test", this);
+    irq_collected_port  = new("irq_collected_port_test", this);
   endfunction
 
   virtual function void build_phase(uvm_phase phase);
@@ -52,6 +53,9 @@
   virtual function void connect_phase(uvm_phase phase);
     super.connect_phase(phase);
     env.data_if_slave_agent.monitor.item_collected_port.connect(this.item_collected_port.analysis_export);
+    if (cfg.enable_irq_seq) begin
+      env.irq_agent.monitor.irq_port.connect(this.irq_collected_port.analysis_export);
+    end
   endfunction
 
   virtual task run_phase(uvm_phase phase);
@@ -73,6 +77,9 @@
     vseq.start(env.vseqr);
   endtask
 
+  virtual task check_perf_stats();
+  endtask
+
   function void load_binary_to_mem();
     string      bin;
     bit [7:0]   r8;
@@ -105,8 +112,11 @@
         `uvm_info(`gfn, "ECALL instruction is detected, test done", UVM_LOW)
         // De-assert fetch enable to finish the test
         dut_vif.fetch_enable = 1'b0;
-        // Wait some time for the remaining instruction to finish
-        clk_vif.wait_clks(100);
+        fork
+          check_perf_stats();
+          // Wait some time for the remaining instruction to finish
+          clk_vif.wait_clks(3000);
+        join
       end
       begin
         clk_vif.wait_clks(timeout_in_cycles);
@@ -165,12 +175,10 @@
 
   // Gets the next CORE_STATUS signature write and compares it against the provided core_status
   // type, throws uvm_error on mismatch
-  virtual task check_next_core_status(core_status_t core_status, error_msg="");
+  virtual task check_next_core_status(core_status_t core_status, string error_msg = "");
     wait_for_mem_txn(cfg.signature_addr, CORE_STATUS);
     signature_data = signature_data_q.pop_front();
-    if (signature_data != core_status) begin
-      `uvm_error(`gfn, error_msg)
-    end
+    `DV_CHECK_EQ_FATAL(signature_data, core_status, error_msg);
   endtask
 
   // Waits for a write to the address of the specified CSR and retrieves the csr data
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_seq_lib.sv b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_seq_lib.sv
index 0170a47..a27f1f0 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_seq_lib.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_seq_lib.sv
@@ -61,17 +61,38 @@
 
 endclass
 
-// Interrupt sequence
-class irq_seq extends core_base_seq#(irq_seq_item);
+// Interrupt sequences
+class irq_raise_single_seq extends core_base_seq#(irq_seq_item);
 
-  `uvm_object_utils(irq_seq)
+  `uvm_object_utils(irq_raise_single_seq)
   `uvm_object_new
 
   virtual task send_req();
     irq_seq_item irq;
-    irq = irq_seq_item::type_id::create($sformatf("irq[%0d]", iteration_cnt));
+    irq = irq_seq_item::type_id::create($sformatf("irq_raise_single[%0d]", iteration_cnt));
     start_item(irq);
-    `DV_CHECK_RANDOMIZE_FATAL(irq)
+    // TODO(udinator) -  constrain irq_timer to 0 for now due to timer interrupt causing spike
+    // simulator to trap to irq handler
+    `DV_CHECK_RANDOMIZE_WITH_FATAL(irq, irq_timer==0;)
+    finish_item(irq);
+    get_response(irq);
+  endtask
+
+endclass
+
+// Irq sequence to deassert all interrupt lines, since Ibex interrupts are level sensitive
+class irq_drop_seq extends core_base_seq#(irq_seq_item);
+
+  `uvm_object_utils(irq_drop_seq)
+  `uvm_object_new
+
+  // TODO(udinator) - for nested interrupt tests, test scenarios where a random number of interrupts
+  // are dropped
+  virtual task send_req();
+    irq_seq_item irq;
+    irq = irq_seq_item::type_id::create($sformatf("irq_drop[%0d]", iteration_cnt));
+    start_item(irq);
+    `DV_CHECK_RANDOMIZE_WITH_FATAL(irq, num_of_interrupt == 0;)
     finish_item(irq);
     get_response(irq);
   endtask
@@ -98,7 +119,7 @@
   virtual task send_req();
     `uvm_info(get_full_name(), "Sending debug request", UVM_HIGH)
     dut_vif.debug_req <= 1'b1;
-    clk_vif.wait_clks($urandom_range(10, 30));
+    clk_vif.wait_clks(50);
     dut_vif.debug_req <= 1'b0;
   endtask
 
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_test_lib.sv b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_test_lib.sv
index c306e5b..c3c0b0d 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_test_lib.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_test_lib.sv
@@ -31,12 +31,95 @@
 
 endclass
 
+// Performance counter test class
+class core_ibex_perf_test extends core_ibex_base_test;
+
+  `uvm_component_utils(core_ibex_perf_test)
+  `uvm_component_new
+
+  virtual task check_perf_stats();
+    bit [63:0] num_cycles, num_instr_ret, num_cycles_lsu, num_cycles_if, num_loads, num_stores,
+               num_jumps, num_branches, num_branches_taken, num_instr_ret_c;
+    wait_for_csr_write(CSR_MCYCLE);
+    num_cycles[31:0] = signature_data;
+    wait_for_csr_write(CSR_MCYCLEH);
+    num_cycles[63:32] = signature_data;
+    wait_for_csr_write(CSR_MINSTRET);
+    num_instr_ret[31:0] = signature_data;
+    wait_for_csr_write(CSR_MINSTRETH);
+    num_instr_ret[63:32] = signature_data;
+    // mhpmcounter3
+    wait_for_csr_write(12'hB03);
+    num_cycles_lsu[31:0] = signature_data;
+    // mhpmcounter4
+    wait_for_csr_write(12'hB04);
+    num_cycles_if[31:0] = signature_data;
+    // mhpmcounter5
+    wait_for_csr_write(12'hB05);
+    num_loads[31:0] = signature_data;
+    // mhpmcounter6
+    wait_for_csr_write(12'hB06);
+    num_stores[31:0] = signature_data;
+    // mhpmcounter7
+    wait_for_csr_write(12'hB07);
+    num_jumps[31:0] = signature_data;
+    // mhpmcounter8
+    wait_for_csr_write(12'hB08);
+    num_branches[31:0] = signature_data;
+    // mhpmcounter9
+    wait_for_csr_write(12'hB09);
+    num_branches_taken[31:0] = signature_data;
+    // mhpmcounter10
+    wait_for_csr_write(12'hB0A);
+    num_instr_ret_c[31:0] = signature_data;
+    // mhpmcounterh3
+    wait_for_csr_write(12'hB83);
+    num_cycles_lsu[63:32] = signature_data;
+    // mhpmcounterh4
+    wait_for_csr_write(12'hB84);
+    num_cycles_if[63:32] = signature_data;
+    // mhpmcounterh5
+    wait_for_csr_write(12'hB85);
+    num_loads[63:32] = signature_data;
+    // mhpmcounterh6
+    wait_for_csr_write(12'hB86);
+    num_stores[63:32] = signature_data;
+    // mhpmcounterh7
+    wait_for_csr_write(12'hB87);
+    num_jumps[63:32] = signature_data;
+    // mhpmcounterh8
+    wait_for_csr_write(12'hB88);
+    num_branches[63:32] = signature_data;
+    // mhpmcounterh9
+    wait_for_csr_write(12'hB89);
+    num_branches_taken[63:32] = signature_data;
+    // mhpmcounterh10
+    wait_for_csr_write(12'hB8A);
+    num_instr_ret_c[63:32] = signature_data;
+    `uvm_info(`gfn, $sformatf("NUM_CYCLES: 0x%0x", num_cycles), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_INSTR_RET: 0x%0x", num_instr_ret), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_CYCLES_LSU: 0x%0x", num_cycles_lsu), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_CYCLES_IF: 0x%0x", num_cycles_if), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_LOADS: 0x%0x", num_loads), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_STORES: 0x%0x", num_stores), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_JUMPS: 0x%0x", num_jumps), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_BRANCHES: 0x%0x", num_branches), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_BRANCHES_TAKEN: 0x%0x", num_branches_taken), UVM_LOW)
+    `uvm_info(`gfn, $sformatf("NUM_INSTR_RET_COMPRESSED: 0x%0x", num_instr_ret_c), UVM_LOW)
+  endtask
+
+endclass
+
 // Debug test class
 class core_ibex_debug_intr_basic_test extends core_ibex_base_test;
 
   `uvm_component_utils(core_ibex_debug_intr_basic_test)
   `uvm_component_new
 
+  bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] core_init_mstatus;
+  bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] core_init_mie;
+  bit [$clog2(irq_agent_pkg::DATA_WIDTH)-1:0]   irq_id;
+
   virtual task send_stimulus();
     fork
       begin
@@ -44,7 +127,7 @@
       end
       begin
         if (cfg.require_signature_addr) begin
-          wait_for_core_status(INITIALIZED);
+          wait_for_core_setup();
         end else begin
           // If no signature_addr functionality is desired, then the test will simply wait for an
           // adequate number of cycles
@@ -52,13 +135,15 @@
         end
         fork
           begin
-            if (cfg.enable_irq_stress_seq) begin
-              vseq.start_irq_stress_seq();
+            if (cfg.enable_irq_seq) begin
+              forever begin
+                send_irq_stimulus();
+              end
             end
           end
           begin
             if (cfg.enable_debug_stress_seq) begin
-              vseq.start_debug_stress_seq();
+              send_debug_stimulus();
             end
           end
         join_none
@@ -66,10 +151,119 @@
     join_none
   endtask
 
+  virtual task wait_for_core_setup();
+    wait_for_csr_write(CSR_MSTATUS);
+    core_init_mstatus = signature_data;
+    wait_for_csr_write(CSR_MIE);
+    core_init_mie = signature_data;
+    check_next_core_status(INITIALIZED, "Core initialization handshake failure");
+  endtask
+
+  // TODO(udi) - much of this checking logic is based on the current design only implementing
+  // MACHINE_MODE, the checking will have to be modified once USER_MODE is implemented and merged,
+  // e.g. need to also check mideleg for correct privilege mode context switch
+  virtual task send_irq_stimulus();
+    irq_seq_item                                  irq_txn;
+    bit [irq_agent_pkg::DATA_WIDTH-1:0]           irq;
+    bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] mstatus;
+    bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] mcause;
+    bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] mip;
+    bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] mie;
+    // send the interrupt
+    vseq.start_irq_single_seq();
+    irq_collected_port.get(irq_txn);
+    irq = {irq_txn.irq_nm, irq_txn.irq_fast, 4'b0, irq_txn.irq_external, 3'b0,
+           irq_txn.irq_timer, 3'b0, irq_txn.irq_software, 3'b0};
+    // Get the bit position of the highest priority interrupt - ibex will only handle this one if
+    // there are multiple irqs asserted at once
+    irq_id = get_max_irq_id(irq);
+    // If the interrupt is maskable, and the corresponding bit in MIE is not set, skip the next
+    // checks, as it means the interrupt in question is not enabled by Ibex, and drop the interrupt
+    // lines to avoid locking up the simulation
+    if (!irq_txn.irq_nm && !core_init_mie[irq_id]) begin
+      vseq.start_irq_drop_seq();
+      irq_collected_port.get(irq_txn);
+      irq = {irq_txn.irq_nm, irq_txn.irq_fast, 4'b0, irq_txn.irq_external, 3'b0,
+             irq_txn.irq_timer, 3'b0, irq_txn.irq_software, 3'b0};
+      `DV_CHECK_EQ_FATAL(irq, 0, "Interrupt lines have not been dropped")
+      return;
+    end
+    check_next_core_status(HANDLING_IRQ, "Core did not jump to vectored interrupt handler");
+    // check mstatus
+    wait_for_csr_write(CSR_MSTATUS);
+    mstatus = signature_data;
+    `DV_CHECK_EQ_FATAL(mstatus[12:11], PRIV_LVL_M, "Incorrect privilege mode")
+    `DV_CHECK_EQ_FATAL(mstatus[7], 1'b1, "mstatus.mpie was not set to 1'b1 after entering handler")
+    `DV_CHECK_EQ_FATAL(mstatus[3], 1'b0, "mstatus.mie was not set to 1'b0 after entering handler")
+    // check mcause against the interrupt id
+    wait_for_csr_write(CSR_MCAUSE);
+    mcause = signature_data;
+    // check that mcause.interrupt is set
+    `DV_CHECK_EQ_FATAL(mcause[ibex_mem_intf_agent_pkg::DATA_WIDTH-1], 1'b1,
+                       "mcause.interrupt is not set to 1'b1")
+    // check that mcause.exception_code matches the current interrupt's ID
+    `DV_CHECK_EQ_FATAL(mcause[ibex_mem_intf_agent_pkg::DATA_WIDTH-2:0], irq_id,
+                       "mcause.exception_code is encoding the wrong interrupt type")
+    // Wait for MIE and MIP to be written regardless of what interrupt ibex is dealing with, to
+    // prevent the case where MIP/MIE stays at 0 due to a nonmaskable interrupt, which will falsely
+    // trigger the following call of check_next_core_status()
+    wait_for_csr_write(CSR_MIE);
+    mie = signature_data;
+    wait_for_csr_write(CSR_MIP);
+    mip = signature_data;
+    // only check mip, and mie if the interrupt is not irq_nm, as Ibex's implementation of MIP and
+    // MIE CSRs do not contain a bit for irq_nm
+    if (!irq_txn.irq_nm) begin
+      // check that the proper bit in MIE is high
+      `DV_CHECK_EQ_FATAL(mie[irq_id], 1'b1,
+          $sformatf("mie[%0d] is not set, but core responded to corresponding interrupt", irq_id))
+      // check that the proper bit in MIP is high
+      `DV_CHECK_EQ_FATAL(mip[irq_id], 1'b1,
+          $sformatf("mip[%0d] is not set, but core responded to corresponding interrupt", irq_id))
+    end
+    // As Ibex interrupts are level sensitive, core must write to memory mapped address to
+    // indicate that irq stimulus be dropped
+    check_next_core_status(FINISHED_IRQ, "Core did not signal end of interrupt properly");
+    // Will receive irq_seq_item indicating that lines have been dropped
+    vseq.start_irq_drop_seq();
+    irq_collected_port.get(irq_txn);
+    irq = {irq_txn.irq_nm, irq_txn.irq_fast, 4'b0, irq_txn.irq_external, 3'b0,
+           irq_txn.irq_timer, 3'b0, irq_txn.irq_software, 3'b0};
+    `DV_CHECK_EQ_FATAL(irq, 0, "Interrupt lines have not been dropped")
+    wait (dut_vif.mret === 1'b1);
+  endtask
+
+  function int get_max_irq_id(bit [irq_agent_pkg::DATA_WIDTH-1:0] irq);
+    int i;
+    for (i = irq_agent_pkg::DATA_WIDTH-1; i >= 0; i = i - 1) begin
+      if (irq[i] === 1'b1) begin
+        return i;
+        break;
+      end
+    end
+  endfunction
+
+  // Basic debug stimulus check for Ibex for debug stimulus stress tests: check that Ibex enters
+  // debug mode properly after stimulus is sent and then check that a dret is encountered signifying
+  // the end of debug mode.
+  virtual task send_debug_stimulus();
+    fork
+      begin
+        vseq.start_debug_stress_seq();
+      end
+      begin
+        forever begin
+          wait_for_core_status(IN_DEBUG_MODE);
+          wait(dut_vif.dret === 1'b1);
+        end
+      end
+    join_none
+  endtask
+
 endclass
 
 // Base class for directed debug and irq test scenarios
-class core_ibex_directed_test extends core_ibex_base_test;
+class core_ibex_directed_test extends core_ibex_debug_intr_basic_test;
 
   `uvm_component_utils(core_ibex_directed_test)
   `uvm_component_new
@@ -84,23 +278,33 @@
           clk_vif.wait_clks(stimulus_delay);
           fork
             begin
-              if (cfg.enable_irq_stress_seq) begin
-                vseq.start_irq_stress_seq();
+              if (cfg.enable_irq_seq) begin
+                forever begin
+                  send_irq_stimulus();
+                end
               end
             end
             begin
               if (cfg.enable_debug_stress_seq) begin
-                vseq.start_debug_stress_seq();
+                send_debug_stimulus();
               end
             end
           join_none
         end else begin
           // Wait for core initialization before starting the stimulus check loop - first write
           // to signature address is guaranteed to be core initialization info
-          check_next_core_status(INITIALIZED, "Core initialization handshake failure");
+          wait_for_core_setup();
           // Should be extended by derived classes.
           // DO NOT use this test class directly.
-          check_stimulus();
+          fork
+            begin : stimulus
+              check_stimulus();
+            end : stimulus
+            begin
+              wait(dut_vif.ecall === 1'b1);
+              disable stimulus;
+            end
+          join
         end
       end
     join_none
@@ -150,6 +354,7 @@
     // is detected, and before any stimulus is sent to the core
     forever begin
       wait (dut_vif.wfi === 1'b1);
+      wait (dut_vif.core_sleep === 1'b1);
       clk_vif.wait_clks($urandom_range(100));
       vseq.start_debug_single_seq();
       // After assserting this signal, core should wake up and jump into debug mode from WFI state
@@ -181,7 +386,8 @@
       check_next_core_status(HANDLING_EXCEPTION, "Core did not jump to vectored exception handler");
       // The core will receive an illegal instruction handshake after jumping from the vectored trap
       // handler to the illegal instruction exception handler
-      check_next_core_status(ILLEGAL_INSTR_EXCEPTION, "Core did not treat dret like illegal instruction");
+      check_next_core_status(ILLEGAL_INSTR_EXCEPTION,
+                             "Core did not treat dret like illegal instruction");
     end
   endtask
 
@@ -200,7 +406,8 @@
     forever begin
       wait (dut_vif.ebreak === 1'b1);
       check_next_core_status(HANDLING_EXCEPTION, "Core did not jump to exception handler");
-      check_next_core_status(EBREAK_EXCEPTION, "Core did not jump from exception handler to ebreak handler");
+      check_next_core_status(EBREAK_EXCEPTION,
+                             "Core did not jump from exception handler to ebreak handler");
       wait (dut_vif.mret === 1'b1);
       // Want to wait until after the ebreak handler has finished to send debug stimulus, to avoid
       // nested trap scenarios
@@ -218,9 +425,11 @@
       wait (dut_vif.ebreak === 1'b1);
       // compare the second writes of dcsr and dpc against the captured values
       wait_for_csr_write(CSR_DCSR);
-      `DV_CHECK_EQ_FATAL(dcsr, signature_data, "ebreak inside the debug rom has changed the value of DCSR")
+      `DV_CHECK_EQ_FATAL(dcsr, signature_data,
+                         "ebreak inside the debug rom has changed the value of DCSR")
       wait_for_csr_write(CSR_DPC);
-      `DV_CHECK_EQ_FATAL(dpc, signature_data, "ebreak inside the debug rom has changed the value of DPC")
+      `DV_CHECK_EQ_FATAL(dpc, signature_data,
+                         "ebreak inside the debug rom has changed the value of DPC")
       wait (dut_vif.dret === 1'b1);
     end
   endtask
@@ -236,7 +445,8 @@
   virtual task check_stimulus();
     // send a single debug request after core initialization to configure dcsr
     vseq.start_debug_single_seq();
-    check_next_core_status(IN_DEBUG_MODE, "Core did not enter debug mode after debug_req stimulus");
+    check_next_core_status(IN_DEBUG_MODE,
+                           "Core did not enter debug mode after debug_req stimulus");
     // Read dcsr and verify the appropriate ebreak(m/s/u) bit has been set based on the prv field,
     // as well as the cause field
     wait_for_csr_write(CSR_DCSR);
@@ -245,7 +455,8 @@
     wait (dut_vif.dret === 1'b1);
     forever begin
       wait (dut_vif.ebreak === 1'b1);
-      check_next_core_status(IN_DEBUG_MODE, "Core did not enter debug mode after execution of ebreak");
+      check_next_core_status(IN_DEBUG_MODE,
+                             "Core did not enter debug mode after execution of ebreak");
       // Read dcsr and verify the appropriate ebreak(m/s/u) bit has been set based on the prv field
       wait_for_csr_write(CSR_DCSR);
       check_dcsr_ebreak();
@@ -255,3 +466,121 @@
   endtask
 
 endclass
+
+// Debug single step test
+class core_ibex_debug_single_step_test extends core_ibex_directed_test;
+
+  `uvm_component_utils(core_ibex_debug_single_step_test)
+  `uvm_component_new
+
+  virtual task check_stimulus();
+    bit[ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] ret_pc;
+    bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] counter = 0;
+    bit [ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] next_counter = 0;
+    forever begin
+      vseq.start_debug_single_seq();
+      check_next_core_status(IN_DEBUG_MODE,
+                             "Core did not enter debug mode after debug stimulus");
+      wait_for_csr_write(CSR_DPC);
+      ret_pc = signature_data;
+      wait_for_csr_write(CSR_DSCRATCH0);
+      next_counter = signature_data;
+      wait_for_csr_write(CSR_DCSR);
+      check_dcsr_cause(DBG_CAUSE_HALTREQ);
+      `DV_CHECK_EQ_FATAL(signature_data[1], 1'b1, "dcsr.step is not set")
+      wait(dut_vif.dret === 1'b1);
+      // now we loop on the counter until we are done single stepping
+      while (counter >= 0) begin
+        counter = next_counter;
+        check_next_core_status(IN_DEBUG_MODE,
+                               "Core did not enter debug mode after debug stimulus");
+        wait_for_csr_write(CSR_DPC);
+        if (signature_data - ret_pc !== 'h2 &&
+            signature_data - ret_pc !== 'h4) begin
+          `uvm_fatal(`gfn, $sformatf("DPC value [0x%0x] is not the next instruction after ret_pc [0x%0x]",
+                             signature_data, ret_pc))
+        end
+        ret_pc = signature_data;
+        wait_for_csr_write(CSR_DSCRATCH0);
+        next_counter = signature_data;
+        wait_for_csr_write(CSR_DCSR);
+        check_dcsr_cause(DBG_CAUSE_STEP);
+        if (counter === 0) begin
+          `DV_CHECK_EQ_FATAL(signature_data[2], 1'b0, "dcsr.step is set")
+        end else begin
+          `DV_CHECK_EQ_FATAL(signature_data[2], 1'b1, "dcsr.step is not set")
+        end
+        wait(dut_vif.dret === 1'b1);
+        if (counter === 0) break;
+      end
+      clk_vif.wait_clks(2000);
+    end
+  endtask
+
+endclass
+
+// Memory interface error test class
+class core_ibex_mem_error_test extends core_ibex_directed_test;
+
+  `uvm_component_utils(core_ibex_mem_error_test)
+  `uvm_component_new
+
+  int err_delay;
+
+  // check memory error inputs and verify that core jumps to correct exception handler
+  // TODO(udinator) - add checks for the RVFI interface
+  virtual task check_stimulus();
+    forever begin
+      while (!vseq.data_intf_seq.get_error_synch()) begin
+        clk_vif.wait_clks(1);
+      end
+      vseq.data_intf_seq.inject_error();
+      `uvm_info(`gfn, "Injected dmem error", UVM_LOW)
+      // Dmem interface error could be either a load or store operation
+      check_mem_fault(1'b1);
+      // Random delay before injecting instruction fetch fault
+      `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(err_delay, err_delay inside { [25:100] };)
+      clk_vif.wait_clks(err_delay);
+      while (!vseq.instr_intf_seq.get_error_synch()) begin
+        clk_vif.wait_clks(1);
+      end
+      `uvm_info(`gfn, "Injecting imem fault", UVM_LOW)
+      vseq.instr_intf_seq.inject_error();
+      check_mem_fault(1'b0);
+      // Random delay before injecting this series of errors again
+      `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(err_delay, err_delay inside { [250:750] };)
+      clk_vif.wait_clks(err_delay);
+    end
+  endtask
+
+  virtual task check_mem_fault(bit imem_or_dmem);
+    bit[ibex_mem_intf_agent_pkg::DATA_WIDTH-1:0] mcause;
+    core_status_t mem_status;
+    ibex_pkg::exc_cause_e exc_type;
+    check_next_core_status(HANDLING_EXCEPTION, "Core did not jump to exception handler");
+    if (imem_or_dmem) begin
+      // Next write of CORE_STATUS will be the load/store fault type
+      wait_for_mem_txn(cfg.signature_addr, CORE_STATUS);
+      mem_status = signature_data_q.pop_front();
+      if (mem_status == LOAD_FAULT_EXCEPTION) begin
+        exc_type = EXC_CAUSE_LOAD_ACCESS_FAULT;
+      end else if (mem_status == STORE_FAULT_EXCEPTION) begin
+        exc_type = EXC_CAUSE_STORE_ACCESS_FAULT;
+      end
+      `uvm_info(`gfn, $sformatf("0x%0x", exc_type), UVM_LOW)
+    end else begin
+      check_next_core_status(INSTR_FAULT_EXCEPTION, "Core did not register correct memory fault type");
+      exc_type = EXC_CAUSE_INSTR_ACCESS_FAULT;
+    end
+    wait_for_csr_write(CSR_MCAUSE);
+    mcause = signature_data;
+    `DV_CHECK_EQ_FATAL(mcause[ibex_mem_intf_agent_pkg::DATA_WIDTH-1], 1'b0,
+                       "mcause interrupt is not set to 1'b0")
+    `DV_CHECK_EQ_FATAL(mcause[ibex_mem_intf_agent_pkg::DATA_WIDTH-2:0],
+                       exc_type,
+                       "mcause.exception_code is encoding the wrong exception type")
+    wait(dut_vif.mret === 1'b1);
+    `uvm_info(`gfn, "exiting mem fault checker", UVM_LOW)
+  endtask
+
+endclass
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_vseq.sv b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_vseq.sv
index 53ccc75..2a754c6 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_vseq.sv
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/tests/core_ibex_vseq.sv
@@ -11,8 +11,8 @@
   ibex_mem_intf_slave_seq                       instr_intf_seq;
   ibex_mem_intf_slave_seq                       data_intf_seq;
   mem_model_pkg::mem_model                      mem;
-  irq_seq                                       irq_seq_stress_h;
-  irq_seq                                       irq_seq_single_h;
+  irq_raise_single_seq                          irq_single_seq_h;
+  irq_drop_seq                                  irq_drop_seq_h;
   debug_seq                                     debug_seq_stress_h;
   debug_seq                                     debug_seq_single_h;
   core_ibex_env_cfg                             cfg;
@@ -25,17 +25,18 @@
   virtual task body();
     instr_intf_seq = ibex_mem_intf_slave_seq::type_id::create("instr_intf_seq");
     data_intf_seq  = ibex_mem_intf_slave_seq::type_id::create("data_intf_seq");
-    if (cfg.enable_irq_stress_seq) begin
-      irq_seq_stress_h = irq_seq::type_id::create("irq_seq_stress_h");
-      irq_seq_stress_h.max_interval = cfg.max_interval;
-    end
-    if (cfg.enable_irq_single_seq) begin
-      irq_seq_single_h = irq_seq::type_id::create("irq_seq_single_h");
-      irq_seq_single_h.num_of_iterations = 1;
-      irq_seq_single_h.max_interval = 1;
-      irq_seq_single_h.max_delay = 1;
-      irq_seq_single_h.interval.rand_mode(0);
-      irq_seq_single_h.interval = 0;
+    if (cfg.enable_irq_seq) begin
+      irq_single_seq_h = irq_raise_single_seq::type_id::create("irq_seq_single_h");
+      irq_single_seq_h.num_of_iterations = 1;
+      irq_single_seq_h.max_interval = 1;
+      irq_single_seq_h.max_delay = 500;
+      irq_single_seq_h.interval = 0;
+
+      irq_drop_seq_h = irq_drop_seq::type_id::create("irq_drop_seq_h");
+      irq_drop_seq_h.num_of_iterations = 1;
+      irq_drop_seq_h.max_interval = 1;
+      irq_drop_seq_h.max_delay = 1;
+      irq_drop_seq_h.interval = 0;
     end
     if (cfg.enable_debug_stress_seq) begin
       debug_seq_stress_h = debug_seq::type_id::create("debug_seq_stress_h");
@@ -58,11 +59,9 @@
   endtask
 
   virtual task stop();
-    if (cfg.enable_irq_stress_seq) begin
-      irq_seq_stress_h.stop();
-    end
-    if (cfg.enable_irq_single_seq) begin
-      irq_seq_single_h.stop();
+    if (cfg.enable_irq_seq) begin
+      irq_single_seq_h.stop();
+      irq_drop_seq_h.stop();
     end
     if (cfg.enable_debug_stress_seq) begin
       debug_seq_stress_h.stop();
@@ -82,12 +81,12 @@
     debug_seq_single_h.start(null);
   endtask
 
-  virtual task start_irq_stress_seq();
-    irq_seq_stress_h.start(p_sequencer.irq_seqr);
+  virtual task start_irq_single_seq();
+    irq_single_seq_h.start(p_sequencer.irq_seqr);
   endtask
 
-  virtual task start_irq_single_seq();
-    irq_seq_single_h.start(p_sequencer.irq_seqr);
+  virtual task start_irq_drop_seq();
+    irq_drop_seq_h.start(p_sequencer.irq_seqr);
   endtask
 
 endclass
diff --git a/hw/vendor/lowrisc_ibex/dv/uvm/yaml/rtl_simulation.yaml b/hw/vendor/lowrisc_ibex/dv/uvm/yaml/rtl_simulation.yaml
index ea7037f..de497d8 100644
--- a/hw/vendor/lowrisc_ibex/dv/uvm/yaml/rtl_simulation.yaml
+++ b/hw/vendor/lowrisc_ibex/dv/uvm/yaml/rtl_simulation.yaml
@@ -45,3 +45,22 @@
       -cm_name test_<seed>
     wave_opts: >
       -ucli -do <cwd>/vcs.tcl
+
+- tool: dsim
+  env_var: DSIM,DSIM_LIB_PATH
+  compile:
+    cmd:
+      - "mkdir -p <out>/dsim"
+      - "<DSIM> -sv -work <out>/dsim
+                -genimage image
+                +incdir+$UVM_HOME/src
+                $UVM_HOME/src/uvm_pkg.sv
+                +define+DSIM
+                +acc+rwb
+                -f ibex_dv.f
+                -l <out>/dsim/compile.log"
+  sim:
+    cmd: >
+      <DSIM> <sim_opts> -sv_seed <seed> -pli_lib <DSIM_LIB_PATH>/libuvm_dpi.so +acc+rwb -image image -work <out>/dsim <wave_opts>
+    wave_opts: >
+      -waves waves.vcd
diff --git a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilated_toplevel.h b/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilated_toplevel.h
deleted file mode 100644
index 8b13671..0000000
--- a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilated_toplevel.h
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#ifndef VERILATED_TOPLEVEL_H_
-#define VERILATED_TOPLEVEL_H_
-
-#include <verilated.h>
-
-// VM_TRACE_FMT_FST must be set by the user when calling Verilator with
-// --trace-fst. VM_TRACE is set by Verilator itself.
-#if VM_TRACE == 1
-#  ifdef VM_TRACE_FMT_FST
-#    include "verilated_fst_c.h"
-#    define VM_TRACE_CLASS_NAME VerilatedFstC
-#  else
-#    include "verilated_vcd_c.h"
-#    define VM_TRACE_CLASS_NAME VerilatedVcdC
-#  endif
-#endif
-
-#if VM_TRACE == 1
-/**
- * "Base" for all tracers in Verilator with common functionality
- *
- * This class is (like the VerilatedToplevel class) a workaround for the
- * insufficient class hierarchy in Verilator-generated C++ code.
- *
- * Once Verilator is improved to support this functionality natively this class
- * should go away.
- */
-class VerilatedTracer {
- public:
-  VerilatedTracer() : impl_(nullptr) { impl_ = new VM_TRACE_CLASS_NAME(); };
-
-  ~VerilatedTracer() { delete impl_; }
-
-  bool isOpen() const { return impl_->isOpen(); };
-
-  void open(const char *filename) { impl_->open(filename); };
-
-  void close() { impl_->close(); };
-
-  void dump(vluint64_t timeui) { impl_->dump(timeui); }
-
-  operator VM_TRACE_CLASS_NAME *() const {
-    assert(impl_);
-    return impl_;
-  }
-
- private:
-  VM_TRACE_CLASS_NAME *impl_;
-};
-#else
-/**
- * No-op tracer interface
- */
-class VerilatedTracer {
- public:
-  VerilatedTracer(){};
-  ~VerilatedTracer() {}
-  bool isOpen() const { return false; };
-  void open(const char *filename){};
-  void close(){};
-  void dump(vluint64_t timeui) {}
-};
-#endif  // VM_TRACE == 1
-
-/**
- * Pure abstract class (interface) for verilated toplevel modules
- *
- * Verilator-produced toplevel modules do not have a common base class defining
- * the methods such as eval(); instead, they are only inheriting from the
- * generic VerilatedModule class, which doesn't have toplevel-specific
- * functionality. This makes it impossible to write code which accepts any
- * toplevel module as input by specifying the common "toplevel base class".
- *
- * This class, VerilatedToplevel, fills this gap by defining an abstract base
- * class for verilated toplevel modules. This class should be used together with
- * the VERILATED_TOPLEVEL macro.
- *
- * Note that this function is a workaround until Verilator gains this
- * functionality natively.
- *
- * To support the different tracing implementations (VCD, FST or no tracing),
- * the trace() function is modified to take a VerilatedTracer argument instead
- * of the tracer-specific class.
- */
-class VerilatedToplevel {
- public:
-  VerilatedToplevel(){};
-  virtual ~VerilatedToplevel(){};
-
-  virtual void eval() = 0;
-  virtual void final() = 0;
-  virtual const char *name() const = 0;
-  virtual void trace(VerilatedTracer &tfp, int levels, int options) = 0;
-};
-
-#define STR(s) #s
-
-#if VM_TRACE == 1
-#  define VERILATED_TOPLEVEL_TRACE_CALL(topname) \
-    V##topname::trace(static_cast<VM_TRACE_CLASS_NAME *>(tfp), levels, options);
-#else
-#  define VERILATED_TOPLEVEL_TRACE_CALL(topname) \
-    assert(0 && "Tracing not enabled.");
-#endif
-
-#define VERILATED_TOPLEVEL(topname)                                 \
-  class topname : public V##topname, public VerilatedToplevel {     \
-   public:                                                          \
-    topname(const char *name = "TOP")                               \
-        : V##topname(name), VerilatedToplevel() {}                  \
-    const char *name() const { return STR(topname); }               \
-    void eval() { V##topname::eval(); }                             \
-    void final() { V##topname::final(); }                           \
-    void trace(VerilatedTracer &tfp, int levels, int options = 0) { \
-      VERILATED_TOPLEVEL_TRACE_CALL(topname)                        \
-    }                                                               \
-  };
-
-#endif  // VERILATED_TOPLEVEL_H_
diff --git a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilator_sim_ctrl.cc b/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilator_sim_ctrl.cc
deleted file mode 100644
index d9aae69..0000000
--- a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilator_sim_ctrl.cc
+++ /dev/null
@@ -1,380 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#include "verilator_sim_ctrl.h"
-
-#include <getopt.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <vltstd/svdpi.h>
-
-#include <iostream>
-
-// This is defined by Verilator and passed through the command line
-#ifndef VM_TRACE
-#define VM_TRACE 0
-#endif
-
-// DPI Exports
-extern "C" {
-extern void simutil_verilator_memload(const char *file);
-}
-
-VerilatorSimCtrl::VerilatorSimCtrl(VerilatedToplevel *top, CData &sig_clk,
-                                   CData &sig_rst, VerilatorSimCtrlFlags flags)
-    : top_(top),
-      sig_clk_(sig_clk),
-      sig_rst_(sig_rst),
-      flags_(flags),
-      time_(0),
-      init_rom_(false),
-      init_ram_(false),
-      init_flash_(false),
-      tracing_enabled_(false),
-      tracing_enabled_changed_(false),
-      tracing_ever_enabled_(false),
-      tracing_possible_(VM_TRACE),
-      initial_reset_delay_cycles_(2),
-      reset_duration_cycles_(2),
-      request_stop_(false),
-      tracer_(VerilatedTracer()),
-      term_after_cycles_(0) {}
-
-void VerilatorSimCtrl::RequestStop() { request_stop_ = true; }
-
-bool VerilatorSimCtrl::TraceOn() {
-  bool old_tracing_enabled = tracing_enabled_;
-
-  tracing_enabled_ = tracing_possible_;
-  tracing_ever_enabled_ = tracing_enabled_;
-
-  if (old_tracing_enabled != tracing_enabled_) {
-    tracing_enabled_changed_ = true;
-  }
-  return tracing_enabled_;
-}
-
-bool VerilatorSimCtrl::TraceOff() {
-  if (tracing_enabled_) {
-    tracing_enabled_changed_ = true;
-  }
-  tracing_enabled_ = false;
-  return tracing_enabled_;
-}
-
-void VerilatorSimCtrl::PrintHelp() const {
-  std::cout << "Execute a simulation model for " << top_->name()
-            << "\n"
-               "\n";
-  if (tracing_possible_) {
-    std::cout << "-t|--trace             Write a trace file from the start\n";
-  }
-  std::cout << "-r|--rominit=VMEMFILE  Initialize the ROM with VMEMFILE\n"
-               "-m|--raminit=VMEMFILE  Initialize the RAM with VMEMFILE\n"
-               "-f|--flashinit=VMEMFILE  Initialize the FLASH with VMEMFILE\n"
-               "-h|--help              Show help\n"
-               "\n"
-               "All further arguments are passed to the design and can be used "
-               "in the \n"
-               "design, e.g. by DPI modules.\n";
-}
-
-void VerilatorSimCtrl::InitRom(std::string rom) {
-  if (!init_rom_) {
-    return;
-  }
-
-  svScope scope;
-
-  scope = svGetScopeFromName(rom.data());
-  if (!scope) {
-    std::cerr << "ERROR: No ROM found at " << rom << std::endl;
-    exit(1);
-  }
-  svSetScope(scope);
-
-  simutil_verilator_memload(rom_init_file_.data());
-
-  std::cout << std::endl
-            << "Rom initialized with program at " << rom_init_file_
-            << std::endl;
-}
-
-void VerilatorSimCtrl::InitRam(std::string ram) {
-  if (!init_ram_) {
-    return;
-  }
-
-  svScope scope;
-
-  scope = svGetScopeFromName(ram.data());
-  if (!scope) {
-    std::cerr << "ERROR: No RAM found at " << ram << std::endl;
-    exit(1);
-  }
-  svSetScope(scope);
-
-  simutil_verilator_memload(ram_init_file_.data());
-
-  std::cout << std::endl
-            << "Ram initialized with program at " << ram_init_file_
-            << std::endl;
-}
-
-void VerilatorSimCtrl::InitFlash(std::string flash) {
-  if (!init_flash_) {
-    return;
-  }
-
-  svScope scope;
-
-  scope = svGetScopeFromName(flash.data());
-  if (!scope) {
-    std::cerr << "ERROR: No FLASH found at " << flash << std::endl;
-    exit(1);
-  }
-  svSetScope(scope);
-
-  simutil_verilator_memload(flash_init_file_.data());
-
-  std::cout << std::endl
-            << "Flash initialized with program at " << flash_init_file_
-            << std::endl;
-}
-
-bool VerilatorSimCtrl::ParseCommandArgs(int argc, char **argv, int &retcode) {
-  const struct option long_options[] = {
-      {"rominit", required_argument, nullptr, 'r'},
-      {"raminit", required_argument, nullptr, 'm'},
-      {"flashinit", required_argument, nullptr, 'f'},
-      {"term-after-cycles", required_argument, nullptr, 'c'},
-      {"trace", no_argument, nullptr, 't'},
-      {"help", no_argument, nullptr, 'h'},
-      {nullptr, no_argument, nullptr, 0}};
-
-  while (1) {
-    int c = getopt_long(argc, argv, ":r:m:f:th", long_options, nullptr);
-    if (c == -1) {
-      break;
-    }
-
-    // Disable error reporting by getopt
-    opterr = 0;
-
-    switch (c) {
-      case 0:
-        break;
-      case 'r':
-        rom_init_file_ = optarg;
-        init_rom_ = true;
-        if (!IsFileReadable(rom_init_file_)) {
-          std::cerr << "ERROR: ROM initialization file "
-                    << "'" << rom_init_file_ << "'"
-                    << " is not readable." << std::endl;
-          return false;
-        }
-        break;
-      case 'm':
-        ram_init_file_ = optarg;
-        init_ram_ = true;
-        if (!IsFileReadable(ram_init_file_)) {
-          std::cerr << "ERROR: Memory initialization file "
-                    << "'" << ram_init_file_ << "'"
-                    << " is not readable." << std::endl;
-          return false;
-        }
-        break;
-      case 'f':
-        flash_init_file_ = optarg;
-        init_flash_ = true;
-        if (!IsFileReadable(flash_init_file_)) {
-          std::cerr << "ERROR: FLASH initialization file "
-                    << "'" << flash_init_file_ << "'"
-                    << " is not readable." << std::endl;
-          return false;
-        }
-        break;
-      case 't':
-        if (!tracing_possible_) {
-          std::cerr << "ERROR: Tracing has not been enabled at compile time."
-                    << std::endl;
-          return false;
-        }
-        TraceOn();
-        break;
-      case 'c':
-        term_after_cycles_ = atoi(optarg);
-        break;
-      case 'h':
-        PrintHelp();
-        return false;
-      case ':':  // missing argument
-        std::cerr << "ERROR: Missing argument." << std::endl;
-        PrintHelp();
-        return false;
-      case '?':
-      default:;
-        // Ignore unrecognized options since they might be consumed by
-        // Verilator's built-in parsing below.
-    }
-  }
-
-  Verilated::commandArgs(argc, argv);
-  return true;
-}
-
-void VerilatorSimCtrl::Trace() {
-  // We cannot output a message when calling TraceOn()/TraceOff() as these
-  // functions can be called from a signal handler. Instead we print the message
-  // here from the main loop.
-  if (tracing_enabled_changed_) {
-    if (TracingEnabled()) {
-      std::cout << "Tracing enabled." << std::endl;
-    } else {
-      std::cout << "Tracing disabled." << std::endl;
-    }
-    tracing_enabled_changed_ = false;
-  }
-
-  if (!TracingEnabled()) {
-    return;
-  }
-
-  if (!tracer_.isOpen()) {
-    tracer_.open(GetSimulationFileName());
-    std::cout << "Writing simulation traces to " << GetSimulationFileName()
-              << std::endl;
-  }
-
-  tracer_.dump(GetTime());
-}
-
-const char *VerilatorSimCtrl::GetSimulationFileName() const {
-#ifdef VM_TRACE_FMT_FST
-  return "sim.fst";
-#else
-  return "sim.vcd";
-#endif
-}
-
-void VerilatorSimCtrl::Run() {
-  // We always need to enable this as tracing can be enabled at runtime
-  if (tracing_possible_) {
-    Verilated::traceEverOn(true);
-    top_->trace(tracer_, 99, 0);
-  }
-
-  // Evaluate all initial blocks, including the DPI setup routines
-  top_->eval();
-
-  std::cout << std::endl
-            << "Simulation running, end by pressing CTRL-c." << std::endl;
-
-  time_begin_ = std::chrono::steady_clock::now();
-  UnsetReset();
-  Trace();
-  while (1) {
-    if (time_ >= initial_reset_delay_cycles_ * 2) {
-      SetReset();
-    }
-    if (time_ >= reset_duration_cycles_ * 2 + initial_reset_delay_cycles_ * 2) {
-      UnsetReset();
-    }
-
-    sig_clk_ = !sig_clk_;
-
-    top_->eval();
-    time_++;
-
-    Trace();
-
-    if (request_stop_) {
-      std::cout << "Received stop request, shutting down simulation."
-                << std::endl;
-      break;
-    }
-    if (Verilated::gotFinish()) {
-      std::cout << "Received $finish() from Verilog, shutting down simulation."
-                << std::endl;
-      break;
-    }
-    if (term_after_cycles_ && time_ > term_after_cycles_) {
-      std::cout << "Simulation timeout of " << term_after_cycles_
-                << " cycles reached, shutting down simulation." << std::endl;
-      break;
-    }
-  }
-
-  top_->final();
-  time_end_ = std::chrono::steady_clock::now();
-
-  if (TracingEverEnabled()) {
-    tracer_.close();
-  }
-}
-
-void VerilatorSimCtrl::SetReset() {
-  if (flags_ & ResetPolarityNegative) {
-    sig_rst_ = 0;
-  } else {
-    sig_rst_ = 1;
-  }
-}
-
-void VerilatorSimCtrl::UnsetReset() {
-  if (flags_ & ResetPolarityNegative) {
-    sig_rst_ = 1;
-  } else {
-    sig_rst_ = 0;
-  }
-}
-
-void VerilatorSimCtrl::SetInitialResetDelay(unsigned int cycles) {
-  initial_reset_delay_cycles_ = cycles;
-}
-
-void VerilatorSimCtrl::SetResetDuration(unsigned int cycles) {
-  reset_duration_cycles_ = cycles;
-}
-
-bool VerilatorSimCtrl::IsFileReadable(std::string filepath) {
-  struct stat statbuf;
-  return stat(filepath.data(), &statbuf) == 0;
-}
-
-bool VerilatorSimCtrl::FileSize(std::string filepath, int &size_byte) {
-  struct stat statbuf;
-  if (stat(filepath.data(), &statbuf) != 0) {
-    size_byte = 0;
-    return false;
-  }
-
-  size_byte = statbuf.st_size;
-  return true;
-}
-
-unsigned int VerilatorSimCtrl::GetExecutionTimeMs() {
-  return std::chrono::duration_cast<std::chrono::milliseconds>(time_end_ -
-                                                               time_begin_)
-      .count();
-}
-
-void VerilatorSimCtrl::PrintStatistics() {
-  double speed_hz = time_ / 2 / (GetExecutionTimeMs() / 1000.0);
-  double speed_khz = speed_hz / 1000.0;
-
-  std::cout << std::endl
-            << "Simulation statistics" << std::endl
-            << "=====================" << std::endl
-            << "Executed cycles:  " << time_ / 2 << std::endl
-            << "Wallclock time:   " << GetExecutionTimeMs() / 1000.0 << " s"
-            << std::endl
-            << "Simulation speed: " << speed_hz << " cycles/s "
-            << "(" << speed_khz << " kHz)" << std::endl;
-
-  int trace_size_byte;
-  if (tracing_enabled_ && FileSize(GetSimulationFileName(), trace_size_byte)) {
-    std::cout << "Trace file size:  " << trace_size_byte << " B" << std::endl;
-  }
-}
diff --git a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilator_sim_ctrl.h b/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilator_sim_ctrl.h
deleted file mode 100644
index 183939f..0000000
--- a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/cpp/verilator_sim_ctrl.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#ifndef VERILATOR_SIM_CTRL_H_
-#define VERILATOR_SIM_CTRL_H_
-
-#include <verilated.h>
-
-#include <chrono>
-#include <string>
-
-#include "verilated_toplevel.h"
-
-enum VerilatorSimCtrlFlags {
-  Defaults = 0,
-  ResetPolarityNegative = 1,
-};
-
-class VerilatorSimCtrl {
- public:
-  VerilatorSimCtrl(VerilatedToplevel *top, CData &clk, CData &rst_n,
-                   VerilatorSimCtrlFlags flags = Defaults);
-
-  /**
-   * Print help how to use this tool
-   */
-  void PrintHelp() const;
-
-  /**
-   * Parse command line arguments
-   *
-   * This removes all recognized command-line arguments from argc/argv.
-   *
-   * The return value of this method indicates if the program should exit with
-   * retcode: if this method returns true, do *not* exit; if it returns *false*,
-   * do exit.
-   */
-  bool ParseCommandArgs(int argc, char **argv, int &retcode);
-
-  /**
-   * Run the main loop of the simulation
-   *
-   * This function blocks until the simulation finishes.
-   */
-  void Run();
-
-  /**
-   * Initialize Rom
-   */
-  void InitRom(const std::string mem);
-
-  /**
-   * Initialize Ram
-   */
-  void InitRam(const std::string mem);
-
-  /**
-   * Initialize Flash
-   */
-  void InitFlash(const std::string mem);
-
-  /**
-   * Get the current time in ticks
-   */
-  unsigned long GetTime() { return time_; }
-
-  /**
-   * Set the number of clock cycles (periods) before the reset signal is
-   * activated
-   */
-  void SetInitialResetDelay(unsigned int cycles);
-
-  /**
-   * Set the number of clock cycles (periods) the reset signal is activated
-   */
-  void SetResetDuration(unsigned int cycles);
-
-  /**
-   * Request the simulation to stop
-   */
-  void RequestStop();
-
-  /**
-   * Enable tracing (if possible)
-   *
-   * Enabling tracing can fail if no tracing support has been compiled into the
-   * simulation.
-   *
-   * @return Is tracing enabled?
-   */
-  bool TraceOn();
-
-  /**
-   * Disable tracing
-   *
-   * @return Is tracing enabled?
-   */
-  bool TraceOff();
-
-  /**
-   * Is tracing currently enabled?
-   */
-  bool TracingEnabled() { return tracing_enabled_; }
-
-  /**
-   * Has tracing been ever enabled during the run?
-   *
-   * Tracing can be enabled and disabled at runtime.
-   */
-  bool TracingEverEnabled() { return tracing_ever_enabled_; }
-
-  /**
-   * Is tracing support compiled into the simulation?
-   */
-  bool TracingPossible() { return tracing_possible_; }
-
-  /**
-   * Print statistics about the simulation run
-   */
-  void PrintStatistics();
-
-  const char *GetSimulationFileName() const;
-
- private:
-  VerilatedToplevel *top_;
-  CData &sig_clk_;
-  CData &sig_rst_;
-  VerilatorSimCtrlFlags flags_;
-  unsigned long time_;
-  bool init_rom_;
-  bool init_ram_;
-  bool init_flash_;
-  std::string rom_init_file_;
-  std::string ram_init_file_;
-  std::string flash_init_file_;
-  bool tracing_enabled_;
-  bool tracing_enabled_changed_;
-  bool tracing_ever_enabled_;
-  bool tracing_possible_;
-  unsigned int initial_reset_delay_cycles_;
-  unsigned int reset_duration_cycles_;
-  volatile unsigned int request_stop_;
-  std::chrono::steady_clock::time_point time_begin_;
-  std::chrono::steady_clock::time_point time_end_;
-  VerilatedTracer tracer_;
-  int term_after_cycles_;
-
-  unsigned int GetExecutionTimeMs();
-  void SetReset();
-  void UnsetReset();
-  bool IsFileReadable(std::string filepath);
-  bool FileSize(std::string filepath, int &size_byte);
-  void Trace();
-};
-
-#endif  // VERILATOR_SIM_CTRL_H_
diff --git a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/simutil_verilator.core b/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/simutil_verilator.core
deleted file mode 100644
index 28b45f1..0000000
--- a/hw/vendor/lowrisc_ibex/dv/verilator/simutil_verilator/simutil_verilator.core
+++ /dev/null
@@ -1,19 +0,0 @@
-CAPI=2:
-# Copyright lowRISC contributors.
-# Licensed under the Apache License, Version 2.0, see LICENSE for details.
-# SPDX-License-Identifier: Apache-2.0
-
-name: "lowrisc:dv_verilator:simutil_verilator"
-description: "Verilator simulator support"
-filesets:
-  files_cpp:
-    files:
-      - cpp/verilator_sim_ctrl.cc
-      - cpp/verilator_sim_ctrl.h: { is_include_file: true }
-      - cpp/verilated_toplevel.h: { is_include_file: true }
-    file_type: cppSource
-
-targets:
-  default:
-    filesets:
-      - files_cpp
diff --git a/hw/vendor/lowrisc_ibex/examples/sim/README.md b/hw/vendor/lowrisc_ibex/examples/sim/README.md
deleted file mode 100644
index 8b310a8..0000000
--- a/hw/vendor/lowrisc_ibex/examples/sim/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Example: Ibex with enabled instruction tracing for simulation
-
-## Overview
-
-This examples shows the usage of the module `ibex_core_tracing` which forwards
-all port signals to the `ibex_core` and a subset of signals to `ibex_tracer`.
-The tracer will create a file with a stream of executed instructions.
-
-## Prerequisites
-
-For this example, `modelsim` must be available and the following environment
-variable must point to the path of installation:
-
-```
-export MODEL_TECH=/path/to/modelsim/bin
-```
-
-## Usage
-
-Run the following command in the top level directory.
-
-```
-fusesoc --cores-root=. run --target=sim lowrisc:ibex:top_tracing_sim
-```
-
-The trace output can be found in `build/lowrisc_ibex_top_tracing_sim_0.1/sim-modelsim/trace_core_00_0.log`.
diff --git a/hw/vendor/lowrisc_ibex/examples/sim/rtl/prim_clock_gating.sv b/hw/vendor/lowrisc_ibex/examples/sim/rtl/prim_clock_gating.sv
deleted file mode 100644
index ed13f44..0000000
--- a/hw/vendor/lowrisc_ibex/examples/sim/rtl/prim_clock_gating.sv
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Dummy clock gating module
-
-module prim_clock_gating (
-    input        clk_i,
-    input        en_i,
-    input        test_en_i,
-    output logic clk_o
-);
-
-  logic clk_en;
-
-  always_latch begin
-    if (clk_i == 1'b0) begin
-      clk_en <= en_i | test_en_i;
-    end
-  end
-
-  assign clk_o = clk_i & clk_en;
-
-endmodule
diff --git a/hw/vendor/lowrisc_ibex/examples/sim/tb/ibex_tracing_tb.sv b/hw/vendor/lowrisc_ibex/examples/sim/tb/ibex_tracing_tb.sv
deleted file mode 100644
index 59d4d9a..0000000
--- a/hw/vendor/lowrisc_ibex/examples/sim/tb/ibex_tracing_tb.sv
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Sample testbench for Ibex with tracing enabled
-// The `nop` instruction is the only input
-
-module ibex_tracing_tb;
-  logic         clk          = 1'b0;
-  logic         rst_n        = 1'b0;
-  logic [31:0]  instr_rdata  = 32'h00000013;
-  logic [31:0]  data_rdata   = 32'h00000000;
-  logic         instr_gnt    = 1'b0;
-  logic         instr_rvalid = 1'b0;
-
-  initial begin: clock_gen
-    forever begin
-      #5ns clk = 1'b0;
-      #5ns clk = 1'b1;
-    end
-  end
-
-  initial begin: reset_gen
-    rst_n = 1'b0;
-    #160ns rst_n = 1'b1;
-    #400ns $finish;
-  end
-
-  initial begin: instr_gen
-    #200ns instr_rdata  = 32'h81868106;
-           instr_rvalid = 1'b0;
-           instr_gnt    = 1'b1;
-    #10ns  instr_rvalid = 1'b1;
-           instr_gnt    = 1'b0;
-    #10ns  instr_rvalid = 1'b0;
-    #30ns  instr_rdata  = 32'h00400113;
-           instr_rvalid = 1'b0;
-           instr_gnt    = 1'b1;
-    #10ns  instr_rvalid = 1'b1;
-           instr_gnt    = 1'b0;
-    #10ns  instr_rvalid = 1'b0;
-           instr_rdata  = 32'hff810113;
-           instr_gnt    = 1'b1;
-    #10ns  instr_rvalid = 1'b1;
-           instr_gnt    = 1'b0;
-    #10ns  instr_rvalid = 1'b0;
-           instr_rdata  = 32'h4000006f;
-           instr_gnt    = 1'b1;
-    #10ns  instr_rvalid = 1'b1;
-           instr_gnt    = 1'b0;
-    #10ns  instr_rvalid = 1'b0;
-    #10ns  instr_rdata  = 32'h039597b3;
-           instr_gnt    = 1'b1;
-    #10ns  instr_rvalid = 1'b1;
-           instr_gnt    = 1'b1;
-    #10ns  instr_rdata  = 32'h13410d13;
-    #10ns  instr_rdata  = 32'he1070713;
-    #10ns  instr_rdata  = 32'hfff7c793;
-    #10ns  instr_rdata  = 32'h00000013;
-    #10ns  instr_rdata  = 32'h002d2c23;
-    #10ns  instr_rdata  = 32'h00000013;
-    #10ns  instr_rdata  = 32'h000d2083;
-           data_rdata   = 32'h12345678;
-    #10ns  instr_rdata  = 32'h60008113;
-    #10ns  instr_rdata  = 32'h00000013;
-    #10ns  instr_rdata  = 32'h002d2023;
-    #20ns  instr_rdata  = 32'h0000000f;
-    #10ns  instr_rdata  = 32'h00000113;
-    #30ns  instr_rdata  = 32'h00000013;
-    #10ns  instr_rdata  = 32'h0000000f;
-  end
-
-  ibex_core_tracing ibex_i (
-    .clk_i                  (clk),
-    .rst_ni                 (rst_n),
-
-    .test_en_i              (1'b0),
-
-    // Core ID, Cluster ID and boot address are considered more or less static
-    .hart_id_i              (32'b0),
-    .boot_addr_i            (32'b0),
-
-    // Instruction memory interface
-    .instr_req_o            (),
-    .instr_gnt_i            (instr_gnt),
-    .instr_rvalid_i         (instr_rvalid),
-    .instr_addr_o           (),
-    .instr_rdata_i          (instr_rdata),
-    .instr_err_i            (1'b0),
-
-    // Data memory interface
-    .data_req_o             (),
-    .data_gnt_i             (1'b1),
-    .data_rvalid_i          (1'b1),
-    .data_we_o              (),
-    .data_be_o              (),
-    .data_addr_o            (),
-    .data_wdata_o           (),
-    .data_rdata_i           (data_rdata),
-    .data_err_i             (1'b0),
-
-    // Interrupt inputs
-    .irq_software_i         (1'b0),
-    .irq_timer_i            (1'b0),
-    .irq_external_i         (1'b0),
-    .irq_fast_i             (15'b0),
-    .irq_nm_i               (1'b0),
-
-    // Debug Interface
-    .debug_req_i            (1'b0),
-
-    // CPU Control Signals
-    .fetch_enable_i         (1'b1),
-    .core_sleep_o           ()
-  );
-
-endmodule
diff --git a/hw/vendor/lowrisc_ibex/examples/sim/top_tracing_sim.core b/hw/vendor/lowrisc_ibex/examples/sim/top_tracing_sim.core
deleted file mode 100644
index d318bcc..0000000
--- a/hw/vendor/lowrisc_ibex/examples/sim/top_tracing_sim.core
+++ /dev/null
@@ -1,25 +0,0 @@
-CAPI=2:
-# Copyright lowRISC contributors.
-# Licensed under the Apache License, Version 2.0, see LICENSE for details.
-# SPDX-License-Identifier: Apache-2.0
-name: "lowrisc:ibex:top_tracing_sim:0.1"
-description: "Ibex with tracing enabled (ModelSim only right now)"
-filesets:
-  files_tb:
-    depend:
-      - lowrisc:ibex:ibex_core_tracing
-    files:
-      - rtl/prim_clock_gating.sv
-      - tb/ibex_tracing_tb.sv
-    file_type: systemVerilogSource
-
-targets:
-  sim:
-    default_tool: modelsim
-    filesets:
-      - files_tb
-    toplevel:
-      - ibex_tracing_tb
-    tools:
-      modelsim:
-        vlog_options: [-timescale 1ns/1ns]
diff --git a/hw/vendor/lowrisc_ibex/ibex_core.core b/hw/vendor/lowrisc_ibex/ibex_core.core
index 48c0e9a..1ab080a 100644
--- a/hw/vendor/lowrisc_ibex/ibex_core.core
+++ b/hw/vendor/lowrisc_ibex/ibex_core.core
@@ -46,6 +46,14 @@
     datatype: bool
     paramtype: vlogdefine
 
+  RV32E:
+    datatype: bool
+    paramtype: vlogparam
+
+  RV32M:
+    datatype: bool
+    paramtype: vlogparam
+
 targets:
   default:
     filesets:
@@ -61,6 +69,7 @@
       - files_lint
     parameters:
       - SYNTHESIS=true
+      - RVFI=true
     default_tool: verilator
     toplevel: ibex_core
     tools:
diff --git a/hw/vendor/lowrisc_ibex/ibex_core_tracing.core b/hw/vendor/lowrisc_ibex/ibex_core_tracing.core
index 0b9c897..f1cc613 100644
--- a/hw/vendor/lowrisc_ibex/ibex_core_tracing.core
+++ b/hw/vendor/lowrisc_ibex/ibex_core_tracing.core
@@ -13,6 +13,14 @@
       - rtl/ibex_core_tracing.sv
     file_type: systemVerilogSource
 
+  files_lint:
+    files:
+      - dv/uvm/tb/prim_clock_gating.sv: {file_type: systemVerilogSource}
+
+  files_lint_verilator:
+    files:
+      - lint/verilator_waiver.vlt: {file_type: vlt}
+
 parameters:
   # The tracer uses the RISC-V Formal Interface (RVFI) to collect trace signals.
   RVFI:
@@ -20,9 +28,42 @@
     paramtype: vlogdefine
     default: true
 
+  SYNTHESIS:
+    datatype: bool
+    paramtype: vlogdefine
+
+  RV32E:
+    datatype: bool
+    paramtype: vlogparam
+
+  RV32M:
+    datatype: bool
+    paramtype: vlogparam
+
+
+
 targets:
   default:
     filesets:
       - files_rtl
     parameters:
       - RVFI=true
+
+  lint:
+    filesets:
+      # Note on Verilator waivers:
+      # You *must* include the waiver file first, otherwise only global waivers
+      # are applied, but not file-specific waivers.
+      - tool_verilator ? (files_lint_verilator)
+      - files_rtl
+      - files_lint
+    parameters:
+      - RVFI=true
+      - SYNTHESIS=true
+    default_tool: verilator
+    toplevel: ibex_core_tracing
+    tools:
+      verilator:
+        mode: lint-only
+        verilator_options:
+          - "-Wall"
diff --git a/hw/vendor/lowrisc_ibex/lint/verilator_waiver.vlt b/hw/vendor/lowrisc_ibex/lint/verilator_waiver.vlt
index 22c77bd..fca9dc9 100644
--- a/hw/vendor/lowrisc_ibex/lint/verilator_waiver.vlt
+++ b/hw/vendor/lowrisc_ibex/lint/verilator_waiver.vlt
@@ -56,22 +56,22 @@
 
 // Signal is not used: csr_pmp_addr
 // Signal not connected when PMP is not configured
-lint_off -msg UNUSED -file "*/rtl/ibex_core.sv" -lines 185
+lint_off -msg UNUSED -file "*/rtl/ibex_core.sv" -lines 186
 
 // Signal is not used: csr_pmp_cfg
 // Signal not connected when PMP is not configured
-lint_off -msg UNUSED -file "*/rtl/ibex_core.sv" -lines 186
+lint_off -msg UNUSED -file "*/rtl/ibex_core.sv" -lines 187
 
 // Signal is not used: priv_mode
 // Signal not connected when PMP is not configured
-lint_off -msg UNUSED -file "*/rtl/ibex_core.sv" -lines 198
+lint_off -msg UNUSED -file "*/rtl/ibex_core.sv" -lines 199
 
 // Signal unoptimizable: Feedback to clock or circular logic:
 // ibex_core.id_stage_i.controller_i.ctrl_fsm_cs
 // Issue lowrisc/ibex#211
-lint_off -msg UNOPTFLAT -file "*/rtl/ibex_controller.sv" -lines 98
+lint_off -msg UNOPTFLAT -file "*/rtl/ibex_controller.sv" -lines 100
 
 // Signal unoptimizable: Feedback to clock or circular logic:
 // ibex_core.cs_registers_i.mie_q
 // Issue lowrisc/ibex#212
-lint_off -msg UNOPTFLAT -file "*/rtl/ibex_cs_registers.sv" -lines 149
+lint_off -msg UNOPTFLAT -file "*/rtl/ibex_cs_registers.sv" -lines 162
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_controller.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_controller.sv
index 5a8fc54..c521e9b 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_controller.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_controller.sv
@@ -74,6 +74,8 @@
     output logic                  csr_restore_mret_id_o,
     output logic                  csr_save_cause_o,
     output logic [31:0]           csr_mtval_o,
+    input  ibex_pkg::priv_lvl_e   priv_mode_i,
+    input  logic                  csr_mstatus_tw_i,
 
     // stall signals
     input  logic                  stall_lsu_i,
@@ -101,13 +103,14 @@
   logic debug_mode_q, debug_mode_d;
   logic load_err_q, load_err_d;
   logic store_err_q, store_err_d;
+  logic exc_req_q, exc_req_d;
+  logic illegal_insn_q, illegal_insn_d;
 
   logic stall;
   logic halt_if;
-  logic halt_id;
+  logic flush_id;
   logic illegal_dret;
-  logic illegal_insn;
-  logic exc_req;
+  logic illegal_umode;
   logic exc_req_lsu;
   logic special_req;
   logic enter_debug_mode;
@@ -116,13 +119,21 @@
   logic [3:0] mfip_id;
   logic       unused_csr_mtip;
 
+  logic ecall_insn;
+  logic mret_insn;
+  logic dret_insn;
+  logic wfi_insn;
+  logic ebrk_insn;
+  logic csr_pipe_flush;
+  logic instr_fetch_err;
+
 `ifndef SYNTHESIS
   // synopsys translate_off
   // make sure we are called later so that we do not generate messages for
   // glitches
   always_ff @(negedge clk_i) begin
     // print warning in case of decoding errors
-    if ((ctrl_fsm_cs == DECODE) && instr_valid_i && illegal_insn) begin
+    if ((ctrl_fsm_cs == DECODE) && instr_valid_i && !instr_fetch_err_i && illegal_insn_d) begin
       $display("%t: Illegal instruction (hart %0x) at PC 0x%h: 0x%h", $time, ibex_core.hart_id_i,
                ibex_id_stage.pc_id_i, ibex_id_stage.instr_rdata_i);
     end
@@ -137,20 +148,43 @@
   assign load_err_d  = load_err_i;
   assign store_err_d = store_err_i;
 
+  // Decoder doesn't take instr_valid into account, factor it in here.
+  assign ecall_insn      = ecall_insn_i      & instr_valid_i;
+  assign mret_insn       = mret_insn_i       & instr_valid_i;
+  assign dret_insn       = dret_insn_i       & instr_valid_i;
+  assign wfi_insn        = wfi_insn_i        & instr_valid_i;
+  assign ebrk_insn       = ebrk_insn_i       & instr_valid_i;
+  assign csr_pipe_flush  = csr_pipe_flush_i  & instr_valid_i;
+  assign instr_fetch_err = instr_fetch_err_i & instr_valid_i;
+
   // "Executing DRET outside of Debug Mode causes an illegal instruction exception."
   // [Debug Spec v0.13.2, p.41]
-  assign illegal_dret = dret_insn_i & ~debug_mode_q;
-  assign illegal_insn = illegal_insn_i | illegal_dret;
+  assign illegal_dret = dret_insn & ~debug_mode_q;
+
+  // Some instructions can only be executed in M-Mode
+  assign illegal_umode = (priv_mode_i != PRIV_LVL_M) &
+                         // MRET must be in M-Mode. TW means trap WFI to M-Mode.
+                         (mret_insn | (csr_mstatus_tw_i & wfi_insn));
+
+  // This is recorded in the illegal_insn_q flop to help timing.  Specifically
+  // it is needed to break the path from ibex_cs_registers/illegal_csr_insn_o
+  // to pc_set_o.  Clear when controller is in FLUSH so it won't remain set
+  // once illegal instruction is handled.
+  assign illegal_insn_d = (illegal_insn_i | illegal_dret | illegal_umode) & (ctrl_fsm_cs != FLUSH);
 
   // exception requests
-  assign exc_req     = ecall_insn_i | ebrk_insn_i | illegal_insn | instr_fetch_err_i;
+  // requests are flopped in exc_req_q.  This is cleared when controller is in
+  // the FLUSH state so the cycle following exc_req_q won't remain set for an
+  // exception request that has just been handled.
+  assign exc_req_d = (ecall_insn | ebrk_insn | illegal_insn_d | instr_fetch_err) &
+                     (ctrl_fsm_cs != FLUSH);
 
   // LSU exception requests
   assign exc_req_lsu = store_err_i | load_err_i;
 
   // special requests: special instructions, pipeline flushes, exceptions...
-  assign special_req = mret_insn_i | dret_insn_i | wfi_insn_i | csr_pipe_flush_i |
-      exc_req | exc_req_lsu;
+  assign special_req = mret_insn | dret_insn | wfi_insn | csr_pipe_flush |
+      exc_req_d | exc_req_lsu;
 
   ////////////////
   // Interrupts //
@@ -210,7 +244,7 @@
     first_fetch_o         = 1'b0;
 
     halt_if               = 1'b0;
-    halt_id               = 1'b0;
+    flush_id              = 1'b0;
 
     debug_csr_save_o      = 1'b0;
     debug_cause_o         = DBG_CAUSE_EBREAK;
@@ -244,7 +278,7 @@
         ctrl_busy_o   = 1'b0;
         instr_req_o   = 1'b0;
         halt_if       = 1'b1;
-        halt_id       = 1'b1;
+        flush_id      = 1'b1;
         ctrl_fsm_ns   = SLEEP;
       end
 
@@ -254,7 +288,7 @@
         ctrl_busy_o   = 1'b0;
         instr_req_o   = 1'b0;
         halt_if       = 1'b1;
-        halt_id       = 1'b1;
+        flush_id      = 1'b1;
 
         // normal execution flow
         // in debug mode or single step mode we leave immediately (wfi=nop)
@@ -276,14 +310,14 @@
           // going to sleep.
           ctrl_fsm_ns = IRQ_TAKEN;
           halt_if     = 1'b1;
-          halt_id     = 1'b1;
+          flush_id    = 1'b1;
         end
 
         // enter debug mode
         if (enter_debug_mode) begin
           ctrl_fsm_ns = DBG_TAKEN_IF;
           halt_if     = 1'b1;
-          halt_id     = 1'b1;
+          flush_id    = 1'b1;
         end
       end
 
@@ -296,21 +330,23 @@
 
         if (instr_valid_i) begin
 
+          // get ready for special instructions, exceptions, pipeline flushes
+          if (special_req) begin
+            // Halt IF but don't flush ID. This leaves a valid instruction in
+            // ID so controller can determine appropriate action in the
+            // FLUSH state.
+            ctrl_fsm_ns = FLUSH;
+            halt_if     = 1'b1;
           // set PC in IF stage to branch or jump target
-          if (branch_set_i || jump_set_i) begin
+          end else if (branch_set_i || jump_set_i) begin
             pc_mux_o       = PC_JUMP;
             pc_set_o       = 1'b1;
 
             perf_tbranch_o = branch_set_i;
             perf_jump_o    = jump_set_i;
-
-          // get ready for special instructions, exceptions, pipeline flushes
-          end else if (special_req) begin
-            ctrl_fsm_ns = FLUSH;
-            halt_if     = 1'b1;
-            halt_id     = 1'b1;
           end
 
+
           // stall IF stage to not starve debug and interrupt requests, these just
           // need to wait until after the current (multicycle) instruction
           if ((enter_debug_mode || handle_irq) && stall) begin
@@ -334,13 +370,13 @@
             // enter debug mode
             ctrl_fsm_ns = DBG_TAKEN_IF;
             halt_if     = 1'b1;
-            halt_id     = 1'b1;
+            flush_id    = 1'b1;
 
           end else if (handle_irq) begin
             // handle interrupt (not in debug mode)
             ctrl_fsm_ns = IRQ_TAKEN;
             halt_if     = 1'b1;
-            halt_id     = 1'b1;
+            flush_id    = 1'b1;
           end
         end
 
@@ -410,7 +446,7 @@
         //
         // for 1. do not update dcsr and dpc, for 2. do so [Debug Spec v0.13.2, p.39]
         // jump to debug exception handler in debug memory
-        if (ebrk_insn_i) begin
+        if (ebrk_insn) begin
           pc_mux_o     = PC_EXC;
           pc_set_o     = 1'b1;
           exc_pc_mux_o = EXC_PC_DBD;
@@ -437,12 +473,12 @@
       FLUSH: begin
         // flush the pipeline
         halt_if     = 1'b1;
-        halt_id     = 1'b1;
+        flush_id    = 1'b1;
         ctrl_fsm_ns = DECODE;
 
         // exceptions: set exception PC, save PC and exception cause
         // exc_req_lsu is high for one clock cycle only (in DECODE)
-        if (exc_req || store_err_q || load_err_q) begin
+        if (exc_req_q || store_err_q || load_err_q) begin
           pc_set_o         = 1'b1;
           pc_mux_o         = PC_EXC;
           exc_pc_mux_o     = debug_mode_q ? EXC_PC_DBG_EXC : EXC_PC_EXC;
@@ -450,18 +486,19 @@
           csr_save_cause_o = 1'b1;
 
           // set exception registers, priorities according to Table 3.7 of Privileged Spec v1.11
-          if (instr_fetch_err_i) begin
+          if (instr_fetch_err) begin
             exc_cause_o = EXC_CAUSE_INSTR_ACCESS_FAULT;
             csr_mtval_o = pc_id_i;
 
-          end else if (illegal_insn) begin
+          end else if (illegal_insn_q) begin
             exc_cause_o = EXC_CAUSE_ILLEGAL_INSN;
             csr_mtval_o = instr_is_compressed_i ? {16'b0, instr_compressed_i} : instr_i;
 
-          end else if (ecall_insn_i) begin
-            exc_cause_o = EXC_CAUSE_ECALL_MMODE;
+          end else if (ecall_insn) begin
+            exc_cause_o = (priv_mode_i == PRIV_LVL_M) ? EXC_CAUSE_ECALL_MMODE :
+                                                        EXC_CAUSE_ECALL_UMODE;
 
-          end else if (ebrk_insn_i) begin
+          end else if (ebrk_insn) begin
             if (debug_mode_q) begin
               /*
                * EBREAK in debug mode re-enters debug mode
@@ -508,24 +545,24 @@
 
         end else begin
           // special instructions and pipeline flushes
-          if (mret_insn_i) begin
+          if (mret_insn) begin
             pc_mux_o              = PC_ERET;
             pc_set_o              = 1'b1;
             csr_restore_mret_id_o = 1'b1;
             if (nmi_mode_q) begin
               nmi_mode_d          = 1'b0; // exit NMI mode
             end
-          end else if (dret_insn_i) begin
+          end else if (dret_insn) begin
             pc_mux_o              = PC_DRET;
             pc_set_o              = 1'b1;
             debug_mode_d          = 1'b0;
-          end else if (wfi_insn_i) begin
+          end else if (wfi_insn) begin
             ctrl_fsm_ns           = WAIT_SLEEP;
-          end else if (csr_pipe_flush_i && handle_irq) begin
+          end else if (csr_pipe_flush && handle_irq) begin
             // start handling IRQs when doing CSR-related pipeline flushes
             ctrl_fsm_ns           = IRQ_TAKEN;
           end
-        end // exc_req
+        end // exc_req_q
 
         // single stepping
         // set exception registers, but do not jump into handler [Debug Spec v0.13.2, p.44]
@@ -559,22 +596,29 @@
 
   // kill instr in IF-ID pipeline reg that are done, or if a
   // multicycle instr causes an exception for example
-  assign instr_valid_clear_o = ~stall |  halt_id;
+  // halt_if is another kind of stall, where the instr_valid bit must remain
+  // set (unless flush_id is set also). It cannot be factored directly into
+  // stall as this causes a combinational loop.
+  assign instr_valid_clear_o = ~(stall | halt_if) | flush_id;
 
   // update registers
   always_ff @(posedge clk_i or negedge rst_ni) begin : update_regs
     if (!rst_ni) begin
-      ctrl_fsm_cs  <= RESET;
-      nmi_mode_q   <= 1'b0;
-      debug_mode_q <= 1'b0;
-      load_err_q   <= 1'b0;
-      store_err_q  <= 1'b0;
+      ctrl_fsm_cs    <= RESET;
+      nmi_mode_q     <= 1'b0;
+      debug_mode_q   <= 1'b0;
+      load_err_q     <= 1'b0;
+      store_err_q    <= 1'b0;
+      exc_req_q      <= 1'b0;
+      illegal_insn_q <= 1'b0;
     end else begin
-      ctrl_fsm_cs  <= ctrl_fsm_ns;
-      nmi_mode_q   <= nmi_mode_d;
-      debug_mode_q <= debug_mode_d;
-      load_err_q   <= load_err_d;
-      store_err_q  <= store_err_d;
+      ctrl_fsm_cs    <= ctrl_fsm_ns;
+      nmi_mode_q     <= nmi_mode_d;
+      debug_mode_q   <= debug_mode_d;
+      load_err_q     <= load_err_d;
+      store_err_q    <= store_err_d;
+      exc_req_q      <= exc_req_d;
+      illegal_insn_q <= illegal_insn_d;
     end
   end
 
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_core.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_core.sv
index 4f5bafd..303f533 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_core.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_core.sv
@@ -11,13 +11,13 @@
  * Top level module of the ibex RISC-V core
  */
 module ibex_core #(
-    parameter bit          PMPEnable        = 0,
+    parameter bit          PMPEnable        = 1'b0,
     parameter int unsigned PMPGranularity   = 0,
     parameter int unsigned PMPNumRegions    = 4,
     parameter int unsigned MHPMCounterNum   = 0,
     parameter int unsigned MHPMCounterWidth = 40,
-    parameter bit RV32E                     = 0,
-    parameter bit RV32M                     = 1,
+    parameter bit          RV32E            = 1'b0,
+    parameter bit          RV32M            = 1'b1,
     parameter int unsigned DmHaltAddr       = 32'h1A110800,
     parameter int unsigned DmExceptionAddr  = 32'h1A110808
 ) (
@@ -147,6 +147,7 @@
 
   // CSR control
   logic        csr_access;
+  logic        valid_csr_id;
   csr_op_e     csr_op;
   csr_num_e    csr_addr;
   logic [31:0] csr_rdata;
@@ -195,7 +196,10 @@
   logic        csr_mtvec_init;
   logic [31:0] csr_mtvec;
   logic [31:0] csr_mtval;
-  priv_lvl_e   priv_mode;
+  logic        csr_mstatus_tw;
+  priv_lvl_e   priv_mode_id;
+  priv_lvl_e   priv_mode_if;
+  priv_lvl_e   priv_mode_lsu;
 
   // debug mode and dcsr configuration
   logic        debug_mode;
@@ -411,6 +415,8 @@
       .csr_restore_mret_id_o        ( csr_restore_mret_id    ), // restore mstatus upon MRET
       .csr_save_cause_o             ( csr_save_cause         ),
       .csr_mtval_o                  ( csr_mtval              ),
+      .priv_mode_i                  ( priv_mode_id           ),
+      .csr_mstatus_tw_i             ( csr_mstatus_tw         ),
       .illegal_csr_insn_i           ( illegal_csr_insn_id    ),
 
       // LSU
@@ -554,9 +560,13 @@
   assign perf_load  = data_req_o & data_gnt_i & (~data_we_o);
   assign perf_store = data_req_o & data_gnt_i & data_we_o;
 
+  // CSR access is qualified by instruction fetch error
+  assign valid_csr_id = instr_new_id & ~instr_fetch_err;
+
   ibex_cs_registers #(
       .MHPMCounterNum   ( MHPMCounterNum   ),
       .MHPMCounterWidth ( MHPMCounterWidth ),
+      .PMPEnable        ( PMPEnable        ),
       .PMPGranularity   ( PMPGranularity   ),
       .PMPNumRegions    ( PMPNumRegions    ),
       .RV32E            ( RV32E            ),
@@ -567,7 +577,9 @@
 
       // Hart ID from outside
       .hart_id_i               ( hart_id_i              ),
-      .priv_mode_o             ( priv_mode              ),
+      .priv_mode_id_o          ( priv_mode_id           ),
+      .priv_mode_if_o          ( priv_mode_if           ),
+      .priv_mode_lsu_o         ( priv_mode_lsu          ),
 
       // mtvec
       .csr_mtvec_o             ( csr_mtvec              ),
@@ -592,6 +604,7 @@
       .csr_meip_o              ( csr_meip               ),
       .csr_mfip_o              ( csr_mfip               ),
       .csr_mstatus_mie_o       ( csr_mstatus_mie        ),
+      .csr_mstatus_tw_o        ( csr_mstatus_tw         ),
       .csr_mepc_o              ( csr_mepc               ),
 
       // PMP
@@ -617,7 +630,7 @@
       .csr_mtval_i             ( csr_mtval              ),
       .illegal_csr_insn_o      ( illegal_csr_insn_id    ),
 
-      .instr_new_id_i          ( instr_new_id           ),
+      .instr_new_id_i          ( valid_csr_id           ),
 
       // performance counter related signals
       .instr_ret_i             ( instr_ret              ),
@@ -635,11 +648,14 @@
   if (PMPEnable) begin : g_pmp
     logic [33:0] pmp_req_addr [PMP_NUM_CHAN];
     pmp_req_e    pmp_req_type [PMP_NUM_CHAN];
+    priv_lvl_e   pmp_priv_lvl [PMP_NUM_CHAN];
 
     assign pmp_req_addr[PMP_I] = {2'b00,instr_addr_o[31:0]};
     assign pmp_req_type[PMP_I] = PMP_ACC_EXEC;
+    assign pmp_priv_lvl[PMP_I] = priv_mode_if;
     assign pmp_req_addr[PMP_D] = {2'b00,data_addr_o[31:0]};
     assign pmp_req_type[PMP_D] = data_we_o ? PMP_ACC_WRITE : PMP_ACC_READ;
+    assign pmp_priv_lvl[PMP_D] = priv_mode_lsu;
 
     ibex_pmp #(
         .PMPGranularity        ( PMPGranularity ),
@@ -651,13 +667,18 @@
         // Interface to CSRs
         .csr_pmp_cfg_i         ( csr_pmp_cfg    ),
         .csr_pmp_addr_i        ( csr_pmp_addr   ),
-        .priv_mode_i           ( priv_mode      ),
+        .priv_mode_i           ( pmp_priv_lvl   ),
         // Access checking channels
         .pmp_req_addr_i        ( pmp_req_addr   ),
         .pmp_req_type_i        ( pmp_req_type   ),
         .pmp_req_err_o         ( pmp_req_err    )
     );
   end else begin : g_no_pmp
+    // Unused signal tieoff
+    priv_lvl_e unused_priv_lvl_if, unused_priv_lvl_ls;
+    assign unused_priv_lvl_if = priv_mode_if;
+    assign unused_priv_lvl_ls = priv_mode_lsu;
+    // Output tieoff
     assign pmp_req_err[PMP_I] = 1'b0;
     assign pmp_req_err[PMP_D] = 1'b0;
   end
@@ -670,7 +691,7 @@
       rvfi_intr              <= '0;
       rvfi_order             <= '0;
       rvfi_insn              <= '0;
-      rvfi_mode              <= '0;
+      rvfi_mode              <= {PRIV_LVL_M};
       rvfi_rs1_addr          <= '0;
       rvfi_rs2_addr          <= '0;
       rvfi_pc_rdata          <= '0;
@@ -689,9 +710,9 @@
       rvfi_halt              <= '0;
       rvfi_trap              <= illegal_insn_id;
       rvfi_intr              <= rvfi_intr_d;
-      rvfi_order             <= rvfi_order + rvfi_valid;
+      rvfi_order             <= rvfi_order + 64'(rvfi_valid);
       rvfi_insn              <= rvfi_insn_id;
-      rvfi_mode              <= PRIV_LVL_M; // TODO: Update for user mode support
+      rvfi_mode              <= {priv_mode_id};
       rvfi_rs1_addr          <= rvfi_rs1_addr_id;
       rvfi_rs2_addr          <= rvfi_rs2_addr_id;
       rvfi_pc_rdata          <= pc_id;
@@ -779,7 +800,7 @@
         rvfi_rd_wdata_d   = '0;
       end else begin
         rvfi_rd_addr_d = rvfi_rd_addr_id;
-        if (!rvfi_rd_addr_id) begin
+        if (rvfi_rd_addr_id == 5'h0) begin
           rvfi_rd_wdata_d = '0;
         end else begin
           rvfi_rd_wdata_d = rvfi_rd_wdata_id;
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_core_tracing.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_core_tracing.sv
index 7331923..bd87ef0 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_core_tracing.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_core_tracing.sv
@@ -7,10 +7,13 @@
  * Top level module of the ibex RISC-V core with tracing enabled
  */
 module ibex_core_tracing #(
+    parameter bit          PMPEnable        = 1'b0,
+    parameter int unsigned PMPGranularity   = 0,
+    parameter int unsigned PMPNumRegions    = 4,
     parameter int unsigned MHPMCounterNum   = 8,
     parameter int unsigned MHPMCounterWidth = 40,
-    parameter bit RV32E                     = 0,
-    parameter bit RV32M                     = 1,
+    parameter bit          RV32E            = 1'b0,
+    parameter bit          RV32M            = 1'b1,
     parameter int unsigned DmHaltAddr       = 32'h1A110800,
     parameter int unsigned DmExceptionAddr  = 32'h1A110808
 ) (
@@ -62,7 +65,7 @@
 
   // ibex_tracer relies on the signals from the RISC-V Formal Interface
   `ifndef RVFI
-    Fatal error: RVFI needs to be defined globally.
+    $fatal("Fatal error: RVFI needs to be defined globally.");
   `endif
 
   logic        rvfi_valid;
@@ -87,6 +90,9 @@
   logic [31:0] rvfi_mem_wdata;
 
   ibex_core #(
+    .PMPEnable(PMPEnable),
+    .PMPGranularity(PMPGranularity),
+    .PMPNumRegions(PMPNumRegions),
     .MHPMCounterNum(MHPMCounterNum),
     .MHPMCounterWidth(MHPMCounterWidth),
     .RV32E(RV32E),
@@ -152,28 +158,33 @@
     .core_sleep_o
   );
 
+  ibex_tracer
+  u_ibex_tracer (
+    .clk_i,
+    .rst_ni,
 
-`ifndef VERILATOR
-  ibex_tracer u_ibex_tracer (
-      .clk_i            ( clk_i                  ),
-      .rst_ni           ( rst_ni                 ),
+    .hart_id_i,
 
-      .fetch_enable_i   ( fetch_enable_i         ),
-      .hart_id_i        ( hart_id_i              ),
-
-      .valid_i          ( rvfi_valid             ),
-      .pc_i             ( rvfi_pc_rdata          ),
-      .instr_i          ( rvfi_insn              ),
-      .rs1_value_i      ( rvfi_rs1_rdata         ),
-      .rs2_value_i      ( rvfi_rs2_rdata         ),
-      .ex_reg_addr_i    ( rvfi_rd_addr           ),
-      .ex_reg_wdata_i   ( rvfi_rd_wdata          ),
-      .ex_data_addr_i   ( rvfi_mem_addr          ),
-      .ex_data_wdata_i  ( rvfi_mem_wdata         ),
-      .ex_data_rdata_i  ( rvfi_mem_rdata         )
+    .rvfi_valid,
+    .rvfi_order,
+    .rvfi_insn,
+    .rvfi_trap,
+    .rvfi_halt,
+    .rvfi_intr,
+    .rvfi_mode,
+    .rvfi_rs1_addr,
+    .rvfi_rs2_addr,
+    .rvfi_rs1_rdata,
+    .rvfi_rs2_rdata,
+    .rvfi_rd_addr,
+    .rvfi_rd_wdata,
+    .rvfi_pc_rdata,
+    .rvfi_pc_wdata,
+    .rvfi_mem_addr,
+    .rvfi_mem_rmask,
+    .rvfi_mem_wmask,
+    .rvfi_mem_rdata,
+    .rvfi_mem_wdata
   );
-`else
-    // ibex_tracer uses language constructs which Verilator doesn't understand.
-`endif
 
 endmodule
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_cs_registers.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_cs_registers.sv
index d7763df..61e6690 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_cs_registers.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_cs_registers.sv
@@ -24,7 +24,12 @@
 
     // Hart ID
     input  logic [31:0]          hart_id_i,
-    output ibex_pkg::priv_lvl_e  priv_mode_o,
+
+    // Privilege mode
+    output ibex_pkg::priv_lvl_e  priv_mode_id_o,
+    output ibex_pkg::priv_lvl_e  priv_mode_if_o,
+    output ibex_pkg::priv_lvl_e  priv_mode_lsu_o,
+    output logic                 csr_mstatus_tw_o,
 
     // mtvec
     output logic [31:0]          csr_mtvec_o,
@@ -112,8 +117,15 @@
     logic      mie;
     logic      mpie;
     priv_lvl_e mpp;
+    logic      mprv;
+    logic      tw;
   } Status_t;
 
+  typedef struct packed {
+    logic      mpie;
+    priv_lvl_e mpp;
+  } StatusStk_t;
+
   // struct for mip/mie CSRs
   typedef struct packed {
     logic        irq_software;
@@ -145,6 +157,7 @@
   logic [31:0] exception_pc;
 
   // CSRs
+  priv_lvl_e   priv_lvl_q, priv_lvl_d;
   Status_t     mstatus_q, mstatus_d;
   Interrupts_t mie_q, mie_d;
   logic [31:0] mscratch_q, mscratch_d;
@@ -160,7 +173,7 @@
 
   // CSRs for recoverable NMIs
   // NOTE: these CSRS are nonstandard, see https://github.com/riscv/riscv-isa-manual/issues/261
-  Status_t     mstack_q, mstack_d;
+  StatusStk_t  mstack_q, mstack_d;
   logic [31:0] mstack_epc_q, mstack_epc_d;
   logic  [5:0] mstack_cause_q, mstack_cause_d;
 
@@ -204,11 +217,12 @@
   assign csr_addr           = {csr_addr_i};
   assign mhpmcounter_idx    = csr_addr[4:0];
 
-  assign illegal_csr_priv   = 1'b0; // we only support M-mode
+  // See RISC-V Privileged Specification, version 1.11, Section 2.1
+  assign illegal_csr_priv   = (csr_addr[9:8] > {priv_lvl_q});
   assign illegal_csr_write  = (csr_addr[11:10] == 2'b11) && csr_wreq;
-  assign illegal_csr_insn_o = illegal_csr | illegal_csr_write | illegal_csr_priv;
+  assign illegal_csr_insn_o = csr_access_i & (illegal_csr | illegal_csr_write | illegal_csr_priv);
 
-  // mip CSR is purely combintational - must be able to re-enable the clock upon WFI
+  // mip CSR is purely combinational - must be able to re-enable the clock upon WFI
   assign mip.irq_software = irq_software_i & mie_q.irq_software;
   assign mip.irq_timer    = irq_timer_i    & mie_q.irq_timer;
   assign mip.irq_external = irq_external_i & mie_q.irq_external;
@@ -229,6 +243,7 @@
         csr_rdata_int[CSR_MSTATUS_MIE_BIT]                              = mstatus_q.mie;
         csr_rdata_int[CSR_MSTATUS_MPIE_BIT]                             = mstatus_q.mpie;
         csr_rdata_int[CSR_MSTATUS_MPP_BIT_HIGH:CSR_MSTATUS_MPP_BIT_LOW] = mstatus_q.mpp;
+        csr_rdata_int[CSR_MSTATUS_MPRV_BIT]                             = mstatus_q.mprv;
       end
 
       // misa
@@ -323,7 +338,7 @@
           if ((csr_addr[4:0] == 5'b00000) ||     // CSR_MCOUNTINHIBIT
               (csr_addr[4:0] == 5'b00001) ||
               (csr_addr[4:0] == 5'b00010)) begin
-            illegal_csr = csr_access_i;
+            illegal_csr = 1'b1;
           end
 
         end else if ((csr_addr & CSR_MASK_MCOUNTER) == CSR_OFF_MCOUNTER) begin
@@ -332,7 +347,7 @@
           if ((csr_addr[4:0] == 5'b00000) ||     // CSR_MCYCLE
               (csr_addr[4:0] == 5'b00001) ||
               (csr_addr[4:0] == 5'b00010)) begin // CSR_MINSTRET
-            illegal_csr = csr_access_i;
+            illegal_csr = 1'b1;
           end
 
         end else if ((csr_addr & CSR_MASK_MCOUNTER) == CSR_OFF_MCOUNTERH) begin
@@ -341,10 +356,10 @@
           if ((csr_addr[4:0] == 5'b00000) ||     // CSR_MCYCLEH
               (csr_addr[4:0] == 5'b00001) ||
               (csr_addr[4:0] == 5'b00010)) begin // CSR_MINSTRETH
-            illegal_csr = csr_access_i;
+            illegal_csr = 1'b1;
           end
         end else begin
-          illegal_csr = csr_access_i;
+          illegal_csr = 1'b1;
         end
       end
     endcase
@@ -354,6 +369,7 @@
   always_comb begin
     exception_pc = pc_id_i;
 
+    priv_lvl_d   = priv_lvl_q;
     mstatus_d    = mstatus_q;
     mie_d        = mie_q;
     mscratch_d   = mscratch_q;
@@ -374,49 +390,54 @@
     mhpmcounter_we   = '0;
     mhpmcounterh_we  = '0;
 
-    unique case (csr_addr_i)
-      // mstatus: IE bit
-      CSR_MSTATUS: begin
-        if (csr_we_int) begin
+    if (csr_we_int) begin
+      unique case (csr_addr_i)
+        // mstatus: IE bit
+        CSR_MSTATUS: begin
           mstatus_d = '{
               mie:  csr_wdata_int[CSR_MSTATUS_MIE_BIT],
               mpie: csr_wdata_int[CSR_MSTATUS_MPIE_BIT],
-              mpp:  PRIV_LVL_M
+              mpp:  priv_lvl_e'(csr_wdata_int[CSR_MSTATUS_MPP_BIT_HIGH:CSR_MSTATUS_MPP_BIT_LOW]),
+              mprv: csr_wdata_int[CSR_MSTATUS_MPRV_BIT],
+              tw:   csr_wdata_int[CSR_MSTATUS_TW_BIT]
           };
+          // Convert illegal values to M-mode
+          if ((mstatus_d.mpp != PRIV_LVL_M) && (mstatus_d.mpp != PRIV_LVL_U)) begin
+            mstatus_d.mpp = PRIV_LVL_M;
+          end
         end
-      end
 
-      // interrupt enable
-      CSR_MIE: begin
-        if (csr_we_int) begin
+        // interrupt enable
+        CSR_MIE: begin
           mie_d.irq_software = csr_wdata_int[CSR_MSIX_BIT];
           mie_d.irq_timer    = csr_wdata_int[CSR_MTIX_BIT];
           mie_d.irq_external = csr_wdata_int[CSR_MEIX_BIT];
           mie_d.irq_fast     = csr_wdata_int[CSR_MFIX_BIT_HIGH:CSR_MFIX_BIT_LOW];
         end
-      end
 
-      CSR_MSCRATCH: if (csr_we_int) mscratch_d = csr_wdata_int;
+        CSR_MSCRATCH: mscratch_d = csr_wdata_int;
 
-      // mepc: exception program counter
-      CSR_MEPC: if (csr_we_int) mepc_d = {csr_wdata_int[31:1], 1'b0};
+        // mepc: exception program counter
+        CSR_MEPC: mepc_d = {csr_wdata_int[31:1], 1'b0};
 
-      // mcause
-      CSR_MCAUSE: if (csr_we_int) mcause_d = {csr_wdata_int[31], csr_wdata_int[4:0]};
+        // mcause
+        CSR_MCAUSE: mcause_d = {csr_wdata_int[31], csr_wdata_int[4:0]};
 
-      // mtval: trap value
-      CSR_MTVAL: if (csr_we_int) mtval_d = csr_wdata_int;
+        // mtval: trap value
+        CSR_MTVAL: mtval_d = csr_wdata_int;
 
-      // mtvec
-      // mtvec.MODE set to vectored
-      // mtvec.BASE must be 256-byte aligned
-      CSR_MTVEC: if (csr_we_int) mtvec_d = {csr_wdata_int[31:8], 6'b0, 2'b01};
+        // mtvec
+        // mtvec.MODE set to vectored
+        // mtvec.BASE must be 256-byte aligned
+        CSR_MTVEC: mtvec_d = {csr_wdata_int[31:8], 6'b0, 2'b01};
 
-      CSR_DCSR: begin
-        if (csr_we_int) begin
+        CSR_DCSR: begin
           dcsr_d = csr_wdata_int;
           dcsr_d.xdebugver = XDEBUGVER_STD;
-          dcsr_d.prv = PRIV_LVL_M; // only M-mode is supported
+          // Change to PRIV_LVL_M if sofware writes an unsupported value
+          if ((dcsr_d.prv != PRIV_LVL_M) && (dcsr_d.prv != PRIV_LVL_U)) begin
+            dcsr_d.prv = PRIV_LVL_M;
+          end
 
           // currently not supported:
           dcsr_d.nmip = 1'b0;
@@ -429,59 +450,24 @@
           dcsr_d.zero1 = 1'b0;
           dcsr_d.zero2 = 12'h0;
         end
-      end
 
-      CSR_DPC: begin
-        // Only valid PC addresses are allowed (half-word aligned with C ext.)
-        if (csr_we_int && csr_wdata_int[0] == 1'b0) begin
-          depc_d = csr_wdata_int;
+        CSR_DPC: begin
+          // Only valid PC addresses are allowed (half-word aligned with C ext.)
+          if (csr_wdata_int[0] == 1'b0) begin
+            depc_d = csr_wdata_int;
+          end
         end
-      end
 
-      CSR_DSCRATCH0: begin
-        if (csr_we_int) begin
-          dscratch0_d = csr_wdata_int;
-        end
-      end
+        CSR_DSCRATCH0: dscratch0_d = csr_wdata_int;
+        CSR_DSCRATCH1: dscratch1_d = csr_wdata_int;
 
-      CSR_DSCRATCH1: begin
-        if (csr_we_int) begin
-          dscratch1_d = csr_wdata_int;
-        end
-      end
+        CSR_MCOUNTINHIBIT: mcountinhibit_we   = 1'b1;
+        CSR_MCYCLE:        mhpmcounter_we[0]  = 1'b1;
+        CSR_MCYCLEH:       mhpmcounterh_we[0] = 1'b1;
+        CSR_MINSTRET:      mhpmcounter_we[2]  = 1'b1;
+        CSR_MINSTRETH:     mhpmcounterh_we[2] = 1'b1;
 
-      CSR_MCOUNTINHIBIT: begin
-        if (csr_we_int) begin
-          mcountinhibit_we = 1'b1;
-        end
-      end
-
-      CSR_MCYCLE: begin
-        if (csr_we_int) begin
-          mhpmcounter_we[0] = 1'b1;
-        end
-      end
-
-      CSR_MCYCLEH: begin
-        if (csr_we_int) begin
-          mhpmcounterh_we[0] = 1'b1;
-        end
-      end
-
-      CSR_MINSTRET: begin
-        if (csr_we_int) begin
-          mhpmcounter_we[2] = 1'b1;
-        end
-      end
-
-      CSR_MINSTRETH: begin
-        if (csr_we_int) begin
-          mhpmcounterh_we[2] = 1'b1;
-        end
-      end
-
-      default: begin
-        if (csr_we_int == 1'b1) begin
+        default: begin
           // performance counters and event selector
           if ((csr_addr & CSR_MASK_MCOUNTER) == CSR_OFF_MCOUNTER) begin
             mhpmcounter_we[mhpmcounter_idx] = 1'b1;
@@ -489,8 +475,8 @@
             mhpmcounterh_we[mhpmcounter_idx] = 1'b1;
           end
         end
-      end
-    endcase
+      endcase
+    end
 
     // exception controller gets priority over other writes
     unique case (1'b1)
@@ -509,15 +495,16 @@
         if (debug_csr_save_i) begin
           // all interrupts are masked
           // do not update cause, epc, tval, epc and status
-          dcsr_d.prv   = PRIV_LVL_M;
+          dcsr_d.prv   = priv_lvl_q;
           dcsr_d.cause = debug_cause_i;
           depc_d       = exception_pc;
         end else begin
+          priv_lvl_d     = PRIV_LVL_M;
           mtval_d        = csr_mtval_i;
           mstatus_d.mie  = 1'b0; // disable interrupts
           // save current status
           mstatus_d.mpie = mstatus_q.mie;
-          mstatus_d.mpp  = PRIV_LVL_M;
+          mstatus_d.mpp  = priv_lvl_q;
           mepc_d         = exception_pc;
           mcause_d       = {csr_mcause_i};
           // save previous status for recoverable NMI
@@ -529,12 +516,15 @@
       end // csr_save_cause_i
 
       csr_restore_mret_i: begin // MRET
+        priv_lvl_d     = mstatus_q.mpp;
         mstatus_d.mie  = mstatus_q.mpie; // re-enable interrupts
         // restore previous status for recoverable NMI
         mstatus_d.mpie = mstack_q.mpie;
         mstatus_d.mpp  = mstack_q.mpp;
         mepc_d         = mstack_epc_q;
         mcause_d       = mstack_cause_q;
+        mstack_d.mpie  = 1'b1;
+        mstack_d.mpp   = PRIV_LVL_U;
       end // csr_restore_mret_i
 
       default:;
@@ -576,6 +566,7 @@
   assign csr_mtvec_o = mtvec_q;
 
   assign csr_mstatus_mie_o   = mstatus_q.mie;
+  assign csr_mstatus_tw_o    = mstatus_q.tw;
   assign debug_single_step_o = dcsr_q.step;
   assign debug_ebreakm_o     = dcsr_q.ebreakm;
 
@@ -584,10 +575,13 @@
   // actual registers
   always_ff @(posedge clk_i or negedge rst_ni) begin
     if (!rst_ni) begin
+      priv_lvl_q     <= PRIV_LVL_M;
       mstatus_q      <= '{
           mie:  1'b0,
-          mpie: 1'b0,
-          mpp:  PRIV_LVL_M
+          mpie: 1'b1,
+          mpp:  PRIV_LVL_U,
+          mprv: 1'b0,
+          tw:   1'b0
       };
       mie_q          <= '0;
       mscratch_q     <= '0;
@@ -606,15 +600,15 @@
       dscratch1_q    <= '0;
 
       mstack_q       <= '{
-          mie:  1'b0,
-          mpie: 1'b0,
-          mpp:  PRIV_LVL_M
+          mpie: 1'b1,
+          mpp:  PRIV_LVL_U
       };
       mstack_epc_q   <= '0;
       mstack_cause_q <= '0;
 
     end else begin
       // update CSRs
+      priv_lvl_q     <= priv_lvl_d;
       mstatus_q      <= mstatus_d;
       mie_q          <= mie_d;
       mscratch_q     <= mscratch_d;
@@ -634,7 +628,12 @@
     end
   end
 
-  assign priv_mode_o = mstatus_q.mpp;
+  // Send current priv level to the decoder
+  assign priv_mode_id_o = priv_lvl_q;
+  // New instruction fetches need to account for updates to priv_lvl_q this cycle
+  assign priv_mode_if_o = priv_lvl_d;
+  // Load/store instructions must factor in MPRV for PMP checking
+  assign priv_mode_lsu_o = mstatus_q.mprv ? mstatus_q.mpp : priv_lvl_q;
 
   // -----------------
   // PMP registers
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_fetch_fifo.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_fetch_fifo.sv
index 6d4fba9..e2e5639 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_fetch_fifo.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_fetch_fifo.sv
@@ -9,7 +9,9 @@
  * input port: send address and data to the FIFO
  * clear_i clears the FIFO for the following cycle, including any new request
  */
-module ibex_fetch_fifo (
+module ibex_fetch_fifo #(
+  parameter int unsigned NUM_REQS = 2
+) (
     input  logic        clk_i,
     input  logic        rst_ni,
 
@@ -31,10 +33,9 @@
     output logic        out_err_o
 );
 
-  localparam int unsigned DEPTH = 3; // must be 3 or greater
+  localparam int unsigned DEPTH = NUM_REQS+1;
 
   // index 0 is used for output
-  logic [DEPTH-1:0] [31:2]  addr_d,    addr_q;
   logic [DEPTH-1:0] [31:0]  rdata_d,   rdata_q;
   logic [DEPTH-1:0]         err_d,     err_q;
   logic [DEPTH-1:0]         valid_d,   valid_q;
@@ -47,9 +48,11 @@
   logic                     err,   err_unaligned;
   logic                     valid, valid_unaligned;
 
-  logic                     entry0_unaligned_d, entry0_unaligned_q;
   logic                     aligned_is_compressed, unaligned_is_compressed;
-  
+
+  logic                     addr_incr_two;
+  logic [31:1]              instr_addr_d, instr_addr_q;
+  logic                     instr_addr_en;
   logic                     unused_addr_in;
 
   /////////////////
@@ -70,21 +73,6 @@
   // The FIFO also has a direct bypass path, so a complete instruction might be made up of data
   // from the FIFO and new incoming data.
   //
-  // Additionally, branches can cause a fetch from an unaligned address. The full data word will be
-  // fetched, but the FIFO must output the unaligned instruction as the first valid data.
-
-  // Alignment is tracked with a flag, this records whether entry[0] of the FIFO has become unaligned.
-  // The flag is set once any compressed instruction enters the FIFO and is only cleared once a
-  // a compressed instruction realigns the FIFO, or the FIFO is cleared.
-
-                              // New incoming unaligned request (must be a branch) or already unaligned
-  assign entry0_unaligned_d = ((((in_valid_i & in_addr_i[1]) | entry0_unaligned_q) &
-                                // cleared by a compressed unaligned instruction
-                                ~(out_ready_i & unaligned_is_compressed)) |
-                               // Also set when a new aligned compressed instruction is driven
-                               (valid & out_ready_i & ~out_addr_o[1] & aligned_is_compressed)) &
-                              // reset by a FIFO clear
-                              ~clear_i;
 
   // Construct the output data for an unaligned instruction
   assign rdata_unaligned = valid_q[1] ? {rdata_q[1][15:0], rdata[31:16]} :
@@ -129,8 +117,29 @@
     end
   end
 
-  assign out_addr_o[31:2] = valid_q[0] ? addr_q[0]          : in_addr_i[31:2];
-  assign out_addr_o[1]    = valid_q[0] ? entry0_unaligned_q : in_addr_i[1];
+  /////////////////////////
+  // Instruction address //
+  /////////////////////////
+
+  // Update the address on branches and every time an instruction is driven
+  assign instr_addr_en = clear_i | (out_ready_i & out_valid_o);
+
+  // Increment the address by two every time a compressed instruction is popped
+  assign addr_incr_two = instr_addr_q[1] ? unaligned_is_compressed :
+                                           aligned_is_compressed;
+
+  assign instr_addr_d = clear_i ? in_addr_i[31:1] :
+                                  (instr_addr_q[31:1] +
+                                   // Increment address by 4 or 2
+                                   {29'd0,~addr_incr_two,addr_incr_two});
+
+  always_ff @(posedge clk_i) begin
+    if (instr_addr_en) begin
+      instr_addr_q <= instr_addr_d;
+    end
+  end
+
+  assign out_addr_o[31:1] = instr_addr_q[31:1];
   assign out_addr_o[0]    = 1'b0;
 
   // The LSB of the address is unused, since all addresses are halfword aligned
@@ -140,10 +149,10 @@
   // input port //
   ////////////////
 
-  // we accept data as long as our FIFO is not full
-  // we don't care about clear here as the data will be received one cycle
-  // later anyway
-  assign in_ready_o = ~valid_q[DEPTH-2];
+  // Accept data as long as our FIFO has space to accept the maximum number of outstanding
+  // requests. Note that the prefetch buffer does not count how many requests are actually
+  // outstanding, so space must be reserved for the maximum number.
+  assign in_ready_o = ~valid_q[DEPTH-NUM_REQS];
 
   /////////////////////
   // FIFO management //
@@ -157,7 +166,7 @@
     if (i == 0) begin : g_ent0
       assign lowest_free_entry[i] = ~valid_q[i];
     end else begin : g_ent_others
-      assign lowest_free_entry[i] = ~valid_q[i] & (&valid_q[i-1:0]);
+      assign lowest_free_entry[i] = ~valid_q[i] & valid_q[i-1];
     end
 
     // An entry is set when an incoming request chooses the lowest available entry
@@ -174,17 +183,15 @@
                          (in_valid_i & lowest_free_entry[i] & ~pop_fifo);
 
     // take the next entry or the incoming data
-    assign addr_d [i]  = valid_q[i+1] ? addr_q [i+1] : in_addr_i[31:2];
     assign rdata_d[i]  = valid_q[i+1] ? rdata_q[i+1] : in_rdata_i;
     assign err_d  [i]  = valid_q[i+1] ? err_q  [i+1] : in_err_i;
   end
   // The top entry is similar but with simpler muxing
-  assign lowest_free_entry[DEPTH-1] = ~valid_q[DEPTH-1] & (&valid_q[DEPTH-2:0]);
+  assign lowest_free_entry[DEPTH-1] = ~valid_q[DEPTH-1] & valid_q[DEPTH-2];
   assign valid_pushed     [DEPTH-1] = valid_q[DEPTH-1] | (in_valid_i & lowest_free_entry[DEPTH-1]);
   assign valid_popped     [DEPTH-1] = pop_fifo ? 1'b0 : valid_pushed[DEPTH-1];
   assign valid_d [DEPTH-1]          = valid_popped[DEPTH-1] & ~clear_i;
   assign entry_en[DEPTH-1]          = in_valid_i & lowest_free_entry[DEPTH-1];
-  assign addr_d  [DEPTH-1]          = in_addr_i[31:2];
   assign rdata_d [DEPTH-1]          = in_rdata_i;
   assign err_d   [DEPTH-1]          = in_err_i;
 
@@ -194,18 +201,15 @@
 
   always_ff @(posedge clk_i or negedge rst_ni) begin
     if (!rst_ni) begin
-      valid_q            <= '0;
-      entry0_unaligned_q <= '0;
+      valid_q <= '0;
     end else begin
-      valid_q            <= valid_d;
-      entry0_unaligned_q <= entry0_unaligned_d;
+      valid_q <= valid_d;
     end
   end
 
   for (genvar i = 0; i < DEPTH; i++) begin : g_fifo_regs
     always_ff @(posedge clk_i) begin
       if (entry_en[i]) begin
-        addr_q[i]    <= addr_d[i];
         rdata_q[i]   <= rdata_d[i];
         err_q[i]     <= err_d[i];
       end
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_id_stage.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_id_stage.sv
index 45f2446..71b7a0c 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_id_stage.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_id_stage.sv
@@ -75,6 +75,8 @@
     output logic                  csr_restore_mret_id_o,
     output logic                  csr_save_cause_o,
     output logic [31:0]           csr_mtval_o,
+    input  ibex_pkg::priv_lvl_e   priv_mode_i,
+    input  logic                  csr_mstatus_tw_i,
     input  logic                  illegal_csr_insn_i,
 
     // Interface to load store unit
@@ -376,7 +378,7 @@
   // Controller //
   ////////////////
 
-  assign illegal_insn_o = illegal_insn_dec | illegal_csr_insn_i;
+  assign illegal_insn_o = instr_valid_i & (illegal_insn_dec | illegal_csr_insn_i);
 
   ibex_controller controller_i (
       .clk_i                          ( clk_i                  ),
@@ -438,6 +440,8 @@
       .csr_restore_mret_id_o          ( csr_restore_mret_id_o  ),
       .csr_save_cause_o               ( csr_save_cause_o       ),
       .csr_mtval_o                    ( csr_mtval_o            ),
+      .priv_mode_i                    ( priv_mode_i            ),
+      .csr_mstatus_tw_i               ( csr_mstatus_tw_i       ),
 
       // Debug Signal
       .debug_mode_o                   ( debug_mode_o           ),
@@ -469,7 +473,9 @@
   // being executed. This is the case if the current instr is either:
   // - a new instr (not yet done)
   // - a multicycle instr that is not yet done
-  assign instr_executing = instr_new_i | (instr_multicycle & ~instr_multicycle_done_q);
+  // An instruction error will suppress any requests or register writes
+  assign instr_executing = (instr_new_i | (instr_multicycle & ~instr_multicycle_done_q)) &
+                           ~instr_fetch_err_i;
   assign data_req_id     = instr_executing ? data_req_dec  : 1'b0;
   assign mult_en_id      = instr_executing ? mult_en_dec   : 1'b0;
   assign div_en_id       = instr_executing ? div_en_dec    : 1'b0;
@@ -536,7 +542,7 @@
       IDLE: begin
         // only detect multicycle when instruction is new, do not re-detect after
         // execution (when waiting for next instruction from IF stage)
-        if (instr_new_i) begin
+        if (instr_new_i & ~instr_fetch_err_i) begin
           unique case (1'b1)
             data_req_dec: begin
               // LSU operation
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_pkg.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_pkg.sv
index 8df2f46..de6c299 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_pkg.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_pkg.sv
@@ -180,6 +180,7 @@
   EXC_CAUSE_BREAKPOINT         = {1'b0, 5'd03},
   EXC_CAUSE_LOAD_ACCESS_FAULT  = {1'b0, 5'd05},
   EXC_CAUSE_STORE_ACCESS_FAULT = {1'b0, 5'd07},
+  EXC_CAUSE_ECALL_UMODE        = {1'b0, 5'd08},
   EXC_CAUSE_ECALL_MMODE        = {1'b0, 5'd11}
 } exc_cause_e;
 
@@ -293,6 +294,8 @@
 parameter int unsigned CSR_MSTATUS_MPIE_BIT     = 7;
 parameter int unsigned CSR_MSTATUS_MPP_BIT_LOW  = 11;
 parameter int unsigned CSR_MSTATUS_MPP_BIT_HIGH = 12;
+parameter int unsigned CSR_MSTATUS_MPRV_BIT     = 17;
+parameter int unsigned CSR_MSTATUS_TW_BIT       = 21;
 
 // CSR interrupt pending/enable bits
 parameter int unsigned CSR_MSIX_BIT      = 3;
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_pmp.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_pmp.sv
index e54edab..0fee9b5 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_pmp.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_pmp.sv
@@ -19,8 +19,7 @@
     input  ibex_pkg::pmp_cfg_t      csr_pmp_cfg_i  [PMPNumRegions],
     input  logic [33:0]             csr_pmp_addr_i [PMPNumRegions],
 
-    input  ibex_pkg::priv_lvl_e     priv_mode_i,    // Current priv mode, assumed to
-                                                    // be the same for all channels
+    input  ibex_pkg::priv_lvl_e     priv_mode_i    [PMPNumChan],
     // Access checking channels
     input  logic [33:0]             pmp_req_addr_i [PMPNumChan],
     input  ibex_pkg::pmp_req_e      pmp_req_type_i [PMPNumChan],
@@ -28,7 +27,7 @@
 
 );
 
-  import ibex_pkg::*; 
+  import ibex_pkg::*;
 
   // Access Checking Signals
   logic [33:0]                                region_start_addr [PMPNumRegions];
@@ -36,7 +35,6 @@
   logic [PMPNumChan-1:0][PMPNumRegions-1:0]   region_match_high;
   logic [PMPNumChan-1:0][PMPNumRegions-1:0]   region_match_low;
   logic [PMPNumChan-1:0][PMPNumRegions-1:0]   region_match_both;
-  logic [PMPNumChan-1:0][PMPNumRegions-1:0]   region_match_partial;
   logic [PMPNumChan-1:0][PMPNumRegions-1:0]   region_perm_check;
   logic [PMPNumChan-1:0][PMPNumRegions-1:0]   machine_access_fault;
   logic [PMPNumChan-1:0][PMPNumRegions-1:0]   user_access_allowed;
@@ -81,12 +79,9 @@
                                            (region_start_addr[r][33:PMPGranularity+2] &
                                             region_addr_mask[r]));
       assign region_match_high[c][r]    = (pmp_req_addr_i[c][33:PMPGranularity+2] <=
-                                           (csr_pmp_addr_i[r][33:PMPGranularity+2] &
-                                            region_addr_mask[r]));
+                                           csr_pmp_addr_i[r][33:PMPGranularity+2]);
       assign region_match_both[c][r]    = region_match_low[c][r] & region_match_high[c][r] &
                                           (csr_pmp_cfg_i[r].mode != PMP_MODE_OFF);
-      assign region_match_partial[c][r] = (region_match_low[c][r] ^ region_match_high[c][r]) &
-                                          (csr_pmp_cfg_i[r].mode != PMP_MODE_OFF);
       // Check specific required permissions
       assign region_perm_check[c][r] =
           ((pmp_req_type_i[c] == PMP_ACC_EXEC)  & csr_pmp_cfg_i[r].exec) |
@@ -95,17 +90,11 @@
       // In machine mode, any match to a locked region without sufficient permissions is a fault
       assign machine_access_fault[c][r] = region_match_both[c][r] & csr_pmp_cfg_i[r].lock &
                                           ~region_perm_check[c][r];
-      if (r == 0) begin : g_region0
-        // In any other mode, any access should fault unless is matches a region
-        assign user_access_allowed[c][r]  = region_match_both[c][r] & region_perm_check[c][r];
-      end else begin : g_oth_regions
-        assign user_access_allowed[c][r]  = region_match_both[c][r] & region_perm_check[c][r] &
-        // any higher priority (lower region number) partial match should also cause a fault
-                                            ~|region_match_partial[c][r-1:0];
-      end
+      // In any other mode, any access should fault unless is matches a region
+      assign user_access_allowed[c][r]  = region_match_both[c][r] & region_perm_check[c][r];
     end
-    assign access_fault[c] = (priv_mode_i == PRIV_LVL_M) ? |machine_access_fault[c] :
-                                                           ~|user_access_allowed[c];
+    assign access_fault[c] = (priv_mode_i[c] == PRIV_LVL_M) ? |machine_access_fault[c] :
+                                                              ~|user_access_allowed[c];
 
     assign pmp_req_err_o[c] = access_fault[c];
   end
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_prefetch_buffer.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_prefetch_buffer.sv
index 6446661..605010a 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_prefetch_buffer.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_prefetch_buffer.sv
@@ -39,20 +39,21 @@
     output logic        busy_o
 );
 
-  // Changes to the address flops would be required for > 2 outstanding requests
-  localparam int unsigned NUM_REQS = 2;
+  localparam int unsigned NUM_REQS  = 2;
 
-  logic                valid_req;
+  logic                valid_new_req, valid_req;
   logic                valid_req_d, valid_req_q;
-  logic                hold_addr_d, hold_addr_q;
+  logic                discard_req_d, discard_req_q;
   logic                gnt_or_pmp_err, rvalid_or_pmp_err;
   logic [NUM_REQS-1:0] rdata_outstanding_n, rdata_outstanding_s, rdata_outstanding_q;
-  logic [NUM_REQS-1:0] branch_abort_n, branch_abort_s, branch_abort_q;
+  logic [NUM_REQS-1:0] branch_discard_n, branch_discard_s, branch_discard_q;
+  logic [NUM_REQS-1:0] rdata_pmp_err_n, rdata_pmp_err_s, rdata_pmp_err_q;
 
-  logic [31:0]         instr_addr_q, fetch_addr;
+  logic [31:0]         stored_addr_d, stored_addr_q;
+  logic                stored_addr_en;
+  logic [31:0]         fetch_addr_d, fetch_addr_q;
+  logic                fetch_addr_en;
   logic [31:0]         instr_addr, instr_addr_w_aligned;
-  logic                addr_valid;
-  logic                pmp_err_q;
   logic                instr_or_pmp_err;
 
   logic                fifo_valid;
@@ -71,19 +72,21 @@
 
   // Instruction fetch errors are valid on the data phase of a request
   // PMP errors are generated in the address phase, and registered into a fake data phase
-  assign instr_or_pmp_err = instr_err_i | pmp_err_q;
+  assign instr_or_pmp_err = instr_err_i | rdata_pmp_err_q[0];
 
   // A branch will invalidate any previously fetched instructions
   assign fifo_clear = branch_i;
 
-  ibex_fetch_fifo fifo_i (
+  ibex_fetch_fifo #(
+    .NUM_REQS (NUM_REQS)
+  ) fifo_i (
       .clk_i                 ( clk_i             ),
       .rst_ni                ( rst_ni            ),
 
       .clear_i               ( fifo_clear        ),
 
       .in_valid_i            ( fifo_valid        ),
-      .in_addr_i             ( instr_addr_q      ),
+      .in_addr_i             ( addr_i            ),
       .in_rdata_i            ( instr_rdata_i     ),
       .in_err_i              ( instr_or_pmp_err  ),
       .in_ready_o            ( fifo_ready        ),
@@ -101,55 +104,72 @@
   //////////////
 
   // Make a new request any time there is space in the FIFO, and space in the request queue
-  assign valid_req = valid_req_q | (req_i & (fifo_ready | branch_i) & (~&rdata_outstanding_q));
+  assign valid_new_req = req_i & (fifo_ready | branch_i) & ~rdata_outstanding_q[NUM_REQS-1];
+  assign valid_req = valid_req_q | valid_new_req;
 
   // If a request address triggers a PMP error, the external bus request is suppressed. We might
   // therefore never receive a grant for such a request. The grant is faked in this case to make
   // sure the request proceeds and the error is pushed to the FIFO.
-  // We always use the registered version of the signal since it will be held stable throughout
-  // the request, and the penalty of waiting for an extra cycle to consume the error is irrelevant.
-  // A branch could update the address (and therefore data_pmp_err_i) on the cycle a request is
-  // issued, in which case we must ignore the registered version.
-  assign gnt_or_pmp_err = instr_gnt_i | (pmp_err_q & ~branch_i);
+  assign gnt_or_pmp_err = instr_gnt_i | instr_pmp_err_i;
 
   // As with the grant, the rvalid must be faked for a PMP error, since the request was suppressed.
-  // Since the pmp_err_q flop is only updated when the address updates, it will always point to the
-  // PMP error status of the oldest outstanding request
-  assign rvalid_or_pmp_err = rdata_outstanding_q[0] & (instr_rvalid_i | pmp_err_q);
+  assign rvalid_or_pmp_err = rdata_outstanding_q[0] & (instr_rvalid_i | rdata_pmp_err_q[0]);
 
   // Hold the request stable for requests that didn't get granted
-  assign valid_req_d = valid_req & ~instr_gnt_i;
+  assign valid_req_d = valid_req & ~gnt_or_pmp_err;
 
-  // Hold the address stable for requests that couldn't be issued, or didn't get granted.
-  // This is different to valid_req_q since there are cases where we must use addr+4 for
-  // an ungranted request rather than addr_q (where addr_q has not been updated).
-  assign hold_addr_d = (branch_i | hold_addr_q) & ~(valid_req & instr_gnt_i);
+  // Record whether an outstanding bus request is cancelled by a branch
+  assign discard_req_d = valid_req_q & (branch_i | discard_req_q);
 
   ////////////////
   // Fetch addr //
   ////////////////
 
-  // The address flop is used to hold the address steady for ungranted requests and also to
-  // push the address to the FIFO for completed requests. For this reason, the address is only
-  // updated once a request is the oldest outstanding to ensure that newer requests do not
-  // overwrite the addresses of older ones. Branches are an exception to this, since all older
-  // addresses will be discarded due to the branch.
+  // Two addresses are tracked in the prefetch buffer:
+  // 1. stored_addr_q - This is the address issued on the bus. It stays stable until
+  //                    the request is granted.
+  // 2. fetch_addr_q  - This is our next address to fetch from. It is updated on branches to
+  //                    capture the new address, and then for each new request issued.
+  // A third address is tracked in the fetch FIFO itself:
+  // 3. instr_addr_q  - This is the address at the head of the FIFO, efectively our oldest fetched
+  //                    address. This address is updated on branches, and does its own increment
+  //                    each time the FIFO is popped.
 
-  // Update the addr_q flop on any branch, or
-  assign addr_valid = branch_i |
-                      // A new request which will be the oldest, or
-                      (valid_req & instr_gnt_i & ~rdata_outstanding_q[0]) |
-                      // each time a valid request becomes the oldest
-                      (rvalid_or_pmp_err & ~branch_abort_q[0] &
-                       ((valid_req & instr_gnt_i) | rdata_outstanding_q[1]));
+  // 1. stored_addr_q
 
-  // Fetch the next word-aligned instruction address
-  assign fetch_addr = {instr_addr_q[31:2], 2'b00} + 32'd4;
+  // Only update stored_addr_q for new ungranted requests
+  assign stored_addr_en = valid_new_req & ~valid_req_q & ~gnt_or_pmp_err;
+
+  // Store whatever address was issued on the bus
+  assign stored_addr_d = instr_addr;
+
+  // CPU resets with a branch, so no need to reset these addresses
+  always_ff @(posedge clk_i) begin
+    if (stored_addr_en) begin
+      stored_addr_q <= stored_addr_d;
+    end
+  end
+
+  // 2. fetch_addr_q
+
+  // Update on a branch or as soon as a request is issued
+  assign fetch_addr_en = branch_i | (valid_new_req & ~valid_req_q);
+
+  assign fetch_addr_d = (branch_i ? addr_i : 
+                                    {fetch_addr_q[31:2], 2'b00}) +
+                        // Current address + 4
+                        {{29{1'b0}},(valid_new_req & ~valid_req_q),2'b00};
+
+  always_ff @(posedge clk_i) begin
+    if (fetch_addr_en) begin
+      fetch_addr_q <= fetch_addr_d;
+    end
+  end
 
   // Address mux
-  assign instr_addr = branch_i    ? addr_i :
-                      hold_addr_q ? instr_addr_q :
-                                    fetch_addr;
+  assign instr_addr = valid_req_q ? stored_addr_q :
+                      branch_i    ? addr_i :
+                                    fetch_addr_q;
 
   assign instr_addr_w_aligned = {instr_addr[31:2], 2'b00};
 
@@ -161,31 +181,43 @@
     // Request 0 (always the oldest outstanding request)
     if (i == 0) begin : g_req0
       // A request becomes outstanding once granted, and is cleared once the rvalid is received.
-      // Outstanding requests shift down the queue towards entry 0. Entry 0 considers the PMP
-      // error cases while newer entries do not (pmp_err_q is only valid for entry 0)
+      // Outstanding requests shift down the queue towards entry 0.
       assign rdata_outstanding_n[i] = (valid_req & gnt_or_pmp_err) |
                                       rdata_outstanding_q[i];
       // If a branch is received at any point while a request is outstanding, it must be tracked
       // to ensure we discard the data once received
-      assign branch_abort_n[i]      = (branch_i & rdata_outstanding_q[i]) | branch_abort_q[i];
+      assign branch_discard_n[i]    = (valid_req & gnt_or_pmp_err & discard_req_d) |
+                                      (branch_i & rdata_outstanding_q[i]) | branch_discard_q[i];
+      // Record whether this request received a PMP error
+      assign rdata_pmp_err_n[i]     = (valid_req & ~rdata_outstanding_q[i] & instr_pmp_err_i) |
+                                      rdata_pmp_err_q[i];
 
     end else begin : g_reqtop
+    // Entries > 0 consider the FIFO fill state to calculate their next state (by checking
+    // whether the previous entry is valid)
 
-      assign rdata_outstanding_n[i] = (valid_req & instr_gnt_i &
-                                       (&rdata_outstanding_q[i-1:0])) |
+      assign rdata_outstanding_n[i] = (valid_req & gnt_or_pmp_err &
+                                       rdata_outstanding_q[i-1]) |
                                       rdata_outstanding_q[i];
-      assign branch_abort_n[i]      = (branch_i & rdata_outstanding_q[i]) | branch_abort_q[i];
+      assign branch_discard_n[i]    = (valid_req & gnt_or_pmp_err & discard_req_d &
+                                       rdata_outstanding_q[i-1]) |
+                                      (branch_i & rdata_outstanding_q[i]) | branch_discard_q[i];
+      assign rdata_pmp_err_n[i]     = (valid_req & ~rdata_outstanding_q[i] & instr_pmp_err_i &
+                                       rdata_outstanding_q[i-1]) |
+                                      rdata_pmp_err_q[i];
     end
   end
 
   // Shift the entries down on each instr_rvalid_i
   assign rdata_outstanding_s = rvalid_or_pmp_err ? {1'b0,rdata_outstanding_n[NUM_REQS-1:1]} :
                                                    rdata_outstanding_n;
-  assign branch_abort_s      = rvalid_or_pmp_err ? {1'b0,branch_abort_n[NUM_REQS-1:1]} :
-                                                   branch_abort_n;
+  assign branch_discard_s    = rvalid_or_pmp_err ? {1'b0,branch_discard_n[NUM_REQS-1:1]} :
+                                                   branch_discard_n;
+  assign rdata_pmp_err_s     = rvalid_or_pmp_err ? {1'b0,rdata_pmp_err_n[NUM_REQS-1:1]} :
+                                                   rdata_pmp_err_n;
 
-  // Push a new entry to the FIFO once complete (and not aborted by a branch)
-  assign fifo_valid = rvalid_or_pmp_err & ~branch_abort_q[0];
+  // Push a new entry to the FIFO once complete (and not cancelled by a branch)
+  assign fifo_valid = rvalid_or_pmp_err & ~branch_discard_q[0];
 
   ///////////////
   // Registers //
@@ -194,22 +226,16 @@
   always_ff @(posedge clk_i or negedge rst_ni) begin
     if (!rst_ni) begin
       valid_req_q          <= 1'b0;
-      hold_addr_q          <= 1'b0;
+      discard_req_q        <= 1'b0;
       rdata_outstanding_q  <= 'b0;
-      branch_abort_q       <= 'b0;
+      branch_discard_q     <= 'b0;
+      rdata_pmp_err_q      <= 'b0;
     end else begin
       valid_req_q          <= valid_req_d;
-      hold_addr_q          <= hold_addr_d;
+      discard_req_q        <= discard_req_d;
       rdata_outstanding_q  <= rdata_outstanding_s;
-      branch_abort_q       <= branch_abort_s;
-    end
-  end
-
-  // CPU resets with a branch, so no need to reset these
-  always_ff @(posedge clk_i) begin
-    if (addr_valid) begin
-      instr_addr_q <= instr_addr;
-      pmp_err_q    <= instr_pmp_err_i;
+      branch_discard_q     <= branch_discard_s;
+      rdata_pmp_err_q      <= rdata_pmp_err_s;
     end
   end
 
@@ -217,18 +243,7 @@
   // Outputs //
   /////////////
 
-  assign instr_req_o          = valid_req;
-  assign instr_addr_o         = instr_addr_w_aligned;
-
-  ////////////////
-  // Assertions //
-  ////////////////
-
-`ifndef VERILATOR
-  // Code changes required to support > 2 outstanding requests
-  assert property (
-    @(posedge clk_i) disable iff (!rst_ni)
-    (NUM_REQS <= 2) );
-`endif
+  assign instr_req_o  = valid_req;
+  assign instr_addr_o = instr_addr_w_aligned;
 
 endmodule
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_tracer.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_tracer.sv
index 69c096c..423b76d 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_tracer.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_tracer.sv
@@ -1,579 +1,834 @@
 // Copyright lowRISC contributors.
-// Copyright 2018 ETH Zurich and University of Bologna.
+// Copyright 2018 ETH Zurich and University of Bologna, see also CREDITS.md.
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-// Source/Destination register instruction index
-`define REG_S1 19:15
-`define REG_S2 24:20
-`define REG_S3 29:25
-`define REG_D  11:07
-
 /**
- * Traces the executed instructions
+ * Trace executed instructions in simulation
  *
- * Note: Verilator does not support the language constructs used in this
- * module!
+ * This tracer takes execution information from the RISC-V Verification Interface (RVFI) and
+ * produces a text file with a human-readable trace.
+ *
+ * All traced instructions are written to a log file. By default, the log file is named
+ * trace_core_<HARTID>.log, with <HARTID> being the 8 digit hart ID of the core being traced.
+ *
+ * The file name base, defaulting to "trace_core" can be set using the "ibex_tracer_file_base"
+ * plusarg passed to the simulation, e.g. "+ibex_tracer_file_base=ibex_my_trace". The exact syntax
+ * of passing plusargs to a simulation depends on the simulator.
+ *
+ * The trace contains six columns, separated by tabs:
+ * - The simulation time
+ * - The clock cycle count since reset
+ * - The program counter (PC)
+ * - The instruction
+ * - The decoded instruction in the same format as objdump, together with the accessed registers and
+ *   read/written memory values. Jumps and branches show the target address.
+ *   This column may be omitted if the instruction does not decode into a long form.
+ * - Accessed registers and memory locations.
+ *
+ * Significant effort is spent to make the decoding produced by this tracer as similar as possible
+ * to the one produced by objdump. This simplifies the correlation between the static program
+ * information from the objdump-generated disassembly, and the runtime information from this tracer.
  */
-module ibex_tracer #(
-    parameter int unsigned RegAddrWidth = 5
-) (
-    // Clock and Reset
-    input  logic                      clk_i,
-    input  logic                      rst_ni,
+module ibex_tracer (
+  input logic        clk_i,
+  input logic        rst_ni,
 
-    input  logic                      fetch_enable_i,
-    input  logic [31:0]               hart_id_i,
+  input logic [31:0] hart_id_i,
 
-    input  logic                      valid_i,
-    input  logic [31:0]               pc_i,
-    input  logic [31:0]               instr_i,
-    input  logic [31:0]               rs1_value_i,
-    input  logic [31:0]               rs2_value_i,
-    input  logic [(RegAddrWidth-1):0] ex_reg_addr_i,
-    input  logic [31:0]               ex_reg_wdata_i,
-    input  logic [31:0]               ex_data_addr_i,
-    input  logic [31:0]               ex_data_wdata_i,
-    input  logic [31:0]               ex_data_rdata_i
+  // RVFI as described at https://github.com/SymbioticEDA/riscv-formal/blob/master/docs/rvfi.md
+  // The standard interface does not have _i/_o suffixes. For consistency with the standard the
+  // signals in this module don't have the suffixes either.
+  input logic        rvfi_valid,
+  input logic [63:0] rvfi_order,
+  input logic [31:0] rvfi_insn,
+  input logic        rvfi_trap,
+  input logic        rvfi_halt,
+  input logic        rvfi_intr,
+  input logic [ 1:0] rvfi_mode,
+  input logic [ 4:0] rvfi_rs1_addr,
+  input logic [ 4:0] rvfi_rs2_addr,
+  input logic [31:0] rvfi_rs1_rdata,
+  input logic [31:0] rvfi_rs2_rdata,
+  input logic [ 4:0] rvfi_rd_addr,
+  input logic [31:0] rvfi_rd_wdata,
+  input logic [31:0] rvfi_pc_rdata,
+  input logic [31:0] rvfi_pc_wdata,
+  input logic [31:0] rvfi_mem_addr,
+  input logic [ 3:0] rvfi_mem_rmask,
+  input logic [ 3:0] rvfi_mem_wmask,
+  input logic [31:0] rvfi_mem_rdata,
+  input logic [31:0] rvfi_mem_wdata
 );
 
+  // These signals are part of RVFI, but not used in this module currently.
+  // Keep them as part of the interface to change the tracer more easily in the future. Assigning
+  // these signals to unused_* signals marks them explicitly as unused, an annotation picked up by
+  // linters, including Verilator lint.
+  logic [63:0] unused_rvfi_order = rvfi_order;
+  logic        unused_rvfi_trap = rvfi_trap;
+  logic        unused_rvfi_halt = rvfi_halt;
+  logic        unused_rvfi_intr = rvfi_intr;
+  logic [ 1:0] unused_rvfi_mode = rvfi_mode;
+
   import ibex_pkg::*;
   import ibex_tracer_pkg::*;
 
-  integer      f;
-  string       fn;
-  integer      cycles;
-  logic [ 4:0] rd, rs1, rs2, rs3;
+  int          file_handle;
+  string       file_name;
 
-  typedef struct {
-    logic [(RegAddrWidth-1):0] addr;
-    logic [31:0] value;
-  } reg_t;
+  int unsigned cycle;
+  string       decoded_str;
+  logic        insn_is_compressed;
 
-  typedef struct {
-    logic [31:0] addr;
-    logic        we;
-    logic [ 3:0] be;
-    logic [31:0] wdata;
-    logic [31:0] rdata;
-  } mem_acc_t;
+  // Data items accessed during this instruction
+  localparam RS1 = (1 << 0);
+  localparam RS2 = (1 << 1);
+  localparam RD  = (1 << 2);
+  localparam MEM = (1 << 3);
+  logic [3:0] data_accessed;
 
-  class instr_trace_t;
-    time         simtime;
-    integer      cycles;
-    logic [31:0] pc;
-    logic [31:0] instr;
-    string       str;
-    reg_t        regs_read[$];
-    reg_t        regs_write[$];
-    mem_acc_t    mem_access[$];
+  function void printbuffer_dumpline();
+    string rvfi_insn_str;
 
-    function new ();
-      str        = "";
-      regs_read  = {};
-      regs_write = {};
-      mem_access = {};
-    endfunction
+    if (file_handle == 32'h0) begin
+      string file_name_base = "trace_core";
+      $value$plusargs("ibex_tracer_file_base=%s", file_name_base);
+      $sformat(file_name, "%s_%h.log", file_name_base, hart_id_i);
 
-    function string regAddrToStr(input logic [(RegAddrWidth-1):0] addr);
-      begin
-        if (addr < 10) begin
-          return $sformatf(" x%0d", addr);
-        end else begin
-          return $sformatf("x%0d", addr);
-        end
+      $display("%m: Writing execution trace to %s", file_name);
+      file_handle = $fopen(file_name, "w");
+      $fwrite(file_handle, "Time\tCycle\tPC\tInsn\tDecoded instruction\tRegister and memory contents\n");
+    end
+
+    // Write compressed instructions as four hex digits (16 bit word), and
+    // uncompressed ones as 8 hex digits (32 bit words).
+    if (insn_is_compressed) begin
+      rvfi_insn_str = $sformatf("%h", rvfi_insn[15:0]);
+    end else begin
+      rvfi_insn_str = $sformatf("%h", rvfi_insn);
+    end
+
+    $fwrite(file_handle, "%15t\t%d\t%h\t%s\t%s\t", $time, cycle, rvfi_pc_rdata, rvfi_insn_str, decoded_str);
+
+    if ((data_accessed & RS1) != 0) begin
+      $fwrite(file_handle, " %s:0x%08x", reg_addr_to_str(rvfi_rs1_addr), rvfi_rs1_rdata);
+    end
+    if ((data_accessed & RS2) != 0) begin
+      $fwrite(file_handle, " %s:0x%08x", reg_addr_to_str(rvfi_rs2_addr), rvfi_rs2_rdata);
+    end
+    if ((data_accessed & RD) != 0) begin
+      $fwrite(file_handle, " %s=0x%08x", reg_addr_to_str(rvfi_rd_addr), rvfi_rd_wdata);
+    end
+    if ((data_accessed & MEM) != 0) begin
+      $fwrite(file_handle, " PA:0x%08x", rvfi_mem_addr);
+
+      if (rvfi_mem_rmask != 4'b000) begin
+        $fwrite(file_handle, " store:0x%08x", rvfi_mem_wdata);
       end
-    endfunction
-
-    function void printInstrTrace();
-      mem_acc_t mem_acc;
-      begin
-        $fwrite(f, "%t %15d %h %h %-36s", simtime,
-                                          cycles,
-                                          pc_i,
-                                          instr_i,
-                                          str);
-
-        foreach(regs_write[i]) begin
-          if (regs_write[i].addr != 0) begin
-            $fwrite(f, " %s=0x%08x", regAddrToStr(regs_write[i].addr), regs_write[i].value);
-          end
-        end
-
-        foreach(regs_read[i]) begin
-          if (regs_read[i].addr != 0) begin
-            $fwrite(f, " %s:0x%08x", regAddrToStr(regs_read[i].addr), regs_read[i].value);
-          end
-        end
-
-        if (mem_access.size() > 0) begin
-          mem_acc = mem_access.pop_front();
-
-          $fwrite(f, " PA:0x%08x", mem_acc.addr);
-
-          if (mem_acc.we == 1'b1) begin
-            $fwrite(f, " store:0x%08x", mem_acc.wdata);
-          end else begin
-            $fwrite(f, "  load:0x%08x", mem_acc.rdata);
-          end
-        end
-
-        $fwrite(f, "\n");
+      if (rvfi_mem_wmask != 4'b000) begin
+        $fwrite(file_handle, " load:0x%08x", rvfi_mem_rdata);
       end
-    endfunction
+    end
 
-    function void printMnemonic(input string mnemonic);
-      begin
-        str = mnemonic;
+    $fwrite(file_handle, "\n");
+  endfunction
+
+
+  // Format register address with "x" prefix, left-aligned to a fixed width of 3 characters.
+  function string reg_addr_to_str(input logic [4:0] addr);
+    if (addr < 10) begin
+      return $sformatf(" x%0d", addr);
+    end else begin
+      return $sformatf("x%0d", addr);
+    end
+  endfunction
+
+  // Get a CSR name for a CSR address.
+  function string get_csr_name(input logic [11:0] csr_addr);
+    unique case (csr_addr)
+      12'd0: return "ustatus";
+      12'd4: return "uie";
+      12'd5: return "utvec";
+      12'd64: return "uscratch";
+      12'd65: return "uepc";
+      12'd66: return "ucause";
+      12'd67: return "utval";
+      12'd68: return "uip";
+      12'd1: return "fflags";
+      12'd2: return "frm";
+      12'd3: return "fcsr";
+      12'd3072: return "cycle";
+      12'd3073: return "time";
+      12'd3074: return "instret";
+      12'd3075: return "hpmcounter3";
+      12'd3076: return "hpmcounter4";
+      12'd3077: return "hpmcounter5";
+      12'd3078: return "hpmcounter6";
+      12'd3079: return "hpmcounter7";
+      12'd3080: return "hpmcounter8";
+      12'd3081: return "hpmcounter9";
+      12'd3082: return "hpmcounter10";
+      12'd3083: return "hpmcounter11";
+      12'd3084: return "hpmcounter12";
+      12'd3085: return "hpmcounter13";
+      12'd3086: return "hpmcounter14";
+      12'd3087: return "hpmcounter15";
+      12'd3088: return "hpmcounter16";
+      12'd3089: return "hpmcounter17";
+      12'd3090: return "hpmcounter18";
+      12'd3091: return "hpmcounter19";
+      12'd3092: return "hpmcounter20";
+      12'd3093: return "hpmcounter21";
+      12'd3094: return "hpmcounter22";
+      12'd3095: return "hpmcounter23";
+      12'd3096: return "hpmcounter24";
+      12'd3097: return "hpmcounter25";
+      12'd3098: return "hpmcounter26";
+      12'd3099: return "hpmcounter27";
+      12'd3100: return "hpmcounter28";
+      12'd3101: return "hpmcounter29";
+      12'd3102: return "hpmcounter30";
+      12'd3103: return "hpmcounter31";
+      12'd3200: return "cycleh";
+      12'd3201: return "timeh";
+      12'd3202: return "instreth";
+      12'd3203: return "hpmcounter3h";
+      12'd3204: return "hpmcounter4h";
+      12'd3205: return "hpmcounter5h";
+      12'd3206: return "hpmcounter6h";
+      12'd3207: return "hpmcounter7h";
+      12'd3208: return "hpmcounter8h";
+      12'd3209: return "hpmcounter9h";
+      12'd3210: return "hpmcounter10h";
+      12'd3211: return "hpmcounter11h";
+      12'd3212: return "hpmcounter12h";
+      12'd3213: return "hpmcounter13h";
+      12'd3214: return "hpmcounter14h";
+      12'd3215: return "hpmcounter15h";
+      12'd3216: return "hpmcounter16h";
+      12'd3217: return "hpmcounter17h";
+      12'd3218: return "hpmcounter18h";
+      12'd3219: return "hpmcounter19h";
+      12'd3220: return "hpmcounter20h";
+      12'd3221: return "hpmcounter21h";
+      12'd3222: return "hpmcounter22h";
+      12'd3223: return "hpmcounter23h";
+      12'd3224: return "hpmcounter24h";
+      12'd3225: return "hpmcounter25h";
+      12'd3226: return "hpmcounter26h";
+      12'd3227: return "hpmcounter27h";
+      12'd3228: return "hpmcounter28h";
+      12'd3229: return "hpmcounter29h";
+      12'd3230: return "hpmcounter30h";
+      12'd3231: return "hpmcounter31h";
+      12'd256: return "sstatus";
+      12'd258: return "sedeleg";
+      12'd259: return "sideleg";
+      12'd260: return "sie";
+      12'd261: return "stvec";
+      12'd262: return "scounteren";
+      12'd320: return "sscratch";
+      12'd321: return "sepc";
+      12'd322: return "scause";
+      12'd323: return "stval";
+      12'd324: return "sip";
+      12'd384: return "satp";
+      12'd3857: return "mvendorid";
+      12'd3858: return "marchid";
+      12'd3859: return "mimpid";
+      12'd3860: return "mhartid";
+      12'd768: return "mstatus";
+      12'd769: return "misa";
+      12'd770: return "medeleg";
+      12'd771: return "mideleg";
+      12'd772: return "mie";
+      12'd773: return "mtvec";
+      12'd774: return "mcounteren";
+      12'd832: return "mscratch";
+      12'd833: return "mepc";
+      12'd834: return "mcause";
+      12'd835: return "mtval";
+      12'd836: return "mip";
+      12'd928: return "pmpcfg0";
+      12'd929: return "pmpcfg1";
+      12'd930: return "pmpcfg2";
+      12'd931: return "pmpcfg3";
+      12'd944: return "pmpaddr0";
+      12'd945: return "pmpaddr1";
+      12'd946: return "pmpaddr2";
+      12'd947: return "pmpaddr3";
+      12'd948: return "pmpaddr4";
+      12'd949: return "pmpaddr5";
+      12'd950: return "pmpaddr6";
+      12'd951: return "pmpaddr7";
+      12'd952: return "pmpaddr8";
+      12'd953: return "pmpaddr9";
+      12'd954: return "pmpaddr10";
+      12'd955: return "pmpaddr11";
+      12'd956: return "pmpaddr12";
+      12'd957: return "pmpaddr13";
+      12'd958: return "pmpaddr14";
+      12'd959: return "pmpaddr15";
+      12'd2816: return "mcycle";
+      12'd2818: return "minstret";
+      12'd2819: return "mhpmcounter3";
+      12'd2820: return "mhpmcounter4";
+      12'd2821: return "mhpmcounter5";
+      12'd2822: return "mhpmcounter6";
+      12'd2823: return "mhpmcounter7";
+      12'd2824: return "mhpmcounter8";
+      12'd2825: return "mhpmcounter9";
+      12'd2826: return "mhpmcounter10";
+      12'd2827: return "mhpmcounter11";
+      12'd2828: return "mhpmcounter12";
+      12'd2829: return "mhpmcounter13";
+      12'd2830: return "mhpmcounter14";
+      12'd2831: return "mhpmcounter15";
+      12'd2832: return "mhpmcounter16";
+      12'd2833: return "mhpmcounter17";
+      12'd2834: return "mhpmcounter18";
+      12'd2835: return "mhpmcounter19";
+      12'd2836: return "mhpmcounter20";
+      12'd2837: return "mhpmcounter21";
+      12'd2838: return "mhpmcounter22";
+      12'd2839: return "mhpmcounter23";
+      12'd2840: return "mhpmcounter24";
+      12'd2841: return "mhpmcounter25";
+      12'd2842: return "mhpmcounter26";
+      12'd2843: return "mhpmcounter27";
+      12'd2844: return "mhpmcounter28";
+      12'd2845: return "mhpmcounter29";
+      12'd2846: return "mhpmcounter30";
+      12'd2847: return "mhpmcounter31";
+      12'd2944: return "mcycleh";
+      12'd2946: return "minstreth";
+      12'd2947: return "mhpmcounter3h";
+      12'd2948: return "mhpmcounter4h";
+      12'd2949: return "mhpmcounter5h";
+      12'd2950: return "mhpmcounter6h";
+      12'd2951: return "mhpmcounter7h";
+      12'd2952: return "mhpmcounter8h";
+      12'd2953: return "mhpmcounter9h";
+      12'd2954: return "mhpmcounter10h";
+      12'd2955: return "mhpmcounter11h";
+      12'd2956: return "mhpmcounter12h";
+      12'd2957: return "mhpmcounter13h";
+      12'd2958: return "mhpmcounter14h";
+      12'd2959: return "mhpmcounter15h";
+      12'd2960: return "mhpmcounter16h";
+      12'd2961: return "mhpmcounter17h";
+      12'd2962: return "mhpmcounter18h";
+      12'd2963: return "mhpmcounter19h";
+      12'd2964: return "mhpmcounter20h";
+      12'd2965: return "mhpmcounter21h";
+      12'd2966: return "mhpmcounter22h";
+      12'd2967: return "mhpmcounter23h";
+      12'd2968: return "mhpmcounter24h";
+      12'd2969: return "mhpmcounter25h";
+      12'd2970: return "mhpmcounter26h";
+      12'd2971: return "mhpmcounter27h";
+      12'd2972: return "mhpmcounter28h";
+      12'd2973: return "mhpmcounter29h";
+      12'd2974: return "mhpmcounter30h";
+      12'd2975: return "mhpmcounter31h";
+      12'd803: return "mhpmevent3";
+      12'd804: return "mhpmevent4";
+      12'd805: return "mhpmevent5";
+      12'd806: return "mhpmevent6";
+      12'd807: return "mhpmevent7";
+      12'd808: return "mhpmevent8";
+      12'd809: return "mhpmevent9";
+      12'd810: return "mhpmevent10";
+      12'd811: return "mhpmevent11";
+      12'd812: return "mhpmevent12";
+      12'd813: return "mhpmevent13";
+      12'd814: return "mhpmevent14";
+      12'd815: return "mhpmevent15";
+      12'd816: return "mhpmevent16";
+      12'd817: return "mhpmevent17";
+      12'd818: return "mhpmevent18";
+      12'd819: return "mhpmevent19";
+      12'd820: return "mhpmevent20";
+      12'd821: return "mhpmevent21";
+      12'd822: return "mhpmevent22";
+      12'd823: return "mhpmevent23";
+      12'd824: return "mhpmevent24";
+      12'd825: return "mhpmevent25";
+      12'd826: return "mhpmevent26";
+      12'd827: return "mhpmevent27";
+      12'd828: return "mhpmevent28";
+      12'd829: return "mhpmevent29";
+      12'd830: return "mhpmevent30";
+      12'd831: return "mhpmevent31";
+      12'd1952: return "tselect";
+      12'd1953: return "tdata1";
+      12'd1954: return "tdata2";
+      12'd1955: return "tdata3";
+      12'd1968: return "dcsr";
+      12'd1969: return "dpc";
+      12'd1970: return "dscratch";
+      12'd512: return "hstatus";
+      12'd514: return "hedeleg";
+      12'd515: return "hideleg";
+      12'd516: return "hie";
+      12'd517: return "htvec";
+      12'd576: return "hscratch";
+      12'd577: return "hepc";
+      12'd578: return "hcause";
+      12'd579: return "hbadaddr";
+      12'd580: return "hip";
+      12'd896: return "mbase";
+      12'd897: return "mbound";
+      12'd898: return "mibase";
+      12'd899: return "mibound";
+      12'd900: return "mdbase";
+      12'd901: return "mdbound";
+      12'd800: return "mucounteren";
+      12'd801: return "mscounteren";
+      12'd802: return "mhcounteren";
+      default: return $sformatf("0x%x", csr_addr);
+    endcase
+  endfunction
+
+  function void decode_mnemonic(input string mnemonic);
+    decoded_str = mnemonic;
+  endfunction
+
+  function void decode_r_insn(input string mnemonic);
+    data_accessed = RS1 | RS2 | RD;
+    decoded_str = $sformatf("%s\tx%0d,x%0d,x%0d", mnemonic, rvfi_rd_addr, rvfi_rs1_addr, rvfi_rs2_addr);
+  endfunction
+
+  function void decode_i_insn(input string mnemonic);
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,x%0d,%0d", mnemonic, rvfi_rd_addr, rvfi_rs1_addr,
+                    $signed({{20 {rvfi_insn[31]}}, rvfi_insn[31:20]}));
+  endfunction
+
+  function void decode_i_shift_insn(input string mnemonic);
+    // SLLI, SRLI, SRAI
+    logic [4:0] shamt;
+    shamt = {rvfi_insn[24:20]};
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,x%0d,0x%0x", mnemonic, rvfi_rd_addr, rvfi_rs1_addr, shamt);
+  endfunction
+
+  function void decode_i_jalr_insn(input string mnemonic);
+    // JALR
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,%0d(x%0d)", mnemonic, rvfi_rd_addr,
+        $signed({{20 {rvfi_insn[31]}}, rvfi_insn[31:20]}), rvfi_rs1_addr);
+  endfunction
+
+  function void decode_u_insn(input string mnemonic);
+    data_accessed = RD;
+    decoded_str = $sformatf("%s\tx%0d,0x%0x", mnemonic, rvfi_rd_addr, {rvfi_insn[31:12]});
+  endfunction
+
+  function void decode_j_insn(input string mnemonic);
+    // JAL
+    data_accessed = RD;
+    decoded_str = $sformatf("%s\tx%0d,%0x", mnemonic, rvfi_rd_addr, rvfi_pc_wdata);
+  endfunction
+
+  function void decode_b_insn(input string mnemonic);
+    logic [31:0] branch_target;
+    logic [31:0] imm;
+
+    // We cannot use rvfi_pc_wdata for conditional jumps.
+    imm = $signed({ {19 {rvfi_insn[31]}}, rvfi_insn[31], rvfi_insn[7],
+             rvfi_insn[30:25], rvfi_insn[11:8], 1'b0 });
+    branch_target = rvfi_pc_rdata + imm;
+
+    data_accessed = RS1 | RS2 | RD;
+    decoded_str = $sformatf("%s\tx%0d,x%0d,%0x", mnemonic, rvfi_rs1_addr, rvfi_rs2_addr, branch_target);
+  endfunction
+
+  function void decode_csr_insn(input string mnemonic);
+    logic [11:0] csr;
+    string csr_name;
+    csr = rvfi_insn[31:20];
+    csr_name = get_csr_name(csr);
+
+    data_accessed = RD;
+
+    if (!rvfi_insn[14]) begin
+      data_accessed |= RS1;
+      decoded_str = $sformatf("%s\tx%0d,%s,x%0d", mnemonic, rvfi_rd_addr, csr_name, rvfi_rs1_addr);
+    end else begin
+      decoded_str = $sformatf("%s\tx%0d,%s,%0d", mnemonic, rvfi_rd_addr, csr_name, { 27'b0, rvfi_insn[19:15]});
+    end
+  endfunction
+
+  function void decode_cr_insn(input string mnemonic);
+    if (rvfi_rs2_addr == 5'b0) begin
+      data_accessed = RS1;
+      decoded_str = $sformatf("%s\tx%0d", mnemonic, rvfi_rs1_addr);
+    end else begin
+      data_accessed = RS1 | RS2 | RD; // RS1 == RD
+      decoded_str = $sformatf("%s\tx%0d,x%0d", mnemonic, rvfi_rd_addr, rvfi_rs2_addr);
+    end
+  endfunction
+
+  function void decode_ci_cli_insn(input string mnemonic);
+    logic [5:0] imm;
+    imm = {rvfi_insn[12], rvfi_insn[6:2]};
+    data_accessed = RD;
+    decoded_str = $sformatf("%s\tx%0d,%0d", mnemonic, rvfi_rd_addr, $signed(imm));
+  endfunction
+
+  function void decode_ci_caddi_insn(input string mnemonic);
+    logic [5:0] nzimm;
+    nzimm = {rvfi_insn[12], rvfi_insn[6:2]};
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,%0d", mnemonic, rvfi_rd_addr, $signed(nzimm));
+  endfunction
+
+  function void decode_ci_caddi16sp_insn(input string mnemonic);
+    logic [9:0] nzimm;
+    nzimm = {rvfi_insn[12], rvfi_insn[4:3], rvfi_insn[5], rvfi_insn[2], rvfi_insn[6], 4'b0};
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,%0d", mnemonic, rvfi_rd_addr, $signed(nzimm));
+  endfunction
+
+  function void decode_ci_clui_insn(input string mnemonic);
+    logic [5:0] nzimm;
+    nzimm = {rvfi_insn[12], rvfi_insn[6:2]};
+    data_accessed = RD;
+    decoded_str = $sformatf("%s\tx%0d,0x%0x", mnemonic, rvfi_rd_addr, 20'($signed(nzimm)));
+  endfunction
+
+  function void decode_ci_cslli_insn(input string mnemonic);
+    logic [5:0] shamt;
+    shamt = {rvfi_insn[12], rvfi_insn[6:2]};
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,0x%0x", mnemonic, rvfi_rd_addr, shamt);
+  endfunction
+
+  function void decode_ciw_insn(input string mnemonic);
+    // C.ADDI4SPN
+    logic [9:0] nzuimm;
+    nzuimm = {rvfi_insn[10:7], rvfi_insn[12:11], rvfi_insn[5], rvfi_insn[6], 2'b00};
+    data_accessed = RD;
+    decoded_str = $sformatf("%s\tx%0d,x2,%0d", mnemonic, rvfi_rd_addr, nzuimm);
+  endfunction
+
+  function void decode_cb_sr_insn(input string mnemonic);
+    logic [5:0] shamt;
+    shamt = {rvfi_insn[12], rvfi_insn[6:2]};
+    data_accessed = RS1 | RD;
+    decoded_str = $sformatf("%s\tx%0d,0x%0x", mnemonic, rvfi_rs1_addr, shamt);
+  endfunction
+
+  function void decode_cb_insn(input string mnemonic);
+    logic [7:0] imm;
+    logic [31:0] jump_target;
+    if (rvfi_insn[15:13] == 3'b110 || rvfi_insn[15:13] == 3'b111) begin
+      // C.BNEZ and C.BEQZ
+      // We cannot use rvfi_pc_wdata for conditional jumps.
+      imm = {rvfi_insn[12], rvfi_insn[6:5], rvfi_insn[2], rvfi_insn[11:10], rvfi_insn[4:3]};
+      jump_target = rvfi_pc_rdata + 32'($signed({imm, 1'b0}));
+      data_accessed = RS1;
+      decoded_str = $sformatf("%s\tx%0d,%0x", mnemonic, rvfi_rs1_addr, jump_target);
+    end else if (rvfi_insn[15:13] == 3'b100) begin
+      // C.ANDI
+      imm = {{2{rvfi_insn[12]}}, rvfi_insn[12], rvfi_insn[6:2]};
+      data_accessed = RS1 | RD; // RS1 == RD
+      decoded_str = $sformatf("%s\tx%0d,%0d", mnemonic, rvfi_rd_addr, $signed(imm));
+    end else begin
+      imm = {rvfi_insn[12], rvfi_insn[6:2], 2'b00};
+      data_accessed = RS1;
+      decoded_str = $sformatf("%s\tx%0d,0x%0x", mnemonic, rvfi_rs1_addr, imm);
+    end
+  endfunction
+
+  function void decode_cs_insn(input string mnemonic);
+    data_accessed = RS1 | RS2 | RD; // RS1 == RD
+    decoded_str = $sformatf("%s\tx%0d,x%0d", mnemonic, rvfi_rd_addr, rvfi_rs2_addr);
+  endfunction
+
+  function void decode_cj_insn(input string mnemonic);
+    decoded_str = $sformatf("%s\t%0x", mnemonic, rvfi_pc_wdata);
+  endfunction
+
+  function void decode_compressed_load_insn(input string mnemonic);
+    logic [7:0] imm;
+
+    if (rvfi_insn[1:0] == OPCODE_C0) begin
+      // C.LW
+      imm = {1'b0, rvfi_insn[5], rvfi_insn[12:10], rvfi_insn[6], 2'b00};
+    end else begin
+      // C.LWSP
+      imm = {rvfi_insn[3:2], rvfi_insn[12], rvfi_insn[6:4], 2'b00};
+    end
+    data_accessed = RS1 | RD | MEM;
+    decoded_str = $sformatf("%s\tx%0d,%0d(x%0d)", mnemonic, rvfi_rd_addr, imm, rvfi_rs1_addr);
+  endfunction
+
+  function void decode_compressed_store_insn(input string mnemonic);
+    logic [7:0] imm;
+    if (rvfi_insn[1:0] == OPCODE_C0) begin
+      // C.SW
+      imm = {1'b0, rvfi_insn[5], rvfi_insn[12:10], rvfi_insn[6], 2'b00};
+    end else begin
+      // C.SWSP
+      imm = {rvfi_insn[8:7], rvfi_insn[12:9], 2'b00};
+    end
+    data_accessed = RS1 | RS2 | MEM;
+    decoded_str = $sformatf("%s\tx%0d,%0d(x%0d)", mnemonic, rvfi_rs2_addr, imm, rvfi_rs1_addr);
+  endfunction
+
+  function void decode_load_insn();
+    string      mnemonic;
+
+    /*
+    Gives wrong results in Verilator < 4.020.
+    See https://github.com/lowRISC/ibex/issues/372 and
+    https://www.veripool.org/issues/1536-Verilator-Misoptimization-in-if-and-case-with-default-statement-inside-a-function
+
+    unique case (rvfi_insn[14:12])
+      3'b000: mnemonic = "lb";
+      3'b001: mnemonic = "lh";
+      3'b010: mnemonic = "lw";
+      3'b100: mnemonic = "lbu";
+      3'b101: mnemonic = "lhu";
+      default: begin
+        decode_mnemonic("INVALID");
+        return;
       end
-    endfunction // printMnemonic
+    endcase
+    */
+    logic [2:0] size;
+    size = rvfi_insn[14:12];
+    if (size == 3'b000) begin
+      mnemonic = "lb";
+    end else if (size == 3'b001) begin
+      mnemonic = "lh";
+    end else if (size == 3'b010) begin
+      mnemonic = "lw";
+    end else if (size == 3'b100) begin
+      mnemonic = "lbu";
+    end else if (size == 3'b101) begin
+      mnemonic = "lhu";
+    end else begin
+      decode_mnemonic("INVALID");
+      return;
+    end
 
-    function void printRInstr(input string mnemonic);
-      begin
-        regs_read.push_back('{rs1, rs1_value_i});
-        regs_read.push_back('{rs2, rs2_value_i});
-        regs_write.push_back('{rd, 'x});
-        str = $sformatf("%-16s x%0d, x%0d, x%0d", mnemonic, rd, rs1, rs2);
+
+    data_accessed = RD | RS1 | MEM;
+    decoded_str = $sformatf("%s\tx%0d,%0d(x%0d)", mnemonic, rvfi_rd_addr,
+                    $signed({{20 {rvfi_insn[31]}}, rvfi_insn[31:20]}), rvfi_rs1_addr);
+  endfunction
+
+  function void decode_store_insn();
+    string    mnemonic;
+
+    unique case (rvfi_insn[13:12])
+      2'b00:  mnemonic = "sb";
+      2'b01:  mnemonic = "sh";
+      2'b10:  mnemonic = "sw";
+      default: begin
+        decode_mnemonic("INVALID");
+        return;
       end
-    endfunction // printRInstr
+    endcase
 
-    function void printIInstr(input string mnemonic);
-      begin
-        regs_read.push_back('{rs1, rs1_value_i});
-        regs_write.push_back('{rd, 'x});
-        str = $sformatf("%-16s x%0d, x%0d, %0d", mnemonic, rd, rs1, $signed({{20 {instr[31]}}, instr[31:20]}));
-      end
-    endfunction // printIInstr
+    if (!rvfi_insn[14]) begin
+      // regular store
+      data_accessed = RS1 | RS2 | MEM;
+      decoded_str = $sformatf("%s\tx%0d,%0d(x%0d)", mnemonic, rvfi_rs2_addr,
+                      $signed({ {20 {rvfi_insn[31]}}, rvfi_insn[31:25], rvfi_insn[11:7] }), rvfi_rs1_addr);
+    end else begin
+      decode_mnemonic("INVALID");
+    end
+  endfunction
 
-    function void printIuInstr(input string mnemonic);
-      begin
-        regs_read.push_back('{rs1, rs1_value_i});
-        regs_write.push_back('{rd, 'x});
-        str = $sformatf("%-16s x%0d, x%0d, 0x%0x", mnemonic, rd, rs1, {{20 {instr[31]}}, instr[31:20]});
-      end
-    endfunction // printIuInstr
+  function string get_fence_description(logic [3:0] bits);
+    string desc = "";
+    if (bits[3]) begin
+      desc = {desc, "i"};
+    end
+    if (bits[2]) begin
+      desc = {desc, "o"};
+    end
+    if (bits[1]) begin
+      desc = {desc, "r"};
+    end
+    if (bits[0]) begin
+      desc = {desc, "w"};
+    end
+    return desc;
+  endfunction
 
-    function void printUInstr(input string mnemonic);
-      begin
-        regs_write.push_back('{rd, 'x});
-        str = $sformatf("%-16s x%0d, 0x%0h", mnemonic, rd, {instr[31:12], 12'h000});
-      end
-    endfunction // printUInstr
-
-    function void printUJInstr(input string mnemonic);
-      begin
-        regs_write.push_back('{rd, 'x});
-        str =  $sformatf("%-16s x%0d, %0d", mnemonic, rd, $signed({ {12 {instr[31]}}, instr[19:12], instr[20], instr[30:21], 1'b0 }));
-      end
-    endfunction // printUJInstr
-
-    function void printSBInstr(input string mnemonic);
-      begin
-        regs_read.push_back('{rs1, rs1_value_i});
-        regs_read.push_back('{rs2, rs2_value_i});
-        str =  $sformatf("%-16s x%0d, x%0d, %0d", mnemonic, rs1, rs2, $signed({ {19 {instr[31]}}, instr[31], instr[7], instr[30:25], instr[11:8], 1'b0 }));
-      end
-    endfunction // printSBInstr
-
-    function void printCSRInstr(input string mnemonic);
-      logic [11:0] csr;
-      begin
-        csr = instr_i[31:20];
-
-        regs_write.push_back('{rd, 'x});
-
-        if (!instr_i[14]) begin
-          regs_read.push_back('{rs1, rs1_value_i});
-          str = $sformatf("%-16s x%0d, x%0d, 0x%h", mnemonic, rd, rs1, csr);
-        end else begin
-          str = $sformatf("%-16s x%0d, 0x%h, 0x%h", mnemonic, rd, { 27'b0, instr[`REG_S1] }, csr);
-        end
-      end
-    endfunction // printCSRInstr
-
-    function void printCRInstr(input string mnemonic);
-      logic [4:0] rs1;
-      logic [4:0] rs2;
-      begin
-        rs1 = instr_i[11:7];
-        rs2 = instr_i[6:2];
-
-        if (rs2 == 5'b0) begin
-          regs_read.push_back('{rs1, rs1_value_i});
-          str = $sformatf("%-16s x%0d", mnemonic, rs1);
-        end else begin
-          regs_write.push_back('{rs1, 'x});
-          regs_read.push_back('{rs2, rs2_value_i});
-          str = $sformatf("%-16s x%0d, x%0d", mnemonic, rs1, rs2);
-        end
-      end
-    endfunction // printCRInstr
-
-    function void printCIInstr(input string mnemonic);
-      begin
-        regs_write.push_back('{rd, 'x});
-        str = $sformatf("%-16s x%0d, 0x%h", mnemonic, rd, {instr_i[12], instr_i[4:0]});
-      end
-    endfunction // printCIInstr
-
-    function void printCIWInstr(input string mnemonic);
-      logic [4:0] rd;
-      begin
-        rd = {2'b01, instr_i[4:2]};
-        regs_write.push_back('{rd, 'x});
-        str = $sformatf("%-16s x%0d, 0x%h", mnemonic, rd, {instr_i[10:7], instr_i[12:11], instr_i[5], instr_i[6]});
-      end
-    endfunction // printCIWInstr
-
-    function void printCBInstr(input string mnemonic);
-      logic [4:0] rs1;
-      logic [8:1] imm;
-      begin
-        rs1 = {2'b01, instr_i[9:7]};
-        if ((instr_i[15:13] == 3'b110) || (instr_i[15:13] == 3'b111)) begin
-          imm = {instr_i[12], instr_i[6:5], instr_i[2], instr_i[11:10], instr_i[4:3]};
-          regs_read.push_back('{rs1, rs1_value_i});
-        end else begin
-          imm = {instr_i[12], instr_i[6:2], 2'b00};
-          regs_write.push_back('{rs1, 'x});
-        end
-        str = $sformatf("%-16s x%0d, 0x%h", mnemonic, rs1, imm);
-      end
-    endfunction // printCBInstr
-
-    function void printCSInstr(input string mnemonic);
-      logic [4:0] rd;
-      logic [4:0] rs2;
-      begin
-        rd  = {2'b01, instr_i[9:7]};
-        rs2 = {2'b01, instr_i[4:2]};
-
-        regs_write.push_back('{rd, 'x});
-        regs_read.push_back('{rs2, rs2_value_i});
-        str = $sformatf("%-16s x%0d, x%0d", mnemonic, rd, rs2);
-      end
-    endfunction // printCSInstr
-
-    function void printCJInstr(input string mnemonic);
-      logic [11:1] imm;
-      imm = {instr_i[12], instr_i[8], instr_i[10:9], instr_i[6],
-             instr_i[7], instr[2], instr[11], instr_i[5:3]};
-      begin
-        str = $sformatf("%-16s 0x%h", mnemonic, imm);
-      end
-    endfunction // printCJInstr
-
-    function void printCompressedLoadInstr(input string mnemonic);
-      logic [4:0] rd;
-      logic [4:0] rs1;
-      logic [7:0] imm;
-      mem_acc_t   mem_acc;
-      begin
-        // Detect C.LW intruction
-        if (instr_i[1:0] == OPCODE_C0) begin
-          rd = {2'b01, instr_i[4:2]};
-          rs1 = {2'b01, instr_i[9:7]};
-          imm = {1'b0, instr[5], instr[12:10], instr[6], 2'b00};
-        end else begin
-          // LWSP instruction
-          rd = instr_i[11:7];
-          rs1 = 5'h2;
-          imm = {instr[3:2], instr[12], instr[6:4], 2'b00};
-        end
-        regs_write.push_back('{rd, 'x});
-        regs_read.push_back('{rs1, rs1_value_i});
-        str = $sformatf("%-16s x%0d, %0d(x%0d)", mnemonic, rd, rs1, imm);
-        mem_acc.addr  = ex_data_addr_i;
-        mem_acc.rdata = ex_data_rdata_i;
-        mem_access.push_back(mem_acc);
-      end
-    endfunction // printCompressedLoadInstr()
-
-    function void printCompressedStoreInstr(input string mnemonic);
-      logic [4:0] rs1;
-      logic [4:0] rs2;
-      logic [7:0] imm;
-      mem_acc_t   mem_acc;
-      begin
-        // Detect C.SW instruction
-        if (instr_i[1:0] == OPCODE_C0) begin
-          rs1 = {2'b01, instr_i[9:7]};
-          rs2 = {2'b01, instr_i[4:2]};
-          imm = {1'b0, instr[5], instr[12:10], instr[6], 2'b0};
-        end else begin
-          // SWSP instruction
-          rs1 = 5'h2;
-          rs2 = instr_i[11:7];
-          imm = {instr[8:7], instr[12:9], 2'b00};
-        end
-        str = $sformatf("%-16s x%0d, %0d(x%0d)", mnemonic, rs2, rs1, imm);
-        regs_read.push_back('{rs1, rs1_value_i});
-        regs_read.push_back('{rs2, rs2_value_i});
-        mem_acc.addr  = ex_data_addr_i;
-        mem_acc.we    = 1'b1;
-        mem_acc.wdata = ex_data_wdata_i;
-        mem_access.push_back(mem_acc);
-      end
-    endfunction // printCompressedStoreInstr
-
-    function void printLoadInstr();
-      string      mnemonic;
-      logic [2:0] size;
-      mem_acc_t   mem_acc;
-      begin
-        // detect reg-reg load and find size
-        size = instr_i[14:12];
-        if (instr_i[14:12] == 3'b111) begin
-          size = instr_i[30:28];
-        end
-
-        unique case (size)
-          3'b000: mnemonic = "lb";
-          3'b001: mnemonic = "lh";
-          3'b010: mnemonic = "lw";
-          3'b100: mnemonic = "lbu";
-          3'b101: mnemonic = "lhu";
-          3'b110: mnemonic = "p.elw";
-          3'b011,
-          3'b111: begin
-            printMnemonic("INVALID");
-            return;
-          end
-          default: begin
-            printMnemonic("INVALID");
-            return;
-          end
-        endcase
-
-        regs_write.push_back('{rd, 'x});
-
-        if (instr_i[14:12] != 3'b111) begin
-          // regular load
-          regs_read.push_back('{rs1, rs1_value_i});
-          str = $sformatf("%-16s x%0d, %0d(x%0d)", mnemonic, rd, $signed({{20 {instr[31]}}, instr[31:20]}), rs1);
-        end else begin
-          printMnemonic("INVALID");
-        end
-
-        mem_acc.addr  = ex_data_addr_i;
-        mem_acc.rdata = ex_data_rdata_i;
-        mem_access.push_back(mem_acc);
-      end
-    endfunction
-
-    function void printStoreInstr();
-      string    mnemonic;
-      mem_acc_t mem_acc;
-      begin
-
-        unique case (instr_i[13:12])
-          2'b00:  mnemonic = "sb";
-          2'b01:  mnemonic = "sh";
-          2'b10:  mnemonic = "sw";
-          2'b11: begin
-            printMnemonic("INVALID");
-            return;
-          end
-          default: begin
-            printMnemonic("INVALID");
-            return;
-          end
-        endcase
-
-        if (!instr_i[14]) begin
-          // regular store
-          regs_read.push_back('{rs2, rs2_value_i});
-          regs_read.push_back('{rs1, rs1_value_i});
-          str = $sformatf("%-16s x%0d, %0d(x%0d)", mnemonic, rs2, $signed({ {20 {instr[31]}}, instr[31:25], instr[11:7] }), rs1);
-        end else begin
-          printMnemonic("INVALID");
-        end
-
-        mem_acc.addr  = ex_data_addr_i;
-        mem_acc.we    = 1'b1;
-        mem_acc.wdata = ex_data_wdata_i;
-        mem_access.push_back(mem_acc);
-      end
-    endfunction // printSInstr
-
-  endclass
-
-  mailbox #(instr_trace_t) instr_ex = new ();
-  mailbox #(instr_trace_t) instr_wb = new ();
+  function void decode_fence();
+    string predecessor;
+    string successor;
+    predecessor = get_fence_description(rvfi_insn[27:24]);
+    successor = get_fence_description(rvfi_insn[23:20]);
+    decoded_str = $sformatf("fence\t%s,%s", predecessor, successor);
+  endfunction
 
   // cycle counter
   always_ff @(posedge clk_i or negedge rst_ni) begin
     if (!rst_ni) begin
-      cycles = 0;
+      cycle <= 0;
     end else begin
-      cycles = cycles + 1;
+      cycle <= cycle + 1;
     end
   end
 
-  // open/close output file for writing
-  initial begin
-    wait(rst_ni == 1'b1);
-    wait(fetch_enable_i == 1'b1);
-    $sformat(fn, "trace_core_%h.log", hart_id_i);
-    $display("[TRACER] Output filename is: %s", fn);
-    f = $fopen(fn, "w");
-    $fwrite(f, "                Time          Cycles PC       Instr    Mnemonic\n");
-  end
-
+  // close output file for writing
   final begin
-    $fclose(f);
+    if (file_handle != 32'h0) begin
+      $fclose(file_handle);
+    end
   end
 
-  assign rd  = instr_i[`REG_D];
-  assign rs1 = instr_i[`REG_S1];
-  assign rs2 = instr_i[`REG_S2];
-  assign rs3 = instr_i[`REG_S3];
-
   // log execution
-  always @(posedge clk_i) begin
-    instr_trace_t trace;
-    mem_acc_t     mem_acc;
-    // special case for WFI because we don't wait for unstalling there
-    if (valid_i) begin
-      trace = new ();
+  always_ff @(posedge clk_i) begin
+    if (rvfi_valid) begin
+      printbuffer_dumpline();
+    end
+  end
 
-      trace.simtime    = $time;
-      trace.cycles     = cycles;
-      trace.pc         = pc_i;
-      trace.instr      = instr_i;
+  always_comb begin
+    decoded_str = "";
+    data_accessed = 4'h0;
+    insn_is_compressed = 0;
 
-      // Check for compressed instructions
-      if (instr_i[1:0] != 2'b11) begin
-        // Separate case to avoid overlapping decoding
-        if ((instr_i[15:13] == 3'b100) && (instr_i[1:0] == 2'b10)) begin
-          if (instr_i[12]) begin
-            if (instr_i[11:2] == 10'h0) begin
-              trace.printMnemonic("c.ebreak");
-            end else if (instr_i[6:2] == 5'b0) begin
-              trace.printCRInstr("c.jalr");
-            end else begin
-              trace.printCRInstr("c.add");
-            end
+    // Check for compressed instructions
+    if (rvfi_insn[1:0] != 2'b11) begin
+      insn_is_compressed = 1;
+      // Separate case to avoid overlapping decoding
+      if (rvfi_insn[15:13] == 3'b100 && rvfi_insn[1:0] == 2'b10) begin
+        if (rvfi_insn[12]) begin
+          if (rvfi_insn[11:2] == 10'h0) begin
+            decode_mnemonic("c.ebreak");
+          end else if (rvfi_insn[6:2] == 5'b0) begin
+            decode_cr_insn("c.jalr");
           end else begin
-            if (instr_i[6:2] == 5'h0) begin
-              trace.printCRInstr("c.jr");
-            end else begin
-              trace.printCRInstr("c.mv");
-            end
+            decode_cr_insn("c.add");
           end
         end else begin
-          // use casex instead of case inside due to ModelSim bug
-          unique casex (instr_i)
-            // C0 Opcodes
-            INSTR_CADDI4SPN:  trace.printCIWInstr("c.addi4spn");
-            INSTR_CLW:        trace.printCompressedLoadInstr("c.lw");
-            INSTR_CSW:        trace.printCompressedStoreInstr("c.sw");
-            // C1 Opcodes
-            INSTR_CADDI:      trace.printCIInstr("c.addi");
-            INSTR_CJAL:       trace.printCJInstr("c.jal");
-            INSTR_CJ:         trace.printCJInstr("c.j");
-            INSTR_CLI:        trace.printCIInstr("c.li");
-            INSTR_CLUI:       trace.printCIInstr("c.lui");
-            INSTR_CSRLI:      trace.printCBInstr("c.srli");
-            INSTR_CSRAI:      trace.printCBInstr("c.srai");
-            INSTR_CANDI:      trace.printCBInstr("c.andi");
-            INSTR_CSUB:       trace.printCSInstr("c.sub");
-            INSTR_CXOR:       trace.printCSInstr("c.xor");
-            INSTR_COR:        trace.printCSInstr("c.or");
-            INSTR_CAND:       trace.printCSInstr("c.and");
-            INSTR_CBEQZ:      trace.printCBInstr("c.beqz");
-            INSTR_CBNEZ:      trace.printCBInstr("c.bnez");
-            // C2 Opcodes
-            INSTR_CSLLI:      trace.printCIInstr("c.slli");
-            INSTR_CLWSP:      trace.printCompressedLoadInstr("c.lwsp");
-            INSTR_SWSP:       trace.printCompressedStoreInstr("c.swsp");
-            default:          trace.printMnemonic("INVALID");
-          endcase // unique casex (instr_i)
+          if (rvfi_insn[6:2] == 5'h0) begin
+            decode_cr_insn("c.jr");
+          end else begin
+            decode_cr_insn("c.mv");
+          end
         end
-      end else if (instr_i == 32'h00_00_00_13) begin
-        // separate case for 'nop' instruction to avoid overlapping with 'addi'
-        trace.printMnemonic("nop");
       end else begin
-        // use casex instead of case inside due to ModelSim bug
-        unique casex (instr_i)
-          // Regular opcodes
-          INSTR_LUI:        trace.printUInstr("lui");
-          INSTR_AUIPC:      trace.printUInstr("auipc");
-          INSTR_JAL:        trace.printUJInstr("jal");
-          INSTR_JALR:       trace.printIInstr("jalr");
-          // BRANCH
-          INSTR_BEQ:        trace.printSBInstr("beq");
-          INSTR_BNE:        trace.printSBInstr("bne");
-          INSTR_BLT:        trace.printSBInstr("blt");
-          INSTR_BGE:        trace.printSBInstr("bge");
-          INSTR_BLTU:       trace.printSBInstr("bltu");
-          INSTR_BGEU:       trace.printSBInstr("bgeu");
-          // OPIMM
-          INSTR_ADDI:       trace.printIInstr("addi");
-          INSTR_SLTI:       trace.printIInstr("slti");
-          INSTR_SLTIU:      trace.printIInstr("sltiu");
-          INSTR_XORI:       trace.printIInstr("xori");
-          INSTR_ORI:        trace.printIInstr("ori");
-          INSTR_ANDI:       trace.printIInstr("andi");
-          INSTR_SLLI:       trace.printIuInstr("slli");
-          INSTR_SRLI:       trace.printIuInstr("srli");
-          INSTR_SRAI:       trace.printIuInstr("srai");
-          // OP
-          INSTR_ADD:        trace.printRInstr("add");
-          INSTR_SUB:        trace.printRInstr("sub");
-          INSTR_SLL:        trace.printRInstr("sll");
-          INSTR_SLT:        trace.printRInstr("slt");
-          INSTR_SLTU:       trace.printRInstr("sltu");
-          INSTR_XOR:        trace.printRInstr("xor");
-          INSTR_SRL:        trace.printRInstr("srl");
-          INSTR_SRA:        trace.printRInstr("sra");
-          INSTR_OR:         trace.printRInstr("or");
-          INSTR_AND:        trace.printRInstr("and");
-          // SYSTEM (CSR manipulation)
-          INSTR_CSRRW:      trace.printCSRInstr("csrrw");
-          INSTR_CSRRS:      trace.printCSRInstr("csrrs");
-          INSTR_CSRRC:      trace.printCSRInstr("csrrc");
-          INSTR_CSRRWI:     trace.printCSRInstr("csrrwi");
-          INSTR_CSRRSI:     trace.printCSRInstr("csrrsi");
-          INSTR_CSRRCI:     trace.printCSRInstr("csrrci");
-          // SYSTEM (others)
-          INSTR_ECALL:      trace.printMnemonic("ecall");
-          INSTR_EBREAK:     trace.printMnemonic("ebreak");
-          INSTR_MRET:       trace.printMnemonic("mret");
-          INSTR_DRET:       trace.printMnemonic("dret");
-          INSTR_WFI:        trace.printMnemonic("wfi");
-          // RV32M
-          INSTR_PMUL:       trace.printRInstr("mul");
-          INSTR_PMUH:       trace.printRInstr("mulh");
-          INSTR_PMULHSU:    trace.printRInstr("mulhsu");
-          INSTR_PMULHU:     trace.printRInstr("mulhu");
-          INSTR_DIV:        trace.printRInstr("div");
-          INSTR_DIVU:       trace.printRInstr("divu");
-          INSTR_REM:        trace.printRInstr("rem");
-          INSTR_REMU:       trace.printRInstr("remu");
-          // LOAD & STORE
-          INSTR_LOAD:       trace.printLoadInstr();
-          INSTR_STORE:      trace.printStoreInstr();
-          // MISC-MEM
-          INSTR_FENCE:      trace.printMnemonic("fence");
-          default:          trace.printMnemonic("INVALID");
-        endcase // unique case (instr_i)
+        unique casez (rvfi_insn[15:0])
+          // C0 Opcodes
+          INSN_CADDI4SPN:  decode_ciw_insn("c.addi4spn");
+          INSN_CLW:        decode_compressed_load_insn("c.lw");
+          INSN_CSW:        decode_compressed_store_insn("c.sw");
+          // C1 Opcodes
+          INSN_CADDI:      decode_ci_caddi_insn("c.addi");
+          INSN_CJAL:       decode_cj_insn("c.jal");
+          INSN_CJ:         decode_cj_insn("c.j");
+          INSN_CLI:        decode_ci_cli_insn("c.li");
+          INSN_CLUI: begin
+            // These two instructions share opcode
+            if (rvfi_insn[11:7] == 5'd2) begin
+              decode_ci_caddi16sp_insn("c.addi16sp");
+            end else begin
+              decode_ci_clui_insn("c.lui");
+            end
+          end
+          INSN_CSRLI:      decode_cb_sr_insn("c.srli");
+          INSN_CSRAI:      decode_cb_sr_insn("c.srai");
+          INSN_CANDI:      decode_cb_insn("c.andi");
+          INSN_CSUB:       decode_cs_insn("c.sub");
+          INSN_CXOR:       decode_cs_insn("c.xor");
+          INSN_COR:        decode_cs_insn("c.or");
+          INSN_CAND:       decode_cs_insn("c.and");
+          INSN_CBEQZ:      decode_cb_insn("c.beqz");
+          INSN_CBNEZ:      decode_cb_insn("c.bnez");
+          // C2 Opcodes
+          INSN_CSLLI:      decode_ci_cslli_insn("c.slli");
+          INSN_CLWSP:      decode_compressed_load_insn("c.lwsp");
+          INSN_SWSP:       decode_compressed_store_insn("c.swsp");
+          default:         decode_mnemonic("INVALID");
+        endcase
       end
-
-      // replace register written back
-      foreach(trace.regs_write[i]) begin
-        if ((trace.regs_write[i].addr == ex_reg_addr_i)) begin
-          trace.regs_write[i].value = ex_reg_wdata_i;
+    end else begin
+      unique casez (rvfi_insn)
+        // Regular opcodes
+        INSN_LUI:        decode_u_insn("lui");
+        INSN_AUIPC:      decode_u_insn("auipc");
+        INSN_JAL:        decode_j_insn("jal");
+        INSN_JALR:       decode_i_jalr_insn("jalr");
+        // BRANCH
+        INSN_BEQ:        decode_b_insn("beq");
+        INSN_BNE:        decode_b_insn("bne");
+        INSN_BLT:        decode_b_insn("blt");
+        INSN_BGE:        decode_b_insn("bge");
+        INSN_BLTU:       decode_b_insn("bltu");
+        INSN_BGEU:       decode_b_insn("bgeu");
+        // OPIMM
+        INSN_ADDI: begin
+          if (rvfi_insn == 32'h00_00_00_13) begin
+            // TODO: objdump doesn't decode this as nop currently, even though it would be helpful
+            // Decide what to do here: diverge from objdump, or make the trace less readable to
+            // users.
+            //decode_mnemonic("nop");
+            decode_i_insn("addi");
+          end else begin
+            decode_i_insn("addi");
+          end
         end
-      end
-
-      trace.printInstrTrace();
+        INSN_SLTI:       decode_i_insn("slti");
+        INSN_SLTIU:      decode_i_insn("sltiu");
+        INSN_XORI:       decode_i_insn("xori");
+        INSN_ORI:        decode_i_insn("ori");
+        INSN_ANDI:       decode_i_insn("andi");
+        INSN_SLLI:       decode_i_shift_insn("slli");
+        INSN_SRLI:       decode_i_shift_insn("srli");
+        INSN_SRAI:       decode_i_shift_insn("srai");
+        // OP
+        INSN_ADD:        decode_r_insn("add");
+        INSN_SUB:        decode_r_insn("sub");
+        INSN_SLL:        decode_r_insn("sll");
+        INSN_SLT:        decode_r_insn("slt");
+        INSN_SLTU:       decode_r_insn("sltu");
+        INSN_XOR:        decode_r_insn("xor");
+        INSN_SRL:        decode_r_insn("srl");
+        INSN_SRA:        decode_r_insn("sra");
+        INSN_OR:         decode_r_insn("or");
+        INSN_AND:        decode_r_insn("and");
+        // SYSTEM (CSR manipulation)
+        INSN_CSRRW:      decode_csr_insn("csrrw");
+        INSN_CSRRS:      decode_csr_insn("csrrs");
+        INSN_CSRRC:      decode_csr_insn("csrrc");
+        INSN_CSRRWI:     decode_csr_insn("csrrwi");
+        INSN_CSRRSI:     decode_csr_insn("csrrsi");
+        INSN_CSRRCI:     decode_csr_insn("csrrci");
+        // SYSTEM (others)
+        INSN_ECALL:      decode_mnemonic("ecall");
+        INSN_EBREAK:     decode_mnemonic("ebreak");
+        INSN_MRET:       decode_mnemonic("mret");
+        INSN_DRET:       decode_mnemonic("dret");
+        INSN_WFI:        decode_mnemonic("wfi");
+        // RV32M
+        INSN_PMUL:       decode_r_insn("mul");
+        INSN_PMUH:       decode_r_insn("mulh");
+        INSN_PMULHSU:    decode_r_insn("mulhsu");
+        INSN_PMULHU:     decode_r_insn("mulhu");
+        INSN_DIV:        decode_r_insn("div");
+        INSN_DIVU:       decode_r_insn("divu");
+        INSN_REM:        decode_r_insn("rem");
+        INSN_REMU:       decode_r_insn("remu");
+        // LOAD & STORE
+        INSN_LOAD:       decode_load_insn();
+        INSN_STORE:      decode_store_insn();
+        // MISC-MEM
+        INSN_FENCE:      decode_fence();
+        INSN_FENCEI:     decode_mnemonic("fence.i");
+        default:         decode_mnemonic("INVALID");
+      endcase
     end
-  end // always @ (posedge clk_i)
+  end
 
 endmodule
-
-`undef REG_S1
-`undef REG_S2
-`undef REG_S3
-`undef REG_D
diff --git a/hw/vendor/lowrisc_ibex/rtl/ibex_tracer_pkg.sv b/hw/vendor/lowrisc_ibex/rtl/ibex_tracer_pkg.sv
index d834d2f..9527091 100644
--- a/hw/vendor/lowrisc_ibex/rtl/ibex_tracer_pkg.sv
+++ b/hw/vendor/lowrisc_ibex/rtl/ibex_tracer_pkg.sv
@@ -11,100 +11,104 @@
 parameter logic [1:0] OPCODE_C2 = 2'b10;
 
 // instruction masks (for tracer)
-parameter logic [31:0] INSTR_LUI     = { 25'b?,                           {OPCODE_LUI  } };
-parameter logic [31:0] INSTR_AUIPC   = { 25'b?,                           {OPCODE_AUIPC} };
-parameter logic [31:0] INSTR_JAL     = { 25'b?,                           {OPCODE_JAL  } };
-parameter logic [31:0] INSTR_JALR    = { 17'b?,             3'b000, 5'b?, {OPCODE_JALR } };
+parameter logic [31:0] INSN_LUI     = { 25'b?,                           {OPCODE_LUI  } };
+parameter logic [31:0] INSN_AUIPC   = { 25'b?,                           {OPCODE_AUIPC} };
+parameter logic [31:0] INSN_JAL     = { 25'b?,                           {OPCODE_JAL  } };
+parameter logic [31:0] INSN_JALR    = { 17'b?,             3'b000, 5'b?, {OPCODE_JALR } };
+
 // BRANCH
-parameter logic [31:0] INSTR_BEQ     = { 17'b?,             3'b000, 5'b?, {OPCODE_BRANCH} };
-parameter logic [31:0] INSTR_BNE     = { 17'b?,             3'b001, 5'b?, {OPCODE_BRANCH} };
-parameter logic [31:0] INSTR_BLT     = { 17'b?,             3'b100, 5'b?, {OPCODE_BRANCH} };
-parameter logic [31:0] INSTR_BGE     = { 17'b?,             3'b101, 5'b?, {OPCODE_BRANCH} };
-parameter logic [31:0] INSTR_BLTU    = { 17'b?,             3'b110, 5'b?, {OPCODE_BRANCH} };
-parameter logic [31:0] INSTR_BGEU    = { 17'b?,             3'b111, 5'b?, {OPCODE_BRANCH} };
-parameter logic [31:0] INSTR_BALL    = { 17'b?,             3'b010, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BEQ     = { 17'b?,             3'b000, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BNE     = { 17'b?,             3'b001, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BLT     = { 17'b?,             3'b100, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BGE     = { 17'b?,             3'b101, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BLTU    = { 17'b?,             3'b110, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BGEU    = { 17'b?,             3'b111, 5'b?, {OPCODE_BRANCH} };
+parameter logic [31:0] INSN_BALL    = { 17'b?,             3'b010, 5'b?, {OPCODE_BRANCH} };
+
 // OPIMM
-parameter logic [31:0] INSTR_ADDI    = { 17'b?,             3'b000, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_SLTI    = { 17'b?,             3'b010, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_SLTIU   = { 17'b?,             3'b011, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_XORI    = { 17'b?,             3'b100, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_ORI     = { 17'b?,             3'b110, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_ANDI    = { 17'b?,             3'b111, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_SLLI    = { 7'b0000000, 10'b?, 3'b001, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_SRLI    = { 7'b0000000, 10'b?, 3'b101, 5'b?, {OPCODE_OP_IMM} };
-parameter logic [31:0] INSTR_SRAI    = { 7'b0100000, 10'b?, 3'b101, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_ADDI    = { 17'b?,             3'b000, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_SLTI    = { 17'b?,             3'b010, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_SLTIU   = { 17'b?,             3'b011, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_XORI    = { 17'b?,             3'b100, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_ORI     = { 17'b?,             3'b110, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_ANDI    = { 17'b?,             3'b111, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_SLLI    = { 7'b0000000, 10'b?, 3'b001, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_SRLI    = { 7'b0000000, 10'b?, 3'b101, 5'b?, {OPCODE_OP_IMM} };
+parameter logic [31:0] INSN_SRAI    = { 7'b0100000, 10'b?, 3'b101, 5'b?, {OPCODE_OP_IMM} };
+
 // OP
-parameter logic [31:0] INSTR_ADD     = { 7'b0000000, 10'b?, 3'b000, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_SUB     = { 7'b0100000, 10'b?, 3'b000, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_SLL     = { 7'b0000000, 10'b?, 3'b001, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_SLT     = { 7'b0000000, 10'b?, 3'b010, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_SLTU    = { 7'b0000000, 10'b?, 3'b011, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_XOR     = { 7'b0000000, 10'b?, 3'b100, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_SRL     = { 7'b0000000, 10'b?, 3'b101, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_SRA     = { 7'b0100000, 10'b?, 3'b101, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_OR      = { 7'b0000000, 10'b?, 3'b110, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_AND     = { 7'b0000000, 10'b?, 3'b111, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_ADD     = { 7'b0000000, 10'b?, 3'b000, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_SUB     = { 7'b0100000, 10'b?, 3'b000, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_SLL     = { 7'b0000000, 10'b?, 3'b001, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_SLT     = { 7'b0000000, 10'b?, 3'b010, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_SLTU    = { 7'b0000000, 10'b?, 3'b011, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_XOR     = { 7'b0000000, 10'b?, 3'b100, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_SRL     = { 7'b0000000, 10'b?, 3'b101, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_SRA     = { 7'b0100000, 10'b?, 3'b101, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_OR      = { 7'b0000000, 10'b?, 3'b110, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_AND     = { 7'b0000000, 10'b?, 3'b111, 5'b?, {OPCODE_OP} };
 
 // SYSTEM
-parameter logic [31:0] INSTR_CSRRW   = { 17'b?,             3'b001, 5'b?, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_CSRRS   = { 17'b?,             3'b010, 5'b?, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_CSRRC   = { 17'b?,             3'b011, 5'b?, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_CSRRWI  = { 17'b?,             3'b101, 5'b?, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_CSRRSI  = { 17'b?,             3'b110, 5'b?, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_CSRRCI  = { 17'b?,             3'b111, 5'b?, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_ECALL   = { 12'b000000000000,         13'b0, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_EBREAK  = { 12'b000000000001,         13'b0, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_MRET    = { 12'b001100000010,         13'b0, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_DRET    = { 12'b011110110010,         13'b0, {OPCODE_SYSTEM} };
-parameter logic [31:0] INSTR_WFI     = { 12'b000100000101,         13'b0, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_CSRRW   = { 17'b?,             3'b001, 5'b?, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_CSRRS   = { 17'b?,             3'b010, 5'b?, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_CSRRC   = { 17'b?,             3'b011, 5'b?, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_CSRRWI  = { 17'b?,             3'b101, 5'b?, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_CSRRSI  = { 17'b?,             3'b110, 5'b?, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_CSRRCI  = { 17'b?,             3'b111, 5'b?, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_ECALL   = { 12'b000000000000,         13'b0, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_EBREAK  = { 12'b000000000001,         13'b0, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_MRET    = { 12'b001100000010,         13'b0, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_DRET    = { 12'b011110110010,         13'b0, {OPCODE_SYSTEM} };
+parameter logic [31:0] INSN_WFI     = { 12'b000100000101,         13'b0, {OPCODE_SYSTEM} };
 
 // RV32M
-parameter logic [31:0] INSTR_DIV     = { 7'b0000001, 10'b?, 3'b100, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_DIVU    = { 7'b0000001, 10'b?, 3'b101, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_REM     = { 7'b0000001, 10'b?, 3'b110, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_REMU    = { 7'b0000001, 10'b?, 3'b111, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_PMUL    = { 7'b0000001, 10'b?, 3'b000, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_PMUH    = { 7'b0000001, 10'b?, 3'b001, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_PMULHSU = { 7'b0000001, 10'b?, 3'b010, 5'b?, {OPCODE_OP} };
-parameter logic [31:0] INSTR_PMULHU  = { 7'b0000001, 10'b?, 3'b011, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_DIV     = { 7'b0000001, 10'b?, 3'b100, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_DIVU    = { 7'b0000001, 10'b?, 3'b101, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_REM     = { 7'b0000001, 10'b?, 3'b110, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_REMU    = { 7'b0000001, 10'b?, 3'b111, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_PMUL    = { 7'b0000001, 10'b?, 3'b000, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_PMUH    = { 7'b0000001, 10'b?, 3'b001, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_PMULHSU = { 7'b0000001, 10'b?, 3'b010, 5'b?, {OPCODE_OP} };
+parameter logic [31:0] INSN_PMULHU  = { 7'b0000001, 10'b?, 3'b011, 5'b?, {OPCODE_OP} };
 
 // LOAD & STORE
-parameter logic [31:0] INSTR_LOAD    = {25'b?,                            {OPCODE_LOAD } };
-parameter logic [31:0] INSTR_STORE   = {25'b?,                            {OPCODE_STORE} };
+parameter logic [31:0] INSN_LOAD    = {25'b?,                            {OPCODE_LOAD } };
+parameter logic [31:0] INSN_STORE   = {25'b?,                            {OPCODE_STORE} };
 
 // MISC-MEM
-parameter logic [31:0] INSTR_FENCE   = { 17'b?,             3'b000, 5'b?, {OPCODE_MISC_MEM} };
+parameter logic [31:0] INSN_FENCE   = { 17'b?,             3'b000, 5'b?, {OPCODE_MISC_MEM} };
+parameter logic [31:0] INSN_FENCEI  = { 17'b0,             3'b001, 5'b0, {OPCODE_MISC_MEM} };
 
 // Compressed Instructions
 // C0
-parameter logic [15:0] INSTR_CADDI4SPN  = { 3'b000,       11'b?,                    {OPCODE_C0} };
-parameter logic [15:0] INSTR_CLW        = { 3'b010,       11'b?,                    {OPCODE_C0} };
-parameter logic [15:0] INSTR_CSW        = { 3'b110,       11'b?,                    {OPCODE_C0} };
+parameter logic [15:0] INSN_CADDI4SPN  = { 3'b000,       11'b?,                    {OPCODE_C0} };
+parameter logic [15:0] INSN_CLW        = { 3'b010,       11'b?,                    {OPCODE_C0} };
+parameter logic [15:0] INSN_CSW        = { 3'b110,       11'b?,                    {OPCODE_C0} };
 
 // C1
-parameter logic [15:0] INSTR_CADDI      = { 3'b000,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CJAL       = { 3'b001,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CJ         = { 3'b101,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CLI        = { 3'b010,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CLUI       = { 3'b011,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CBEQZ      = { 3'b110,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CBNEZ      = { 3'b111,       11'b?,                    {OPCODE_C1} };
-parameter logic [15:0] INSTR_CSRLI      = { 3'b100, 1'b?, 2'b00, 8'b?,              {OPCODE_C1} };
-parameter logic [15:0] INSTR_CSRAI      = { 3'b100, 1'b?, 2'b01, 8'b?,              {OPCODE_C1} };
-parameter logic [15:0] INSTR_CANDI      = { 3'b100, 1'b?, 2'b10, 8'b?,              {OPCODE_C1} };
-parameter logic [15:0] INSTR_CSUB       = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b00, 3'b?, {OPCODE_C1} };
-parameter logic [15:0] INSTR_CXOR       = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b01, 3'b?, {OPCODE_C1} };
-parameter logic [15:0] INSTR_COR        = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b10, 3'b?, {OPCODE_C1} };
-parameter logic [15:0] INSTR_CAND       = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b11, 3'b?, {OPCODE_C1} };
+parameter logic [15:0] INSN_CADDI      = { 3'b000,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CJAL       = { 3'b001,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CJ         = { 3'b101,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CLI        = { 3'b010,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CLUI       = { 3'b011,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CBEQZ      = { 3'b110,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CBNEZ      = { 3'b111,       11'b?,                    {OPCODE_C1} };
+parameter logic [15:0] INSN_CSRLI      = { 3'b100, 1'b?, 2'b00, 8'b?,              {OPCODE_C1} };
+parameter logic [15:0] INSN_CSRAI      = { 3'b100, 1'b?, 2'b01, 8'b?,              {OPCODE_C1} };
+parameter logic [15:0] INSN_CANDI      = { 3'b100, 1'b?, 2'b10, 8'b?,              {OPCODE_C1} };
+parameter logic [15:0] INSN_CSUB       = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b00, 3'b?, {OPCODE_C1} };
+parameter logic [15:0] INSN_CXOR       = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b01, 3'b?, {OPCODE_C1} };
+parameter logic [15:0] INSN_COR        = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b10, 3'b?, {OPCODE_C1} };
+parameter logic [15:0] INSN_CAND       = { 3'b100, 1'b0, 2'b11, 3'b?, 2'b11, 3'b?, {OPCODE_C1} };
 
 // C2
-parameter logic [15:0] INSTR_CSLLI      = { 3'b000,       11'b?,                    {OPCODE_C2} };
-parameter logic [15:0] INSTR_CLWSP      = { 3'b010,       11'b?,                    {OPCODE_C2} };
-parameter logic [15:0] INSTR_SWSP       = { 3'b110,       11'b?,                    {OPCODE_C2} };
-parameter logic [15:0] INSTR_CMV        = { 3'b100, 1'b0, 10'b?,                    {OPCODE_C2} };
-parameter logic [15:0] INSTR_CADD       = { 3'b100, 1'b1, 10'b?,                    {OPCODE_C2} };
-parameter logic [15:0] INSTR_CEBREAK    = { 3'b100, 1'b1,        5'b0,  5'b0,       {OPCODE_C2} };
-parameter logic [15:0] INSTR_CJR        = { 3'b100, 1'b0,        5'b?,  5'b0,       {OPCODE_C2} };
-parameter logic [15:0] INSTR_CJALR      = { 3'b100, 1'b1,        5'b?,  5'b0,       {OPCODE_C2} };
+parameter logic [15:0] INSN_CSLLI      = { 3'b000,       11'b?,                    {OPCODE_C2} };
+parameter logic [15:0] INSN_CLWSP      = { 3'b010,       11'b?,                    {OPCODE_C2} };
+parameter logic [15:0] INSN_SWSP       = { 3'b110,       11'b?,                    {OPCODE_C2} };
+parameter logic [15:0] INSN_CMV        = { 3'b100, 1'b0, 10'b?,                    {OPCODE_C2} };
+parameter logic [15:0] INSN_CADD       = { 3'b100, 1'b1, 10'b?,                    {OPCODE_C2} };
+parameter logic [15:0] INSN_CEBREAK    = { 3'b100, 1'b1,        5'b0,  5'b0,       {OPCODE_C2} };
+parameter logic [15:0] INSN_CJR        = { 3'b100, 1'b0,        5'b?,  5'b0,       {OPCODE_C2} };
+parameter logic [15:0] INSN_CJALR      = { 3'b100, 1'b1,        5'b?,  5'b0,       {OPCODE_C2} };
 
 endpackage
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv.lock.hjson b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv.lock.hjson
index b4e5d34..4852610 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv.lock.hjson
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv.lock.hjson
@@ -9,6 +9,6 @@
   upstream:
   {
     url: https://github.com/google/riscv-dv
-    rev: 102791dbb7eb992d3bc22336d2e4e5f0d688e761
+    rev: d3419444ca2fdb499a204587b2d36c6f5c1e0c44
   }
 }
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/README.md b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/README.md
index 58d642f..3e72762 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/README.md
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/README.md
@@ -7,12 +7,16 @@
 - Supported privileged mode: machine mode, supervisor mode, user mode
 - Page table randomization and exception
 - Privileged CSR setup randomization
+- Privileged CSR test suite
 - Trap/interrupt handling
 - Test suite to stress test MMU
 - Support sub-programs and random program calls
 - Support illegal instruction and HINT instruction
 - Random forward/backward branch instructions
 - Supports mixing directed instructions with random instruction stream
+- Debug mode support, with fully randomized debug ROM
+- Instruction generation coverage model
+- Communication of information to any integrated SV testbench
 - Supports co-simulation with multiple ISS : spike, riscv-ovpsim
 
 A CSR test generation script written in Python is also provided, to generate a
@@ -59,6 +63,7 @@
 python3 run.py --test riscv_arithmetic_basic_test --simulator ius
 python3 run.py --test riscv_arithmetic_basic_test --simulator vcs
 python3 run.py --test riscv_arithmetic_basic_test --simulator questa
+python3 run.py --test riscv_arithmetic_basic_test --simulator dsim
 ```
 The complete test list can be found in [yaml/testlist.yaml](https://github.com/google/riscv-dv/blob/master/yaml/testlist.yaml). To run a full
 regression, simply use below command
@@ -77,22 +82,22 @@
 
 ```
 // Run a single test 10 times
-python3 run.py --test riscv_page_table_exception_test --iterations 10
+python3 run.py --test riscv_arithmetic_basic_test --iterations 10
 
 // Run a test with verbose logging
-python3 run.py --test riscv_page_table_exception_test --verbose
+python3 run.py --test riscv_arithmetic_basic_test --verbose
 
 // Run a test with a specified seed
-python3 run.py --test riscv_page_table_exception_test --seed 123
+python3 run.py --test riscv_arithmetic_basic_test --seed 123
 
 // Skip the generation, run ISS simulation with previously generated program
-python3 run.py --test riscv_page_table_exception_test --steps iss_sim
+python3 run.py --test riscv_arithmetic_basic_test --steps iss_sim
 
 // Run the generator only, do not compile and simluation with ISS
-python3 run.py --test riscv_page_table_exception_test --steps gen
+python3 run.py --test riscv_arithmetic_basic_test --steps gen
 
 // Compile the generator only, do not simulate
-python3 run.py --test riscv_page_table_exception_test --co
+python3 run.py --test riscv_arithmetic_basic_test --co
 
 ....
 ```
@@ -184,6 +189,37 @@
 ...
 ```
 
+### Setup the memory map
+
+Here's a few cases that you might want to allocate the instruction and data
+sections to match the actual memory map
+- The processor has internal memories, and you want to test load/store from
+  various internal/externel memory regions
+- The processor implments the PMP feature, and you want to configure the memory
+  map to match PMP setting.
+- Virtual address translation is implmented and you want to test load/store from
+  sparse memory locations to verify data TLB replacement logic.
+
+You can configure the memory map in [riscv_instr_gen_config.sv](https://github.com/google/riscv-dv/blob/master/src/riscv_instr_gen_config.sv)
+
+```
+  mem_region_t mem_region[$] = '{
+    '{name:"region_0", size_in_bytes: 4096,      xwr: 3'b111},
+    '{name:"region_1", size_in_bytes: 4096 * 4,  xwr: 3'b111},
+    '{name:"region_2", size_in_bytes: 4096 * 2,  xwr: 3'b111},
+    '{name:"region_3", size_in_bytes: 512,       xwr: 3'b111},
+    '{name:"region_4", size_in_bytes: 4096,      xwr: 3'b111}
+  };
+```
+
+Each memory region belongs to a separate section in the generated assembly
+program. You can modify the link script to link each section to the target
+memory location. Please avoid setting a large memory range as it could takes a
+long time to randomly initializing the memory. You can break down a large memory
+region to a few representative small regions which covers all the boundary
+conditions for the load/store testing.
+
+
 ### Runtime options of the generator
 
 | Option                      | Description                                       | Default |
@@ -192,14 +228,16 @@
 | num_of_sub_program          | Number of sub-program in one test                 | 5       |
 | instr_cnt                   | Instruction count per test                        | 200     |
 | enable_page_table_exception | Enable page table exception                       | 0       |
+| enable_unaligned_load_store | Enable unaligned memory operations                | 0       |
 | no_ebreak                   | Disable ebreak instruction                        | 1       |
 | no_wfi                      | Disable WFI instruction                           | 1       |
+| no_dret                     | Disable dret instruction                          | 1       |
 | no_branch_jump              | Disable branch/jump instruction                   | 0       |
 | no_load_store               | Disable load/store instruction                    | 0       |
 | no_csr_instr                | Disable CSR instruction                           | 0       |
 | no_fence                    | Disable fence instruction                         | 0       |
-| enable_illegal_instruction  | Enable illegal instructions                       | 0       |
-| enable_hint_instruction     | Enable HINT instruction                           | 0       |
+| illegal_instr_ratio         | Number of illegal instructions every 1000 instr   | 0       |
+| hint_instr_ratio            | Number of HINT instructions every 1000 instr      | 0       |
 | boot_mode                   | m:Machine mode, s:Supervisor mode, u:User mode    | m       |
 | no_directed_instr           | Disable directed instruction stream               | 0       |
 | require_signature_addr      | Set to 1 if test needs to talk to testbench       | 0       |
@@ -207,6 +245,9 @@
 | enable_interrupt            | Enable MStatus.MIE, used in interrupt test        | 0       |
 | gen_debug_section           | Disables randomized debug_rom section             | 0       |
 | num_debug_sub_program       | Number of debug sub-programs in test              | 0       |
+| enable_ebreak_in_debug_rom  | Generate ebreak instructions inside debug ROM     | 0       |
+| set_dcsr_ebreak             | Randomly enable dcsr.ebreak(m/s/u)                | 0       |
+| randomize_csr               | Fully randomize main CSRs (xSTATUS, xIE)          | 0       |
 
 
 ### Setup Privileged CSR description
@@ -295,7 +336,7 @@
 
 ```
 // Run ISS with spike
-python3 run.py --test riscv_page_table_exception_test --iss spike
+python3 run.py --test riscv_arithmetic_basic_test --iss spike
 
 // Run ISS with riscv-ovpsim
 python3 run.py --test riscv_rand_instr_test --iss ovpsim
@@ -336,16 +377,31 @@
 Simulate with the new ISS
 
 ```
-python3 run.py --test riscv_page_table_exception_test --iss new_iss_name
+python3 run.py --test riscv_arithmetic_basic_test --iss new_iss_name
 ```
 
 ## End-to-end RTL and ISS co-simulation flow
 
 We have collaborated with LowRISC to apply this flow for [IBEX RISC-V core
 verification](https://github.com/lowRISC/ibex/blob/master/doc/verification.rst). You can use
-it as a reference to setup end-to-end co-simulation flow. It's also a good
-reference for [customizing the generator](https://github.com/lowRISC/ibex/tree/master/dv/uvm/riscv_dv_extension) without getting impacted by upstream
-changes.
+it as a reference to setup end-to-end co-simulation flow.
+This repo is still under active development, here's recommended approach to
+customize the instruction generator while keeping the minimum effort of merging
+upstream changes.
+- Do not modify the upstream classes directly. When possible, extending from
+  the upstream classses and implment your own functionalities.
+- Add your extensions under user_extension directory, and add the files to
+  user_extension/user_extension.svh. If you prefer to put your extensions in a
+  different directory, you can use "-ext <user_extension_path>" to override the
+  user extension path.
+- Create a new file for riscv_core_setting.sv, add the path with below option:
+  "-cs <new_core_setting_path>"
+- Use command line type override to use your extended classes.
+  --sim_opts="+uvm_set_type_override=<upstream_class>,<extended_class>"
+
+You can refer to [riscv-dv extension for ibex](https://github.com/lowRISC/ibex/blob/master/dv/uvm/Makefile#L68) for a working example.
+
+
 We have plan to open-source the end-to-end environment of other advanced RISC-V
 processors. Stay tuned!
 
@@ -362,14 +418,6 @@
 verification platform. Free feel to submit your pull request for review.
 Please refer to CONTRIBUTING.md for license related questions.
 
-## Future release plan
-
-We have some work in progress which will be part of future releases:
-
--   Privileged CSR test suite.
--   Coverage model.
--   Debug mode support
-
 ## Disclaimer
 
 This is not an officially supported Google product.
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/cov.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/cov.py
new file mode 100644
index 0000000..c7eccc7
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/cov.py
@@ -0,0 +1,160 @@
+"""
+Copyright 2019 Google LLC
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Regression script for RISC-V random instruction generator
+"""
+
+import argparse
+import os
+import subprocess
+import re
+import sys
+import logging
+
+from datetime import date
+from scripts.lib import *
+from scripts.spike_log_to_trace_csv import *
+from scripts.ovpsim_log_to_trace_csv import *
+from scripts.sail_log_to_trace_csv import *
+
+LOGGER = logging.getLogger()
+
+def collect_cov(log_dir, out, iss, testlist, batch_size, lsf_cmd, steps, opts, timeout):
+  """Collect functional coverage from the instruction trace
+
+  Args:
+    log_dir    : ISS log directory
+    out        : Output directory
+    iss        : Instruction set simulator
+    test_list  : Testlist of the coverage test
+    batch_size : Number of trace CSV to process per test
+    lsf_cmd    : LSF command used to run the instruction generator
+    steps      : csv:log to CSV, cov:sample coverage
+    opts       : Additional options to the instruction generator
+    timeout    : Timeout limit in seconds
+  """
+  log_list = []
+  csv_list = []
+  trace_log = ("%s/%s_trace_log" % (out, iss))
+  logging.info("Processing trace log under %s" % log_dir)
+  run_cmd("find %s -name \"*.log\" | sort > %s" % (log_dir, trace_log))
+  with open(trace_log) as f:
+    for line in f:
+      line = line.rstrip()
+      log_list.append(line)
+      csv = line[0:-4] + ".csv"
+      csv_list.append(csv)
+  if steps == "all" or re.match("csv", steps):
+    for i in range(len(log_list)):
+      log = log_list[i]
+      csv = csv_list[i]
+      logging.info("Process %0s log[%0d/%0d] : %s" % (iss, i+1, len(log_list), log))
+      if iss == "spike":
+        process_spike_sim_log(log, csv, 1)
+      else:
+        logging.error("Full trace for %s is not supported yet" % iss)
+        sys.exit(1)
+  if steps == "all" or re.match("cov", steps):
+    build_cmd = ("%s python3 run.py --co -o %s --cov -tl %s %s" %
+                 (lsf_cmd, out, testlist, opts))
+    base_sim_cmd = ("%s python3 run.py --so -o %s --cov -tl %s %s "
+                    "-tn riscv_instr_cov_test --steps gen --sim_opts \"<trace_csv_opts>\"" %
+                    (lsf_cmd, out, testlist, opts))
+    run_cmd(build_cmd)
+    file_idx = 0
+    trace_idx = 0
+    trace_csv_opts = ""
+    batch_cnt = 1
+    sim_cmd_list = []
+    logging.info("Collecting functional coverage from %0d trace CSV" % len(csv_list))
+    if batch_size > 0:
+      batch_cnt = (len(csv_list)+batch_size-1)/batch_size;
+      logging.info("Batch size: %0d, Batch cnt:%0d" % (batch_size, batch_cnt))
+    for i in range(len(csv_list)):
+      if batch_size > 0:
+        file_idx = i / batch_size;
+        trace_idx = i % batch_size;
+      else:
+        file_idx = 0
+        trace_idx = i
+      trace_csv_opts += (" +trace_csv_%0d=%s" % (trace_idx, csv_list[i]))
+      if ((i == len(csv_list)-1) or ((batch_size > 0) and (trace_idx == batch_size-1))):
+        sim_cmd = base_sim_cmd.replace("<trace_csv_opts>", trace_csv_opts)
+        sim_cmd += ("  --log_suffix _%d" % file_idx)
+        if lsf_cmd == "":
+          logging.info("Processing batch %0d/%0d" % (file_idx+1, batch_cnt))
+          run_cmd(sim_cmd)
+        else:
+          sim_cmd_list.append(sim_cmd)
+        trace_csv_opts = ""
+    if lsf_cmd != "":
+      run_parallel_cmd(sim_cmd_list, timeout)
+    logging.info("Collecting functional coverage from %0d trace CSV...done" % len(csv_list))
+
+
+def setup_parser():
+  """Create a command line parser.
+
+  Returns: The created parser.
+  """
+  # Parse input arguments
+  parser = argparse.ArgumentParser()
+  parser.add_argument("-o", "--output", type=str,
+                      help="Output directory name", dest="o")
+  parser.add_argument("-v", "--verbose", dest="verbose", action="store_true",
+                      help="Verbose logging")
+  parser.add_argument("--dir", type=str,
+                      help="Directory of ISS  log")
+  parser.add_argument("-bz", "--batch_size", dest="batch_size", type=int, default=0,
+                      help="Number of CSV to process per run")
+  parser.add_argument("-to", "--timeout", dest="timeout", type=int, default=1000,
+                      help="Number of CSV to process per run")
+  parser.add_argument("-s", "--steps", type=str, default="all",
+                      help="Run steps: csv,cov", dest="steps")
+  parser.add_argument("--iss", type=str, default="spike",
+                      help="RISC-V instruction set simulator: spike,ovpsim,sail")
+  parser.add_argument("-tl", "--testlist", type=str, default="",
+                      help="Regression testlist", dest="testlist")
+  parser.add_argument("--opts", type=str, default="",
+                      help="Additional options for the instruction generator")
+  parser.add_argument("--lsf_cmd", type=str, default="",
+                      help="LSF command. Run in local sequentially if lsf \
+                            command is not specified")
+  parser.set_defaults(verbose=False)
+  return parser
+
+def main():
+  """This is the main entry point."""
+  parser = setup_parser()
+  args = parser.parse_args()
+  cwd = os.path.dirname(os.path.realpath(__file__))
+  setup_logging(args.verbose)
+
+  if not args.testlist:
+    args.testlist = cwd + "/yaml/cov_testlist.yaml"
+
+  # Create output directory
+  if args.o is None:
+    output_dir = "out_" + str(date.today())
+  else:
+    output_dir = args.o
+
+  subprocess.run(["mkdir", "-p", output_dir])
+
+  collect_cov(args.dir, output_dir, args.iss, args.testlist, args.batch_size,
+              args.lsf_cmd, args.steps, args.opts, args.timeout)
+
+if __name__ == "__main__":
+  main()
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/files.f b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/files.f
index 8722407..9945943 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/files.f
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/files.f
@@ -13,11 +13,11 @@
 // limitations under the License.
 
 // HEADERS
-+incdir+./src
-+incdir+./test
++incdir+${RISCV_DV_ROOT}/src
++incdir+${RISCV_DV_ROOT}/test
 
 // SOURCES
-./src/riscv_signature_pkg.sv
-./src/riscv_instr_pkg.sv
-./test/riscv_instr_test_pkg.sv
-./test/riscv_instr_gen_tb_top.sv
+${RISCV_DV_ROOT}/src/riscv_signature_pkg.sv
+${RISCV_DV_ROOT}/src/riscv_instr_pkg.sv
+${RISCV_DV_ROOT}/test/riscv_instr_test_pkg.sv
+${RISCV_DV_ROOT}/test/riscv_instr_gen_tb_top.sv
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/run.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/run.py
index 0da97d8..b01eadc 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/run.py
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/run.py
@@ -32,12 +32,13 @@
 
 LOGGER = logging.getLogger()
 
-def get_generator_cmd(simulator, simulator_yaml):
+def get_generator_cmd(simulator, simulator_yaml, cov):
   """ Setup the compile and simulation command for the generator
 
   Args:
     simulator      : RTL simulator used to run instruction generator
     simulator_yaml : RTL simulator configuration file in YAML format
+    cov            : Enable functional coverage
 
   Returns:
     compile_cmd    : RTL simulator command to compile the instruction generator
@@ -49,8 +50,23 @@
   for entry in yaml_data:
     if entry['tool'] == simulator:
       logging.info("Found matching simulator: %s" % entry['tool'])
-      compile_cmd = entry['compile_cmd']
-      sim_cmd = entry['sim_cmd']
+      compile_spec = entry['compile']
+      compile_cmd = compile_spec['cmd']
+      for i in range(len(compile_cmd)):
+        if ('cov_opts' in compile_spec) and cov:
+          compile_cmd[i] = re.sub('<cov_opts>', compile_spec['cov_opts'].rstrip(), compile_cmd[i])
+        else:
+          compile_cmd[i] = re.sub('<cov_opts>', '', compile_cmd[i])
+      sim_cmd = entry['sim']['cmd']
+      if ('cov_opts' in entry['sim']) and cov:
+        sim_cmd = re.sub('<cov_opts>', entry['sim']['cov_opts'].rstrip(), sim_cmd)
+      else:
+        sim_cmd = re.sub('<cov_opts>', '', sim_cmd)
+      if 'env_var' in entry:
+        for env_var in entry['env_var'].split(','):
+          for i in range(len(compile_cmd)):
+            compile_cmd[i] = re.sub("<"+env_var+">", get_env_var(env_var), compile_cmd[i])
+          sim_cmd = re.sub("<"+env_var+">", get_env_var(env_var), sim_cmd)
       return compile_cmd, sim_cmd
   logging.error("Cannot find RTL simulator %0s" % simulator)
   sys.exit(1)
@@ -102,7 +118,8 @@
 
 def gen(test_list, csr_file, end_signature_addr, isa, simulator,
         simulator_yaml, output_dir, sim_only, compile_only, lsf_cmd, seed,
-        cwd, cmp_opts, sim_opts, timeout_s):
+        cwd, cmp_opts, sim_opts, timeout_s, core_setting_dir, ext_dir, cov,
+        log_suffix, batch_size):
   """Run the instruction generator
 
   Args:
@@ -120,6 +137,11 @@
     cmp_opts              : Compile options for the generator
     sim_opts              : Simulation options for the generator
     timeout_s             : Timeout limit in seconds
+    core_setting_dir      : Path for riscv_core_setting.sv
+    ext_dir               : User extension directory
+    cov                   : Enable functional coverage
+    log_suffix            : Simulation log file name suffix
+    batch_size            : Number of tests to generate per run
   """
   # Mutually exclusive options between compile_only and sim_only
   if compile_only and sim_only:
@@ -127,8 +149,8 @@
   # Setup the compile and simulation command for the generator
   compile_cmd = []
   sim_cmd = ""
-  compile_cmd, sim_cmd = get_generator_cmd(simulator, simulator_yaml);
-  if len(test_list) == 0:
+  compile_cmd, sim_cmd = get_generator_cmd(simulator, simulator_yaml, cov);
+  if ((compile_only == 0) and (len(test_list) == 0)):
     return
   # Compile the instruction generator
   if not sim_only:
@@ -136,8 +158,17 @@
       logging.info("Building RISC-V instruction generator")
       for cmd in compile_cmd:
         cmd = re.sub("<out>", os.path.abspath(output_dir), cmd)
+        if core_setting_dir == "":
+          cmd = re.sub("<setting>", "<cwd>/setting", cmd)
+        else:
+          cmd = re.sub("<setting>", core_setting_dir, cmd)
+        if ext_dir == "":
+          cmd = re.sub("<user_extension>", "<cwd>/user_extension", cmd)
+        else:
+          cmd = re.sub("<user_extension>", ext_dir, cmd)
         cmd = re.sub("<cwd>", cwd, cmd)
         cmd = re.sub("<cmp_opts>", cmp_opts, cmd)
+
         logging.debug("Compile command: %s" % cmd)
         logging.debug(run_cmd(cmd))
   # Run the instruction generator
@@ -149,6 +180,7 @@
     logging.info("Running RISC-V instruction generator")
     for test in test_list:
       iterations = test['iterations']
+      logging.info("Generating %d %s" % (iterations, test['test']))
       if iterations > 0:
         """
         If we are running a CSR test, need to call a separate python script
@@ -161,23 +193,39 @@
                 (" --iterations %i" % iterations) + \
                 (" --out %s/asm_tests" % output_dir) + \
                 (" --end_signature_addr %s" % end_signature_addr)
+          if lsf_cmd:
+            cmd_list.append(cmd)
+          else:
+            run_cmd(cmd, timeout_s)
         else:
-          rand_seed = get_seed(seed)
-          cmd = lsf_cmd + " " + sim_cmd.rstrip() + \
-                (" +UVM_TESTNAME=%s " % test['gen_test']) + \
-                (" +num_of_tests=%i " % iterations) + \
-                (" +asm_file_name=%s/asm_tests/%s " % (output_dir, test['test'])) + \
-                (" -l %s/sim_%s.log " % (output_dir, test['test']))
-          cmd = re.sub("<seed>", str(rand_seed), cmd)
-          if "gen_opts" in test:
-            cmd += test['gen_opts']
-        if not re.search("c", isa):
-          cmd += "+disable_comparessed_instr=1";
-        logging.info("Generating %d %s" % (iterations, test['test']))
-        if lsf_cmd:
-          cmd_list.append(cmd)
-        else:
-          run_cmd(cmd, timeout_s)
+          if batch_size > 0:
+            batch_cnt = int((iterations + batch_size - 1)  / batch_size);
+          else:
+            batch_cnt = 1
+          logging.info("Running %s with %0d batches" % (test['test'], batch_cnt))
+          for i in range(0, batch_cnt):
+            rand_seed = get_seed(seed)
+            if i < batch_cnt - 1:
+              test_cnt = batch_size
+            else:
+              test_cnt = iterations - i * batch_size;
+            cmd = lsf_cmd + " " + sim_cmd.rstrip() + \
+                  (" +UVM_TESTNAME=%s " % test['gen_test']) + \
+                  (" +num_of_tests=%i " % test_cnt) + \
+                  (" +start_idx=%d " % (i*batch_size)) + \
+                  (" +asm_file_name=%s/asm_tests/%s " % (output_dir, test['test'])) + \
+                  (" -l %s/sim_%s_%d%s.log " % (output_dir, test['test'], i, log_suffix))
+            cmd = re.sub("<seed>", str(rand_seed), cmd)
+            if "gen_opts" in test:
+              cmd += test['gen_opts']
+            if not re.search("c", isa):
+              cmd += "+disable_comparessed_instr=1";
+            if lsf_cmd:
+              cmd_list.append(cmd)
+            else:
+              logging.info("Running %s, batch %0d/%0d, test_cnt:%0d" %
+                           (test['test'], i+1, batch_cnt, test_cnt))
+              run_cmd(cmd, timeout_s)
     if lsf_cmd:
       run_parallel_cmd(cmd_list, timeout_s)
 
@@ -193,7 +241,9 @@
   """
   for test in test_list:
     for i in range(0, test['iterations']):
-      prefix = ("%s/asm_tests/%s.%d" % (output_dir, test['test'], i))
+      if 'no_gcc' in test and test['no_gcc'] == 1:
+        continue
+      prefix = ("%s/asm_tests/%s_%d" % (output_dir, test['test'], i))
       asm = prefix + ".S"
       elf = prefix + ".o"
       binary = prefix + ".bin"
@@ -201,8 +251,10 @@
       cmd = ("%s -static -mcmodel=medany \
              -fvisibility=hidden -nostdlib \
              -nostartfiles %s \
-             -Tscripts/link.ld %s -o %s " % \
-             (get_env_var("RISCV_GCC"), asm, opts, elf))
+             -I%s/user_extension \
+             -T%s/scripts/link.ld %s -o %s " % \
+             (get_env_var("RISCV_GCC"), asm, get_env_var("RISCV_DV_ROOT"),
+              get_env_var("RISCV_DV_ROOT"), opts, elf))
       if 'gcc_opts' in test:
         cmd += test['gcc_opts']
       # If march/mabi is not defined in the test gcc_opts, use the default
@@ -222,6 +274,45 @@
       logging.debug(output)
 
 
+def run_assembly(asm_test, iss_yaml, isa, mabi, iss):
+  """Run a directed assembly test with spike
+
+  Args:
+    asm_tset   : Assembly test file
+    iss_yaml   : ISS configuration file in YAML format
+    isa        : ISA variant passed to the ISS
+    mabi       : MABI variant passed to GCC
+    iss        : Instruction set simulators
+  """
+  asm = asm_test
+  elf = asm_test + ".o"
+  binary = asm_test + ".bin"
+  log = asm_test + ".log"
+  logging.info("Compiling assembly test : %s" % asm)
+  # gcc comilation
+  cmd = ("%s -static -mcmodel=medany \
+         -fvisibility=hidden -nostdlib \
+         -nostartfiles %s \
+         -I%s/user_extension \
+         -T%s/scripts/link.ld -o %s " % \
+         (get_env_var("RISCV_GCC"), asm, get_env_var("RISCV_DV_ROOT"),
+          get_env_var("RISCV_DV_ROOT"), elf))
+  cmd += (" -march=%s" % isa)
+  cmd += (" -mabi=%s" % mabi)
+  logging.info("Compiling %s" % asm)
+  output = subprocess.check_output(cmd.split())
+  # Convert the ELF to plain binary, used in RTL sim
+  logging.info("Converting to %s" % binary)
+  cmd = ("%s -O binary %s %s" % (get_env_var("RISCV_OBJCOPY"), elf, binary))
+  output = subprocess.check_output(cmd.split())
+  logging.debug(output)
+  base_cmd = parse_iss_yaml(iss, iss_yaml, isa)
+  logging.info("[%0s] Running ISS simulation: %s" % (iss, elf))
+  cmd = get_iss_cmd(base_cmd, elf, log)
+  run_cmd(cmd, 20)
+  logging.info("[%0s] Running ISS simulation: %s ...done" % (iss, elf))
+
+
 def iss_sim(test_list, output_dir, iss_list, iss_yaml, isa, timeout_s):
   """Run ISS simulation with the generated test program
 
@@ -243,11 +334,11 @@
         continue
       else:
         for i in range(0, test['iterations']):
-          prefix = ("%s/asm_tests/%s.%d" % (output_dir, test['test'], i))
+          prefix = ("%s/asm_tests/%s_%d" % (output_dir, test['test'], i))
           elf = prefix + ".o"
           log = ("%s/%s.%d.log" % (log_dir, test['test'], i))
           cmd = get_iss_cmd(base_cmd, elf, log)
-          logging.info("Running ISS simulation: %s" % elf)
+          logging.info("Running %s sim: %s" % (iss, elf))
           run_cmd(cmd, timeout_s)
           logging.debug(cmd)
 
@@ -268,7 +359,7 @@
   run_cmd("rm -rf %s" % report)
   for test in test_list:
     for i in range(0, test['iterations']):
-      elf = ("%s/asm_tests/%s.%d.o" % (output_dir, test['test'], i))
+      elf = ("%s/asm_tests/%s_%d.o" % (output_dir, test['test'], i))
       logging.info("Comparing ISS sim result %s/%s : %s" %
                   (iss_list[0], iss_list[1], elf))
       csv_list = []
@@ -321,6 +412,8 @@
                       help="Verbose logging")
   parser.add_argument("--co", dest="co", action="store_true",
                       help="Compile the generator only")
+  parser.add_argument("--cov", dest="cov", action="store_true",
+                      help="Enable functional coverage")
   parser.add_argument("--so", dest="so", action="store_true",
                       help="Simulate the generator only")
   parser.add_argument("--cmp_opts", type=str, default="",
@@ -342,7 +435,7 @@
                       help="Generator timeout limit in seconds")
   parser.add_argument("--end_signature_addr", type=str, default="0",
                       help="Address that privileged CSR test writes to at EOT")
-  parser.add_argument("--iss_timeout", type=int, default=50,
+  parser.add_argument("--iss_timeout", type=int, default=25,
                       help="ISS sim timeout limit in seconds")
   parser.add_argument("--iss_yaml", type=str, default="",
                       help="ISS setting YAML")
@@ -350,33 +443,27 @@
                       help="RTL simulator setting YAML")
   parser.add_argument("--csr_yaml", type=str, default="",
                       help="CSR description file")
-
+  parser.add_argument("-cs", "--core_setting_dir", type=str, default="",
+                      help="Path for the riscv_core_setting.sv")
+  parser.add_argument("-ext", "--user_extension_dir", type=str, default="",
+                      help="Path for the user extension directory")
+  parser.add_argument("--asm_test", type=str, default="",
+                      help="Directed assembly test")
+  parser.add_argument("--log_suffix", type=str, default="",
+                      help="Simulation log name suffix")
+  parser.add_argument("-bz", "--batch_size", type=int, default=0,
+                      help="Number of tests to generate per run. You can split a big"
+                           " job to small batches with this option")
   parser.set_defaults(co=False)
   parser.set_defaults(so=False)
   parser.set_defaults(verbose=False)
-
+  parser.set_defaults(cov=False)
   return parser
 
 
-def setup_logging(verbose):
-  """Setup the root logger.
-
-  Args:
-    verbose: Verbose logging
-  """
-  if verbose:
-    logging.basicConfig(format="%(asctime)s %(filename)s:%(lineno)-5s %(levelname)-8s %(message)s",
-                        datefmt='%a, %d %b %Y %H:%M:%S',
-                        level=logging.DEBUG)
-  else:
-    logging.basicConfig(format="%(asctime)s %(levelname)-8s %(message)s",
-                        datefmt='%a, %d %b %Y %H:%M:%S',
-                        level=logging.INFO)
-
-
 def main():
   """This is the main entry point."""
-
+  check_riscv_dv_setting()
   parser = setup_parser()
   args = parser.parse_args()
   cwd = os.path.dirname(os.path.realpath(__file__))
@@ -394,26 +481,34 @@
   if not args.testlist:
     args.testlist = cwd + "/yaml/testlist.yaml"
 
+  if args.asm_test != "":
+    run_assembly(args.asm_test, args.iss_yaml, args.isa, args.mabi, args.iss)
+    return
+
   # Create output directory
   if args.o is None:
     output_dir = "out_" + str(date.today())
   else:
     output_dir = args.o
+
   subprocess.run(["mkdir", "-p", output_dir])
   subprocess.run(["mkdir", "-p", ("%s/asm_tests" % output_dir)])
 
   # Process regression test list
   matched_list = []
-  process_regression_list(args.testlist, args.test, args.iterations, matched_list)
-  if len(matched_list) == 0:
-    sys.exit("Cannot find %s in %s" % (args.test, args.testlist))
+
+  if not args.co:
+    process_regression_list(args.testlist, args.test, args.iterations, matched_list)
+    if len(matched_list) == 0:
+      sys.exit("Cannot find %s in %s" % (args.test, args.testlist))
 
   # Run instruction generator
   if args.steps == "all" or re.match("gen", args.steps):
     gen(matched_list, args.csr_yaml, args.end_signature_addr, args.isa,
         args.simulator, args.simulator_yaml, output_dir, args.so,
         args.co, args.lsf_cmd, args.seed, cwd, args.cmp_opts,
-        args.sim_opts, args.gen_timeout)
+        args.sim_opts, args.gen_timeout, args.core_setting_dir,
+        args.user_extension_dir, args.cov, args.log_suffix, args.batch_size)
 
   if not args.co:
     # Compile the assembly program to ELF, convert to plain binary
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/sample/sample.S b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/sample/sample.S
deleted file mode 100644
index d95bfac..0000000
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/sample/sample.S
+++ /dev/null
@@ -1,19195 +0,0 @@
-.macro init
-.endm
-.section .text.init
-.globl _start
-_start:
-                  li x0, 0x1
-                  li x1, 0x0
-                  li x2, 0x4e04f00
-                  li x3, 0x80000000
-                  li x4, 0x0
-                  li x5, 0x0
-                  li x6, 0x80000000
-                  li x7, 0x0
-                  li x8, 0x0
-                  li x9, 0x2486412d
-                  li x10, 0xf96da636
-                  li x11, 0x80000000
-                  li x12, 0x0
-                  li x13, 0x6a169e6f
-                  li x14, 0x0
-                  li x15, 0x0
-                  li x16, 0x9
-                  li x17, 0xecebb53e
-                  li x18, 0x80000000
-                  li x19, 0x6
-                  li x20, 0x0
-                  li x21, 0xfd7b9523
-                  li x22, 0xf6a1c7ac
-                  li x23, 0xf2d48ef9
-                  li x24, 0x80000000
-                  li x25, 0x3
-                  li x26, 0x80000000
-                  li x27, 0x80000000
-                  li x28, 0x22f2ef4
-                  li x29, 0xfdbae154
-                  li x30, 0x34168a6f
-                  li x31, 0xf1e45ffd
-kernel_sp:        
-                  la tp, _kernel_stack_end
-
-trap_vec_init:    
-                  la a0, mtvec_handler
-                  csrw 0x305, a0 # MTVEC
-
-mepc_setup:       
-                  la x10, _init
-                  csrw mepc, x10
-                  j init_machine_mode
-
-_init:            
-                  la sp, _user_stack_end
-_main:            c.srai     a2, 29
-                  lui        zero, 238737
-                  lui        s11, 235721
-                  auipc      s7, 76889
-                  xor        t3, ra, s6
-                  c.addi     gp, 29
-                  c.addi     a0, -27
-                  lui        a2, 384033
-                  c.sub      a0, a5
-                  c.slli     t1, 28
-                  srai       t1, a1, 2
-                  auipc      a7, 827597
-                  c.slli     t1, 5
-                  c.addi     s9, 2
-                  c.srli     s0, 26
-                  c.srai     s0, 31
-                  c.slli     a7, 28
-                  nop
-                  c.beqz     s0, 23f
-                  divu       s5, s3, zero
-                  la         t6, data_page_10+2392 #start riscv_load_store_rand_instr_stream_28
-                  remu       t4, a1, zero
-                  sw         t1, 124(t6)
-                  sb         zero, -1935(t6)
-                  c.addi     s4, 17
-                  sltiu      t5, a6, 801
-                  lb         s5, 1505(t6)
-                  auipc      a5, 279144
-                  lw         a2, 1536(t6)
-                  lui        a6, 614242
-                  c.srli     s0, 25
-                  auipc      t3, 220077
-                  c.lui      t3, 28
-                  auipc      s0, 305607
-                  c.slli     t1, 6
-                  c.addi     t1, 22
-                  auipc      s7, 871831
-                  lb         s4, -1011(t6)
-                  c.slli     a2, 15
-                  div        zero, s6, s2
-                  auipc      s4, 324009
-                  c.slli     t5, 29
-                  c.lui      t1, 10
-                  sh         s9, -952(t6)
-                  sb         ra, -1602(t6)
-                  lui        s1, 459072
-                  c.addi     gp, -29
-                  c.lui      s4, 17
-                  lb         s1, -1291(t6)
-                  c.or       a0, a3
-                  auipc      s1, 674641
-                  lui        s0, 792087
-                  sb         a1, 1581(t6)
-                  sb         s8, 378(t6)
-                  auipc      s3, 870733
-                  lbu        s1, 849(t6)
-                  sb         t4, -1621(t6)
-                  c.addi     s1, 28
-                  lb         s3, 1245(t6)
-                  auipc      a2, 410504
-                  auipc      gp, 783318
-                  lh         t4, -64(t6)
-                  lb         gp, -1679(t6)
-                  lw         s1, -928(t6)
-                  sub        t3, t2, a6
-                  lb         a6, 477(t6)
-                  c.addi     a3, 12
-                  lb         s8, -1681(t6) #end riscv_load_store_rand_instr_stream_28
-                  lui        a5, 538415
-                  bgeu       sp, s0, 31f
-                  mul        s10, t6, s6
-23:               auipc      s10, 359030
-                  lui        gp, 347341
-                  c.andi     a4, -2
-                  lui        t6, 399070
-                  c.addi     t5, -26
-                  c.lui      a0, 11
-                  c.slli     a5, 11
-                  c.srai     a1, 5
-31:               c.srai     s0, 3
-                  lui        s1, 610938
-                  sltu       t2, sp, t3
-                  c.addi     t4, 29
-                  sra        a5, t4, s9
-                  mulh       a7, s3, s7
-                  c.srli     s0, 25
-                  c.srli     a1, 27
-                  lui        gp, 188064
-                  c.or       a5, a0
-                  c.srai     a3, 19
-                  c.lui      s4, 25
-                  blt        s10, s0, 49f
-                  fence.i
-                  c.addi     a3, 23
-                  c.addi     s11, -27
-                  c.slli     s2, 6
-                  c.lui      t1, 22
-49:               c.addi     a0, 16
-                  c.andi     a2, 30
-                  c.addi     s8, -9
-                  slti       a3, s10, 221
-                  lui        t5, 395389
-                  c.lui      a6, 5
-                  lui        t1, 827400
-                  c.srai     a2, 18
-                  c.addi     s5, -11
-                  c.addi     t6, 7
-                  c.addi     t6, 18
-                  auipc      t2, 473859
-                  c.addi     t3, -17
-                  xori       s11, s8, 669
-                  lui        a1, 173394
-                  c.nop
-                  c.addi     s10, -19
-                  c.addi     s3, 11
-                  c.addi     s9, -6
-                  c.srli     a5, 20
-                  sra        gp, a3, s1
-                  lui        s7, 700176
-                  sra        t5, t4, s6
-                  c.addi     a1, -22
-                  c.addi     s8, 11
-                  nop
-                  c.addi     a4, 17
-                  lui        t1, 790428
-                  c.slli     s8, 8
-                  mulh       s1, t3, tp
-                  bne        ra, zero, 86f
-                  lui        a6, 8130
-                  c.srli     a3, 13
-                  c.mv       s11, t3
-                  c.or       a2, s1
-                  c.srai     s1, 7
-                  c.mv       a5, s9
-86:               auipc      s7, 819547
-                  remu       gp, t5, s11
-                  div        a7, s10, s10
-                  c.addi     s3, -8
-                  c.addi     s3, -12
-                  bne        a1, sp, 101f
-                  rem        a3, a3, t5
-                  c.addi     a4, 16
-                  lui        zero, 695379
-                  lui        zero, 690954
-                  c.addi     s8, -13
-                  lui        t4, 388194
-                  lui        t2, 218029
-                  auipc      a0, 533303
-                  c.add      a0, a4
-101:              xori       s7, t4, -314
-                  c.addi     s8, -27
-                  auipc      a3, 448156
-                  c.addi     t4, 28
-                  c.addi     s2, 25
-                  c.srai     s1, 30
-                  xori       s5, s2, -427
-                  c.and      a2, s0
-                  auipc      s2, 697995
-                  c.lui      s3, 23
-                  auipc      s11, 545666
-                  c.sub      s0, s0
-                  div        zero, s3, tp
-                  divu       t3, gp, s6
-                  c.slli     a0, 25
-                  remu       t6, s1, s9
-                  c.srai     a4, 17
-                  c.srli     s0, 14
-                  c.srai     a3, 11
-                  auipc      a3, 567602
-                  mulhsu     s4, a2, s9
-                  c.addi     a5, 17
-                  auipc      a3, 503184
-                  c.lui      t6, 18
-                  blt        a5, t1, 140f
-                  c.slli     t1, 15
-                  c.addi     s0, 26
-                  c.addi     gp, 19
-                  c.lui      t6, 30
-                  auipc      s2, 31723
-                  c.lui      s1, 31
-                  c.lui      a0, 2
-                  c.addi     s7, -30
-                  c.addi     a2, -32
-                  c.srai     a5, 28
-                  c.lui      s3, 22
-                  lui        a2, 609043
-                  c.addi     a0, 14
-                  auipc      t1, 230242
-140:              lui        a1, 158565
-                  blt        ra, s11, 161f
-                  c.slli     s4, 3
-                  lui        s9, 379078
-                  c.sub      a1, s1
-                  c.lui      a2, 3
-                  c.addi     t4, 28
-                  lui        a2, 1047086
-                  c.addi     a4, -28
-                  auipc      s4, 228213
-                  c.or       s1, a5
-                  c.lui      t1, 14
-                  lui        t3, 574314
-                  c.srai     a0, 7
-                  mul        a4, t5, sp
-                  c.lui      s7, 27
-                  c.bnez     a5, 159f
-                  c.lui      a1, 21
-                  lui        a2, 674232
-159:              auipc      a7, 761974
-                  addi       s5, t1, -414
-161:              c.mv       s2, s0
-                  c.slli     s9, 20
-                  c.addi     a5, -18
-                  lui        s3, 185509
-                  mulhu      s10, t4, t0
-                  c.addi     t2, 11
-                  c.addi     s8, -20
-                  c.addi     a5, 20
-                  lui        s0, 374194
-                  addi       s9, a4, -839
-                  c.srai     s1, 28
-                  c.slli     a5, 15
-                  slt        t4, t5, t1
-                  c.addi     a2, -4
-                  mulhu      s11, tp, s3
-                  lui        s8, 1008998
-                  beq        s4, a4, 193f
-                  sra        a2, s9, s10
-                  lui        t5, 582185
-                  mul        t3, tp, a2
-                  auipc      t3, 920837
-                  mulhsu     s6, t0, s6
-                  c.addi     a7, 8
-                  auipc      zero, 1038009
-                  c.addi     a4, -28
-                  lui        s6, 997119
-                  auipc      a3, 779630
-                  auipc      s5, 878993
-                  c.srli     a2, 29
-                  c.addi     t3, -10
-                  c.lui      s3, 15
-                  auipc      a0, 145555
-193:              bgeu       ra, ra, 201f
-                  andi       gp, a2, -494
-                  c.srai     a2, 15
-                  slli       t6, a0, 17
-                  c.mv       s10, t5
-                  c.addi     s2, 9
-                  c.addi     s8, -15
-                  c.addi     t2, -10
-201:              c.slli     a0, 4
-                  c.slli     t2, 1
-                  c.beqz     a0, 217f
-                  c.addi     s5, -2
-                  c.srli     a3, 23
-                  c.addi     s11, -6
-                  sltiu      t3, t6, -45
-                  c.and      s0, a1
-                  auipc      s9, 1557
-                  c.addi     a5, -28
-                  auipc      t4, 5097
-                  auipc      t5, 687856
-                  addi       s6, s9, -678
-                  c.addi     s10, 20
-                  c.srai     a5, 8
-                  blt        gp, s1, 219f
-217:              c.srai     a2, 8
-                  auipc      t6, 157471
-219:              c.addi     a6, -24
-                  c.srai     s1, 9
-                  c.addi     s4, 23
-                  c.addi     s2, 29
-                  auipc      t2, 945652
-                  c.addi     a2, 3
-                  lui        s6, 212122
-                  c.srai     a5, 7
-                  c.addi     t2, 6
-                  bgeu       a0, s11, 230f
-                  c.lui      a4, 30
-230:              c.addi     s3, 8
-                  auipc      s8, 776288
-                  c.addi     t1, -17
-                  auipc      s6, 551060
-                  bltu       tp, s7, 247f
-                  c.addi     a4, -20
-                  lui        zero, 658128
-                  andi       a4, t1, -764
-                  la         a4, data_page_11+2224 #start riscv_load_store_rand_instr_stream_52
-                  lbu        s8, 583(a4)
-                  lb         t5, -2043(a4)
-                  c.addi     t1, -4
-                  c.addi     t5, 18
-                  lbu        t2, -621(a4)
-                  c.addi     s3, -20
-                  lh         t4, 1428(a4)
-                  lh         t5, 1786(a4)
-                  lhu        s3, -2(a4)
-                  c.addi     a2, 12
-                  lb         t1, 1591(a4)
-                  c.or       s1, s1
-                  lw         t5, 328(a4)
-                  fence
-                  lb         s8, 1753(a4)
-                  lui        a7, 361756
-                  sub        s4, t3, a6
-                  lbu        s5, -1997(a4)
-                  slli       t6, s2, 29
-                  lb         s3, -807(a4)
-                  c.srli     a5, 19
-                  lb         s4, -1211(a4)
-                  lbu        s5, 1593(a4)
-                  c.addi     s4, -20
-                  auipc      s4, 972420
-                  lbu        s4, -898(a4)
-                  c.slli     a6, 22
-                  c.lui      s0, 11
-                  c.addi     t2, 30
-                  lbu        s0, 954(a4)
-                  lb         s1, 1479(a4)
-                  lhu        s8, -1530(a4)
-                  rem        t2, a4, s1
-                  lbu        a3, 868(a4)
-                  lb         t6, -1699(a4)
-                  fence.i
-                  c.addi     s11, 27
-                  mulh       s2, t5, a1
-                  rem        t1, t2, s6
-                  sh         s3, -1278(a4)
-                  c.slli     s2, 5
-                  auipc      s10, 96484
-                  xori       s5, s1, 54
-                  lui        t3, 198499
-                  sb         s1, 686(a4)
-                  lb         s6, 1559(a4) #end riscv_load_store_rand_instr_stream_52
-                  c.addi     a5, 13
-                  c.addi     a5, 24
-                  auipc      t1, 544505
-                  c.addi     s3, -29
-                  sra        s7, s9, t3
-                  c.srli     s1, 18
-                  lui        t6, 1021882
-                  c.addi     a0, 21
-                  lui        s9, 581582
-247:              c.srai     s1, 4
-                  lui        s3, 790332
-                  c.slli     t2, 21
-                  c.slli     a2, 3
-                  c.addi     t4, -10
-                  c.addi     a7, 31
-                  c.srai     a3, 17
-                  c.addi     a7, -17
-                  auipc      s0, 269048
-                  c.srli     a4, 5
-                  lui        t1, 602326
-                  lui        a6, 371662
-                  c.addi     t1, -31
-                  lui        gp, 600642
-                  c.lui      a0, 28
-                  c.addi     a4, 31
-                  lui        a5, 311416
-                  c.addi     s9, 21
-                  sltiu      s1, s0, -72
-                  c.lui      t3, 9
-                  c.srai     a5, 28
-                  lui        a5, 853294
-                  c.addi     s3, 3
-                  c.addi     s2, 25
-                  auipc      s5, 494201
-                  c.addi     s5, 16
-                  ori        s1, t2, 252
-                  c.addi     t1, -12
-                  c.addi     s5, -23
-                  c.addi     s5, 4
-                  lui        t3, 830400
-                  c.addi     t4, -27
-                  xor        s4, s5, t0
-                  srli       a6, a6, 3
-                  auipc      a7, 682700
-                  and        s8, zero, s6
-                  andi       a0, s5, 689
-                  c.addi     s1, 9
-                  srai       s11, a6, 4
-                  lui        a5, 535401
-                  c.srai     s0, 3
-                  and        a6, t4, a7
-                  lui        t1, 260102
-                  bgeu       s6, a7, 300f
-                  c.addi     s9, 31
-                  lui        a1, 376678
-                  auipc      s10, 343826
-                  c.lui      gp, 5
-                  lui        a3, 16797
-                  c.addi     s10, 5
-                  auipc      s1, 425800
-                  c.lui      s10, 23
-                  srl        s11, a7, t5
-300:              lui        a7, 985039
-                  lui        a3, 264571
-                  c.addi     s8, -14
-                  bltu       zero, a1, 304f
-304:              c.srli     s0, 4
-                  lui        a0, 694127
-                  lui        t6, 416887
-                  c.addi     gp, 16
-                  c.srai     a3, 8
-                  c.addi     t4, 15
-                  c.lui      t2, 1
-                  c.addi     t6, 5
-                  lui        t3, 449411
-                  c.addi     s0, -27
-                  c.srai     a0, 29
-                  auipc      a6, 638349
-                  c.slli     t2, 3
-                  c.srli     a5, 6
-                  blt        s7, s3, 338f
-                  c.or       s1, a4
-                  c.slli     gp, 5
-                  c.addi     s8, 20
-                  c.addi     a6, -20
-                  c.addi     s8, 4
-                  c.srai     s0, 24
-                  fence
-                  lui        a5, 1046512
-                  c.lui      a3, 8
-                  c.slli     a1, 16
-                  c.addi     t5, 13
-                  c.srai     a0, 7
-                  c.andi     a5, 10
-                  xor        t5, t2, a3
-                  auipc      s0, 689803
-                  lui        t2, 449359
-                  lui        s1, 62087
-                  c.srli     a2, 3
-                  srli       t5, a3, 26
-338:              c.addi     a0, 11
-                  c.add      a3, a5
-                  c.addi     s2, 31
-                  c.addi     s11, -16
-                  auipc      a4, 671584
-                  c.srli     a3, 25
-                  lui        a4, 38256
-                  lui        s9, 349156
-                  bgeu       s7, t6, 366f
-                  c.srai     a5, 4
-                  c.nop
-                  c.addi     a3, -5
-                  c.lui      s1, 16
-                  c.srai     a5, 14
-                  lui        s5, 447102
-                  c.lui      s11, 15
-                  bgeu       s7, ra, j__main_sub_2_2 #branch to jump instr
-                  lui        s4, 109441
-                  c.slli     a1, 11
-                  lui        a4, 43748
-                  c.addi     s3, 21
-                  slti       t1, t4, -304
-j__main_sub_2_2:  jal        ra, sub_2
-                  lui        s8, 775557
-                  beq        gp, s1, 354f
-                  c.add      a2, a0
-                  lui        s0, 680257
-354:              c.addi     a6, 19
-                  c.srai     a1, 13
-                  c.srai     a3, 3
-                  c.srli     a5, 29
-                  c.or       a4, s0
-                  lui        s10, 4729
-                  auipc      s4, 494582
-                  c.addi     s8, 26
-                  c.li       s1, 4
-                  c.lui      s8, 4
-                  c.lui      a7, 13
-                  lui        a0, 691732
-366:              c.addi     t4, -13
-                  c.slli     t1, 4
-                  c.addi     s1, -14
-                  c.srai     a2, 12
-                  auipc      t3, 1025792
-                  c.addi     s0, 21
-                  auipc      a5, 683643
-                  srli       a7, t1, 17
-                  c.xor      a1, a5
-                  and        a3, a0, a7
-                  sra        s6, a3, t3
-                  c.lui      s11, 7
-                  auipc      s9, 950518
-                  c.srai     s0, 10
-                  bltu       s4, s3, 399f
-                  la         s1, data_page_0+1492 #start riscv_load_store_rand_instr_stream_64
-                  fence.i
-                  auipc      t4, 460297
-                  auipc      s5, 418203
-                  lbu        t4, 225(s1)
-                  lbu        s9, 1409(s1)
-                  lb         a3, -791(s1)
-                  lb         a1, 723(s1)
-                  auipc      gp, 845379
-                  sh         s6, -868(s1)
-                  c.addi     a4, -2
-                  lbu        a1, 1939(s1)
-                  lb         t4, -1473(s1)
-                  c.srai     a0, 2
-                  c.addi     a3, 25
-                  c.srai     a3, 17
-                  c.or       a1, a1
-                  lh         zero, 1266(s1)
-                  srl        s9, s1, s4
-                  c.srli     a2, 7
-                  c.srli     a0, 27
-                  c.srli     a0, 18
-                  lh         t4, 1228(s1)
-                  c.srli     a3, 1
-                  lh         s2, -1094(s1)
-                  lhu        s8, -1178(s1)
-                  c.slli     a5, 21
-                  lw         s2, -160(s1)
-                  div        s4, gp, s5
-                  c.addi     s2, -10
-                  lb         s8, -671(s1)
-                  lb         t5, 373(s1)
-                  lbu        s8, 112(s1)
-                  c.srai     a4, 29
-                  sb         t6, 1781(s1)
-                  lhu        a4, 870(s1)
-                  lbu        a3, 863(s1)
-                  lb         s7, -633(s1)
-                  lbu        s2, -1435(s1)
-                  lh         gp, -1020(s1)
-                  c.xor      s0, s0
-                  sb         s7, 1165(s1)
-                  lb         a3, 160(s1)
-                  c.addi     s9, 30
-                  lhu        t2, -1202(s1)
-                  c.slli     s7, 18
-                  remu       t1, s4, a6
-                  sb         t1, -1266(s1)
-                  lb         a1, 547(s1)
-                  c.mv       s3, s7
-                  lb         a0, 1494(s1)
-                  lui        a4, 901233
-                  addi       a1, a3, 532
-                  lbu        a7, -329(s1) #end riscv_load_store_rand_instr_stream_64
-                  bge        s5, t4, 392f
-                  c.addi     s0, -11
-                  c.addi     a6, -22
-                  sltiu      a1, s4, -693
-                  c.lui      s0, 10
-                  auipc      t2, 187959
-                  c.addi     t2, 29
-                  auipc      s9, 197709
-                  c.slli     gp, 10
-                  c.srli     a1, 27
-                  c.addi     a0, -21
-392:              slli       s11, gp, 13
-                  c.addi     t5, -11
-                  c.addi     t5, 10
-                  slti       t2, ra, 716
-                  c.srli     a3, 23
-                  c.addi     t1, -22
-                  lui        t1, 127783
-399:              c.andi     s1, 0
-                  c.srli     s0, 17
-                  c.addi     a1, 12
-                  c.addi     a3, 13
-                  c.srli     a4, 19
-                  c.lui      a0, 1
-                  c.addi     s2, 10
-                  auipc      zero, 1022497
-                  c.li       a4, -14
-                  mulhu      s4, s4, s7
-                  auipc      t3, 563250
-                  c.slli     s5, 16
-                  c.xor      a1, a4
-                  c.addi     s7, -1
-                  lui        a1, 149662
-                  c.lui      s7, 11
-                  slli       s4, tp, 9
-                  c.srli     a1, 1
-                  c.srai     a3, 22
-                  lui        s11, 1032940
-                  c.srai     s0, 11
-                  c.slli     a3, 3
-                  auipc      t4, 1028306
-                  c.srai     a5, 5
-                  lui        a5, 375450
-                  lui        a0, 692917
-                  auipc      a7, 633069
-                  c.slli     s5, 2
-                  auipc      s4, 167821
-                  c.addi     s4, -19
-                  auipc      t5, 944054
-                  bgeu       s7, a1, 444f
-                  andi       t6, t4, -237
-                  c.srai     a5, 10
-                  srai       t4, sp, 21
-                  c.addi     a7, -11
-                  c.srai     a1, 14
-                  c.addi     s10, 27
-                  c.lui      s1, 18
-                  c.srli     a3, 11
-                  auipc      s11, 199200
-                  and        s4, a6, s8
-                  auipc      s2, 107016
-                  c.addi     s0, -19
-                  auipc      s9, 30280
-444:              c.addi     s7, -31
-                  bne        t4, tp, 464f
-                  or         s1, a4, a2
-                  c.lui      s9, 7
-                  c.addi     a7, 11
-                  remu       s11, t4, a2
-                  c.srli     a1, 3
-                  c.srli     a2, 14
-                  c.addi     a6, -1
-                  c.slli     s7, 20
-                  srai       a6, t5, 15
-                  c.srai     a3, 26
-                  c.addi     s11, 6
-                  c.addi     s3, -32
-                  c.nop
-                  mulh       a2, s11, t5
-                  c.addi     t4, 24
-                  c.srai     a4, 31
-                  c.addi     a4, -2
-                  srai       s7, ra, 16
-464:              auipc      t1, 435844
-                  auipc      s10, 100898
-                  c.slli     s0, 16
-                  auipc      a3, 254598
-                  c.addi     s11, 17
-                  c.srai     s0, 4
-                  auipc      t1, 563972
-                  c.addi     a3, 18
-                  div        s6, a7, s10
-                  c.addi     s4, -4
-                  c.srli     a2, 5
-                  c.addi     s9, -22
-                  auipc      s6, 778876
-                  c.addi     a6, -15
-                  c.addi     a5, 10
-                  lui        zero, 263379
-                  c.addi     a5, -29
-                  lui        a3, 29651
-                  lui        a2, 978869
-                  lui        s8, 736912
-                  c.addi     s1, -22
-                  c.addi     gp, -20
-                  c.addi     a1, -4
-                  c.lui      a1, 23
-                  srli       s11, a1, 23
-                  c.addi     a7, 15
-                  lui        a4, 828997
-                  c.slli     t5, 23
-                  c.nop
-                  auipc      a7, 61928
-                  c.srai     a1, 3
-                  c.srai     a0, 14
-                  c.addi     s10, -31
-                  c.srai     s1, 25
-                  c.slli     a4, 15
-                  srai       a4, s3, 10
-                  lui        s6, 604940
-                  c.srli     a5, 7
-                  lui        s11, 490326
-                  lui        t2, 236336
-                  auipc      s7, 193630
-                  c.addi     s8, 28
-                  c.addi     a2, -32
-                  c.addi     t2, -21
-                  c.addi     a6, -17
-                  c.addi     s11, -1
-                  c.lui      s6, 9
-                  c.slli     s5, 4
-                  fence
-                  c.addi     gp, 17
-                  c.addi     a5, 7
-                  c.srai     a2, 12
-                  auipc      a5, 95600
-                  auipc      s7, 325515
-                  auipc      s7, 395439
-                  lui        s3, 17730
-                  c.addi     s9, -9
-                  c.addi     a1, -26
-                  c.addi     a0, -7
-                  auipc      t6, 166548
-                  c.addi     t1, 29
-                  auipc      s8, 557038
-                  c.srai     s1, 5
-                  auipc      a3, 151841
-                  c.addi     t6, 11
-                  c.or       a3, a2
-                  c.addi     a4, 20
-                  c.addi     gp, -14
-                  auipc      gp, 685873
-                  c.addi     a4, 14
-                  c.slli     a5, 8
-                  sll        s11, s6, a3
-                  sll        s1, s7, a5
-                  c.addi     s9, 10
-                  c.lui      s2, 5
-                  c.slli     a4, 31
-                  la         a0, data_page_16+2651 #start riscv_load_store_rand_instr_stream_11
-                  lui        s2, 677975
-                  lbu        s6, 1266(a0)
-                  c.addi     s7, -24
-                  auipc      gp, 893098
-                  lb         s11, 1291(a0)
-                  auipc      a7, 123834
-                  sh         s0, -727(a0)
-                  c.srai     a4, 17
-                  c.addi     t1, 16
-                  c.srai     a5, 12
-                  auipc      s4, 138483
-                  sh         s2, -425(a0)
-                  lbu        t3, -1950(a0)
-                  c.addi     a7, 26
-                  nop
-                  lw         s10, -407(a0)
-                  lhu        t3, 1033(a0)
-                  lb         a7, 604(a0)
-                  c.nop
-                  auipc      s11, 463200
-                  srli       s2, gp, 22
-                  lb         a6, -556(a0)
-                  srl        a6, s7, s8
-                  c.srai     a3, 17
-                  sh         s4, 851(a0)
-                  auipc      t5, 869023
-                  c.addi     a4, 5
-                  c.addi     a5, 12
-                  c.addi     t6, -32
-                  c.addi     s2, 14
-                  lbu        s10, -1862(a0)
-                  srl        a4, zero, zero
-                  slli       s9, t2, 30
-                  lui        t1, 758692
-                  c.addi     a2, -18
-                  lui        a4, 633612
-                  sb         a7, -984(a0) #end riscv_load_store_rand_instr_stream_11
-                  c.and      s1, s0
-                  bltu       a5, s4, 561f
-                  sra        t3, t6, zero
-                  auipc      s4, 73153
-                  c.addi     a5, 21
-                  addi       a3, a3, 69
-                  lui        s3, 550687
-                  c.srai     s1, 4
-                  c.srai     a5, 29
-                  div        t1, a1, s11
-                  c.addi     s5, 30
-                  or         a6, zero, ra
-                  lui        s5, 182884
-                  c.addi     t4, 17
-                  c.addi     a7, -20
-                  c.addi     t2, -1
-                  c.addi     s1, 9
-                  xori       s2, s9, 562
-                  xor        s6, t0, t1
-                  auipc      a0, 429914
-                  rem        s10, zero, a6
-561:              bltu       s6, s7, 563f
-                  div        t6, s11, s11
-563:              c.addi     s11, -25
-                  nop
-                  c.addi     t6, 18
-                  c.addi     s3, 13
-                  c.addi     gp, 8
-                  c.srai     a2, 10
-                  lui        a3, 446328
-                  c.srai     a1, 7
-                  c.addi     t4, 2
-                  c.srli     a4, 13
-                  c.addi     s7, 15
-                  slt        t1, a5, s4
-                  c.lui      s2, 3
-                  c.srai     a0, 12
-                  c.lui      s1, 13
-                  c.addi     s3, 4
-                  c.srai     a0, 22
-                  c.addi     s4, -20
-                  c.addi     s2, 11
-                  c.slli     a7, 27
-                  auipc      a5, 212688
-                  c.addi     s5, 4
-                  c.srai     a4, 2
-                  c.srai     a3, 27
-                  c.slli     a7, 25
-                  beq        sp, gp, 600f
-                  c.or       a1, a4
-                  c.addi     s0, 26
-                  auipc      s10, 258803
-                  c.lui      a2, 4
-                  c.srli     s1, 10
-                  c.srli     s0, 16
-                  c.slli     a1, 18
-                  c.sub      s0, a4
-                  c.addi     s10, 15
-                  lui        a3, 417118
-                  auipc      a7, 914260
-600:              auipc      s0, 682039
-                  c.addi     s7, 27
-                  lui        s2, 889859
-                  c.slli     a2, 19
-                  sltiu      s6, t1, -21
-                  c.addi     t1, 5
-                  c.addi     s7, -29
-                  c.srli     a2, 9
-                  c.addi     s4, 12
-                  xori       a6, s5, 146
-                  c.srai     a3, 10
-                  auipc      s6, 422956
-                  c.addi     s4, 22
-                  c.addi     s0, 12
-                  c.srli     a3, 24
-                  auipc      t5, 244872
-                  c.lui      s8, 13
-                  c.lui      s8, 30
-                  c.addi     s5, -27
-                  fence.i
-                  lui        a3, 994628
-                  c.addi     t6, -2
-                  c.slli     s2, 14
-                  c.beqz     a3, 637f
-                  auipc      gp, 128473
-                  auipc      a1, 437860
-                  lui        s5, 229811
-                  c.addi     s9, -6
-                  c.addi     s3, 3
-                  auipc      s6, 243702
-                  auipc      s6, 884541
-                  c.addi     a3, -31
-                  auipc      a6, 820980
-                  c.mv       a3, t1
-                  c.srli     s0, 8
-                  c.addi     s10, -13
-                  auipc      zero, 207844
-637:              c.srai     s0, 23
-                  auipc      s0, 668958
-                  c.addi     a2, -9
-                  c.srai     s1, 28
-                  ori        a2, a6, -807
-                  bltu       a6, zero, 656f
-                  slti       a2, t2, -769
-                  auipc      a2, 891048
-                  c.addi     s0, 4
-                  c.slli     a7, 11
-                  srai       s4, s0, 19
-                  c.andi     a0, 14
-                  c.slli     s8, 25
-                  c.andi     s0, -15
-                  auipc      t4, 219980
-                  c.addi     t2, 21
-                  sra        s2, s5, a6
-                  c.slli     s2, 26
-                  auipc      t4, 264867
-656:              lui        a1, 690306
-                  c.slli     gp, 9
-                  c.srai     a1, 18
-                  c.slli     s4, 20
-                  mulh       zero, a1, s3
-                  blt        s6, s4, 679f
-                  auipc      s4, 1046395
-                  lui        s8, 880860
-                  c.lui      a7, 7
-                  c.slli     t1, 3
-                  c.addi     a0, -28
-                  c.addi     a0, 4
-                  c.slli     t5, 25
-                  lui        a2, 384207
-                  c.lui      a7, 4
-                  fence
-                  add        zero, s0, gp
-                  srli       gp, a6, 24
-                  lui        a4, 54286
-                  beq        s4, a3, 678f
-                  divu       s7, a7, a3
-                  c.addi     a5, -26
-678:              c.lui      s1, 8
-679:              blt        s0, t0, 688f
-                  c.addi     s0, -22
-                  c.slli     t4, 7
-                  c.slli     t1, 19
-                  srli       s11, a0, 1
-                  lui        a5, 236700
-                  sltu       s1, a7, s8
-                  c.slli     s1, 7
-                  auipc      s8, 932021
-688:              c.addi     s5, 15
-                  c.srli     a2, 26
-                  lui        s8, 877764
-                  c.srli     a0, 14
-                  c.lui      s7, 9
-                  c.srai     s0, 15
-                  bge        sp, a6, 709f
-                  c.addi     a0, -17
-                  rem        s2, t3, s7
-                  c.addi     s9, -24
-                  c.srli     s1, 18
-                  lui        s5, 678544
-                  c.addi     a3, -6
-                  lui        zero, 526443
-                  lui        s5, 163422
-                  c.addi     s0, 28
-                  add        a7, s0, a0
-                  auipc      zero, 298302
-                  lui        s0, 922806
-                  div        s0, ra, a7
-                  c.slli     a1, 6
-709:              c.and      a0, a2
-                  auipc      a7, 329824
-                  c.addi     a4, 26
-                  c.srai     s0, 1
-                  auipc      a5, 956672
-                  auipc      t5, 543404
-                  mulh       a0, t6, t5
-                  auipc      a4, 1037276
-                  lui        a3, 682997
-                  c.addi     s10, -17
-                  mul        t1, a1, s6
-                  auipc      zero, 465779
-                  c.addi     a4, 6
-                  nop
-                  c.addi     t1, 31
-                  c.addi     s4, 9
-                  c.slli     a7, 1
-                  auipc      s4, 389515
-                  auipc      zero, 831625
-                  auipc      gp, 95212
-                  auipc      zero, 860212
-                  mulhu      a3, s8, s2
-                  auipc      s0, 812022
-                  c.addi     a6, -27
-                  lui        a1, 63596
-                  c.srli     a0, 3
-                  auipc      t4, 99309
-                  lui        a5, 38321
-                  c.addi     s5, 7
-                  c.slli     t6, 3
-                  lui        s9, 278381
-                  c.srai     s0, 14
-                  srl        s7, t2, s3
-                  auipc      a5, 780951
-                  c.lui      t1, 21
-                  lui        gp, 221602
-                  c.slli     s6, 14
-                  c.nop
-                  auipc      t5, 415099
-                  c.slli     gp, 29
-                  bltu       tp, t0, j__main_sub_1_1 #branch to jump instr
-                  c.srai     s1, 24
-                  c.slli     gp, 6
-j__main_sub_1_1:  jal        ra, sub_1
-                  c.addi     s8, 7
-                  c.srai     s0, 4
-                  c.srli     a5, 15
-                  auipc      t4, 634659
-                  sub        s6, s3, sp
-                  lui        a7, 762190
-                  xori       s9, t2, 256
-                  srli       a7, s2, 15
-                  lui        s8, 237823
-                  c.beqz     a4, 757f
-                  c.addi     a7, -10
-                  sub        s9, s9, s1
-                  blt        a6, s0, 775f
-                  c.srai     a5, 5
-757:              lui        a1, 944155
-                  c.addi     a7, -12
-                  c.addi     s7, -14
-                  c.addi     t6, 21
-                  nop
-                  c.addi     s8, 24
-                  c.addi     t2, -25
-                  c.addi     s7, -8
-                  c.lui      gp, 8
-                  c.addi     t2, -13
-                  mul        s6, a4, s2
-                  c.lui      a2, 8
-                  addi       t3, a5, -87
-                  sll        a2, a5, s5
-                  beq        t0, s4, 785f
-                  c.addi     gp, -21
-                  lui        a2, 61344
-                  mulh       s4, a5, s3
-775:              c.addi     s1, 26
-                  c.and      a0, a0
-                  auipc      a0, 687384
-                  c.addi     t5, -32
-                  c.srai     a1, 20
-                  c.beqz     s0, 792f
-                  c.addi     s4, -10
-                  c.addi     s5, -23
-                  c.mv       t4, s6
-                  c.addi     a5, -11
-785:              srli       s1, a3, 8
-                  c.addi     s7, -26
-                  c.addi     t6, -17
-                  c.addi     s0, 13
-                  lui        t5, 974165
-                  c.add      a4, a1
-                  slt        t1, t0, ra
-792:              c.addi     s7, -6
-                  auipc      s4, 235522
-                  lui        s9, 920086
-                  lui        a7, 225536
-                  c.srai     a3, 15
-                  c.addi     a6, -10
-                  auipc      zero, 32660
-                  lui        s9, 239905
-                  c.srai     a5, 5
-                  c.addi     a4, 14
-                  mulhu      t2, t5, a2
-                  c.slli     s11, 11
-                  mulh       a7, a3, a3
-                  auipc      s9, 682405
-                  auipc      s1, 749015
-                  mulhu      s2, a3, a4
-                  c.addi     s11, 24
-                  c.slli     t2, 9
-                  auipc      s2, 103002
-                  c.mv       a1, t2
-                  mulhsu     s1, a0, sp
-                  lui        zero, 330455
-                  c.addi     a3, 22
-                  c.srai     a2, 17
-                  or         s5, s6, s2
-                  c.addi     t5, -28
-                  lui        t1, 186801
-                  xor        t3, t6, s5
-                  c.srli     a5, 23
-                  c.slli     t2, 31
-                  c.srai     a0, 7
-                  c.lui      gp, 12
-                  bne        t3, a0, 832f
-                  c.srai     a4, 3
-                  c.srli     a1, 23
-                  auipc      s10, 268917
-                  auipc      t5, 673960
-                  c.srai     a0, 29
-                  c.srli     a4, 17
-                  c.srli     a4, 10
-832:              c.srai     s1, 11
-                  c.slli     s5, 11
-                  slti       s10, s8, 715
-                  c.addi     s9, -28
-                  c.addi     t5, -18
-                  c.addi     a7, 24
-                  lui        t4, 677639
-                  auipc      gp, 486315
-                  c.bnez     a2, 846f
-                  lui        a2, 604350
-                  c.addi     s7, -12
-                  c.lui      s11, 21
-                  c.addi     t1, -19
-                  sra        s11, a5, t5
-846:              c.srli     a4, 17
-                  c.lui      a3, 19
-                  c.addi     t1, -18
-                  c.addi     a2, 28
-                  c.slli     s5, 11
-                  auipc      s10, 66254
-                  auipc      zero, 361722
-                  c.addi     a4, 25
-                  c.addi     a5, -25
-                  bne        a1, a2, 865f
-                  auipc      s8, 675017
-                  c.addi     a2, 24
-                  fence
-                  c.addi     a0, -29
-                  c.addi     a4, -3
-                  slli       zero, t1, 17
-                  lui        zero, 638282
-                  c.or       a1, a3
-                  lui        a0, 967671
-865:              lui        s3, 141214
-                  c.lui      t6, 3
-                  c.srli     a3, 24
-                  c.addi     s8, 17
-                  c.nop
-                  c.addi     s11, -5
-                  lui        a4, 263199
-                  c.srli     a0, 9
-                  c.nop
-                  c.srai     s0, 8
-                  c.srli     a2, 18
-                  c.slli     s9, 8
-                  srli       t5, a0, 2
-                  c.slli     s11, 8
-                  c.addi     t6, -4
-                  auipc      zero, 188225
-                  c.addi     t5, -10
-                  div        s10, ra, t4
-                  c.srai     a0, 7
-                  c.addi     s8, 17
-                  srai       t3, sp, 14
-                  c.addi     t4, 2
-                  c.addi     a1, 30
-                  lui        t3, 259752
-                  lui        s1, 139287
-                  lui        t4, 950285
-                  lui        s6, 825854
-                  auipc      s0, 702119
-                  c.addi     s4, -12
-                  lui        a1, 236741
-                  slti       zero, t2, 363
-                  c.addi     s11, -23
-                  c.srli     a3, 28
-                  c.slli     s8, 8
-                  c.srai     a5, 5
-                  c.addi     t3, 12
-                  c.lui      s0, 6
-                  c.slli     t1, 21
-                  sra        s0, zero, s4
-                  c.addi     t2, 18
-                  c.slli     s5, 11
-                  lui        a7, 719474
-                  c.lui      t4, 25
-                  c.srai     a2, 8
-                  auipc      a0, 755032
-                  lui        t3, 676474
-                  c.srai     a4, 9
-                  c.srli     a5, 7
-                  auipc      s11, 447190
-                  lui        t2, 1787
-                  c.srli     a0, 25
-                  c.addi     s2, -21
-                  auipc      s10, 511423
-                  c.lui      a2, 4
-                  c.xor      a3, a0
-                  c.addi     t1, 22
-                  slti       s11, t0, -210
-                  blt        t3, s7, 939f
-                  auipc      s1, 794184
-                  lui        zero, 741657
-                  c.srai     a5, 10
-                  c.srli     a0, 18
-                  c.srli     a1, 7
-                  bne        t1, a2, 933f
-                  c.addi     gp, 22
-                  c.addi     s9, 29
-                  lui        t4, 466063
-                  c.srli     a1, 29
-933:              c.slli     s8, 18
-                  c.lui      a7, 31
-                  divu       a5, a4, a5
-                  c.addi     s1, 4
-                  c.slli     s6, 2
-                  c.addi     s11, 24
-939:              c.addi     gp, 4
-                  c.addi     a4, -23
-                  c.addi     t3, 14
-                  c.addi     s6, 9
-                  c.and      a3, a3
-                  and        a3, a5, s3
-                  c.lui      t5, 15
-                  c.addi     s9, 31
-                  c.slli     s6, 1
-                  c.srai     a5, 21
-                  auipc      s11, 896169
-                  c.addi     s1, 24
-                  c.slli     s4, 18
-                  lui        t2, 492633
-                  mulhu      a5, sp, s7
-                  c.srli     a1, 26
-                  c.lui      t3, 9
-                  lui        t5, 694853
-                  auipc      s0, 446961
-                  c.nop
-                  c.lui      s4, 8
-                  c.srli     a2, 16
-                  c.addi     s7, -23
-                  c.addi     s1, 22
-                  c.slli     t4, 28
-                  slli       s1, tp, 3
-                  c.slli     s11, 12
-                  c.srli     a0, 8
-                  c.addi     t3, 6
-                  srai       s7, s5, 12
-                  c.addi     a7, -5
-                  c.lui      s9, 1
-                  srl        s10, t4, s4
-                  c.addi     s5, -22
-                  lui        s6, 165197
-                  lui        s8, 808861
-                  lui        s9, 447092
-                  sltu       t5, zero, zero
-                  c.lui      t5, 4
-                  c.or       a0, s0
-                  c.xor      a1, a0
-                  auipc      s6, 1024152
-                  c.slli     s4, 9
-                  auipc      t2, 207620
-                  c.lui      t5, 11
-                  c.beqz     a5, 988f
-                  la         s11, data_page_1+2630 #start riscv_load_store_rand_instr_stream_4
-                  sb         t3, 269(s11)
-                  c.srai     a1, 17
-                  sb         t3, -1121(s11)
-                  lbu        a7, 323(s11)
-                  lbu        a0, -207(s11)
-                  lbu        s7, -1223(s11)
-                  lui        t4, 261232
-                  lb         a3, -1241(s11)
-                  lb         a1, -1546(s11)
-                  c.addi     s2, -17
-                  sltu       s10, s7, a5
-                  sh         a1, -864(s11)
-                  sb         s2, 672(s11)
-                  sb         s3, 1241(s11)
-                  sb         gp, -1245(s11)
-                  lbu        t2, -1179(s11)
-                  lbu        s7, 1107(s11)
-                  slt        gp, t3, s0
-                  lbu        a6, -1658(s11)
-                  lh         s7, 1182(s11)
-                  c.add      a3, s0
-                  c.addi     s3, 1
-                  c.slli     s3, 3
-                  c.srli     a5, 31
-                  lbu        t3, 33(s11)
-                  lui        a5, 483618
-                  c.addi     a6, 23
-                  c.andi     a1, -3
-                  nop
-                  auipc      a5, 507618
-                  c.srli     a4, 24
-                  sw         a7, 1026(s11)
-                  c.slli     t2, 11
-                  lw         a2, -206(s11)
-                  c.addi     t4, -8
-                  lbu        s7, 1025(s11)
-                  sb         s8, 1309(s11)
-                  c.addi     s2, 23
-                  lb         a3, -793(s11)
-                  sb         t1, -1806(s11)
-                  lb         t3, -1075(s11)
-                  sb         s5, -1091(s11)
-                  sb         a6, 1417(s11)
-                  sb         t6, -1125(s11)
-                  lbu        a7, -488(s11) #end riscv_load_store_rand_instr_stream_4
-                  c.srli     s0, 26
-                  c.addi     s2, -6
-                  c.addi     s10, -19
-988:              c.beqz     s0, 999f
-                  auipc      s6, 413318
-                  c.lui      t6, 15
-                  c.addi     s5, -16
-                  c.lui      s11, 1
-                  lui        s9, 279039
-                  sltiu      t4, a2, -410
-                  c.addi     s10, 15
-                  lui        a6, 6368
-                  auipc      a1, 1006566
-                  fence
-999:              slt        t6, t5, a4
-                  c.addi     a3, 5
-                  beq        t4, t6, 1016f
-                  rem        a7, t1, t2
-                  lui        a2, 99607
-                  c.slli     s0, 8
-                  c.slli     s11, 12
-                  c.addi     a6, -24
-                  la         s11, data_page_5+1543 #start riscv_load_store_rand_instr_stream_7
-                  c.srli     a2, 27
-                  lbu        s1, 1577(s11)
-                  lhu        s8, -811(s11)
-                  lbu        t1, 530(s11)
-                  c.srli     s1, 25
-                  lb         a7, 1709(s11)
-                  c.lui      s0, 4
-                  lbu        s7, 1788(s11)
-                  c.lui      s9, 27
-                  sb         a0, 140(s11)
-                  lb         t3, -1528(s11)
-                  lbu        s9, 1722(s11)
-                  lhu        s3, 1435(s11)
-                  sb         sp, -428(s11)
-                  sb         ra, 408(s11)
-                  sra        s5, t5, t5
-                  sb         s9, 118(s11)
-                  sb         t1, -1417(s11)
-                  auipc      s10, 207075
-                  c.srli     a0, 19
-                  lui        s10, 96014
-                  c.srli     s1, 19
-                  c.addi     s8, -30
-                  lh         a7, -1063(s11)
-                  nop
-                  mulh       t6, zero, t5
-                  sh         t1, 2009(s11)
-                  sb         s8, -740(s11)
-                  lbu        s2, 596(s11)
-                  sb         t3, 640(s11)
-                  lb         s7, 675(s11)
-                  lh         s4, 863(s11)
-                  lbu        s2, 28(s11)
-                  lhu        t2, -521(s11)
-                  sb         s6, -558(s11)
-                  c.or       s0, a3
-                  lhu        s1, 1983(s11)
-                  lb         a7, 1213(s11)
-                  sh         a0, 1313(s11)
-                  lb         a6, -778(s11) #end riscv_load_store_rand_instr_stream_7
-                  lui        s8, 790887
-                  c.lui      a5, 9
-                  c.addi     s11, -9
-                  c.nop
-                  c.addi     s9, 10
-                  c.addi     s11, -30
-                  beq        s7, t5, 1019f
-                  c.srli     s0, 16
-                  c.slli     t1, 24
-1016:             c.srai     a5, 7
-                  lui        a0, 331489
-                  c.lui      a1, 20
-1019:             ori        s8, s11, -589
-                  c.srli     a1, 24
-                  c.addi     a1, -6
-                  c.srli     a2, 1
-                  fence.i
-                  c.slli     t3, 30
-                  auipc      a1, 683881
-                  auipc      t4, 119934
-                  c.addi     a6, -8
-                  c.srai     a5, 10
-                  c.lui      t2, 22
-                  or         gp, t4, a1
-                  c.addi     a2, 6
-                  c.slli     s5, 9
-                  c.addi     s8, -14
-                  slti       s10, t2, -728
-                  auipc      s5, 866547
-                  lui        a6, 120865
-                  c.addi     s3, -22
-                  c.srai     s1, 11
-                  lui        a5, 42815
-                  c.addi     a5, -28
-                  auipc      s9, 1011478
-                  auipc      a7, 441599
-                  div        s7, s3, t2
-                  la         s2, data_page_1+1724 #start riscv_load_store_rand_instr_stream_20
-                  c.addi     s1, 15
-                  sb         t5, -645(s2)
-                  sh         t5, 282(s2)
-                  c.addi     t3, 30
-                  sb         t5, -1653(s2)
-                  lbu        a6, -469(s2)
-                  c.lui      s0, 23
-                  sb         t2, 1893(s2)
-                  lbu        a1, 556(s2)
-                  c.addi     s4, -16
-                  sh         s10, -1342(s2)
-                  c.xor      a4, s1
-                  sb         s7, -1562(s2)
-                  auipc      t6, 708188
-                  sw         s6, -148(s2)
-                  c.addi     t6, 22
-                  lui        t2, 348584
-                  or         s0, zero, s2
-                  lbu        t5, 85(s2)
-                  c.srai     a4, 29
-                  lb         a1, 1610(s2)
-                  c.add      a5, a5
-                  lui        t6, 1041524
-                  slli       zero, t2, 23
-                  sb         t5, 73(s2)
-                  sh         t6, -306(s2)
-                  c.srli     a1, 4
-                  mul        a4, ra, s5
-                  sb         a2, 388(s2)
-                  auipc      a6, 913922
-                  c.lui      gp, 28
-                  lui        s9, 962267
-                  auipc      s1, 996200
-                  lbu        s9, -59(s2) #end riscv_load_store_rand_instr_stream_20
-                  c.addi     s0, -19
-                  auipc      a4, 222235
-                  addi       s6, t4, 1017
-                  lui        s9, 702747
-                  c.slli     t5, 27
-                  c.addi     s8, 11
-                  c.addi     a3, -11
-                  sra        t4, t5, a3
-                  c.srai     a5, 8
-                  c.addi     s11, -4
-                  c.slli     a3, 6
-                  c.addi     s6, 5
-                  c.srai     a2, 31
-                  lui        s7, 671113
-                  auipc      gp, 704043
-                  lui        a2, 368874
-                  c.addi     s3, 23
-                  auipc      a6, 330102
-                  c.addi     t5, -3
-                  c.srai     a2, 19
-                  c.lui      t5, 1
-                  c.addi     s0, -28
-                  c.add      s1, a2
-                  lui        s11, 455321
-                  c.beqz     a1, 1069f
-1069:             c.addi     t4, 29
-                  sltiu      s8, s10, 1015
-                  c.addi     s9, 12
-                  auipc      t5, 804000
-                  bltu       s0, s0, 1075f
-                  c.srli     a1, 8
-1075:             c.lui      s0, 25
-                  c.addi     s3, -3
-                  auipc      s8, 652640
-                  c.beqz     s1, 1087f
-                  c.srai     a4, 5
-                  c.slli     s7, 18
-                  lui        s8, 795346
-                  lui        a3, 693738
-                  lui        s0, 166776
-                  c.srli     a2, 19
-                  c.lui      s3, 24
-                  c.srai     s1, 3
-1087:             andi       zero, a5, -399
-                  lui        s11, 367858
-                  bgeu       t5, a6, 1108f
-                  c.slli     t5, 15
-                  c.srai     s0, 10
-                  lui        s3, 784594
-                  c.slli     s1, 11
-                  c.slli     a0, 18
-                  c.bnez     a3, 1112f
-                  auipc      s10, 681744
-                  lui        a6, 641348
-                  or         s10, t4, tp
-                  sra        a7, ra, s5
-                  sub        s6, a2, s2
-                  c.addi     s6, 17
-                  c.srai     s0, 13
-                  auipc      a5, 462929
-                  c.srai     a2, 12
-                  lui        s7, 1043471
-                  c.add      a3, a0
-                  c.slli     s4, 14
-1108:             c.srli     a3, 22
-                  c.srli     a5, 31
-                  c.srai     s1, 30
-                  lui        s8, 520317
-1112:             srli       a7, s11, 6
-                  c.addi     s7, -7
-                  c.addi     s11, 23
-                  lui        s6, 907921
-                  c.sub      a4, s0
-                  lui        a1, 1013181
-                  c.addi     a0, -23
-                  c.addi     t6, -8
-                  auipc      t1, 937048
-                  c.addi     s6, -31
-                  c.addi     t5, -10
-                  lui        a7, 64308
-                  sltu       s4, a1, s1
-                  c.addi     s2, 20
-                  auipc      s7, 803028
-                  c.addi     s2, 4
-                  c.slli     a6, 25
-                  and        gp, a5, a2
-                  lui        s9, 101155
-                  c.addi     s10, 20
-                  auipc      a1, 871498
-                  c.slli     a5, 26
-                  or         a1, s11, gp
-                  c.srai     s0, 19
-                  c.srai     a0, 14
-                  c.li       s5, 17
-                  c.addi     s6, -20
-                  srai       t5, s9, 3
-                  c.addi     s2, 28
-                  auipc      s9, 839827
-                  lui        s9, 938338
-                  c.addi     a7, -3
-                  c.lui      t5, 13
-                  c.addi     s1, -15
-                  fence.i
-                  c.srai     s1, 26
-                  lui        t5, 801837
-                  c.addi     a6, 15
-                  c.slli     t5, 19
-                  c.srai     a4, 26
-                  fence
-                  c.addi     s11, 11
-                  c.addi     t6, 8
-                  lui        gp, 614888
-                  c.addi     s11, 9
-                  c.slli     t1, 21
-                  lui        a6, 458400
-                  c.addi     t2, 5
-                  c.bnez     a5, 1166f
-                  c.addi     gp, 25
-                  c.sub      a3, a4
-                  c.addi     s7, 19
-                  c.addi     a5, -8
-                  xori       a5, t3, -60
-1166:             c.srai     a4, 15
-                  c.and      a3, a4
-                  lui        t1, 378074
-                  auipc      s5, 759562
-                  auipc      s1, 134935
-                  c.srli     a3, 23
-                  c.xor      a5, a5
-                  nop
-                  ori        s4, s8, -172
-                  c.addi     s2, 17
-                  lui        t5, 836223
-                  auipc      s11, 931116
-                  lui        a4, 800192
-                  c.srai     s1, 1
-                  lui        s6, 464928
-                  c.addi     a2, -4
-                  c.addi     a6, 28
-                  c.srai     a2, 19
-                  c.addi     s2, -7
-                  c.addi     s8, 28
-                  lui        s5, 836100
-                  c.addi     a5, -23
-                  beq        a4, s1, 1205f
-                  lui        t6, 728693
-                  c.addi     s5, 16
-                  srli       a3, t6, 5
-                  auipc      a5, 332743
-                  c.lui      s8, 23
-                  c.slli     s6, 5
-                  c.addi     gp, -13
-                  ori        t1, a2, -508
-                  c.slli     s7, 31
-                  lui        t1, 8942
-                  la         s8, data_page_13+2421 #start riscv_load_store_rand_instr_stream_14
-                  c.addi     a4, 2
-                  lb         s3, -799(s8)
-                  sb         a2, -1278(s8)
-                  c.lui      a2, 11
-                  c.srai     a0, 29
-                  lui        t6, 695772
-                  addi       a1, a7, 928
-                  auipc      t2, 91169
-                  c.addi     gp, -9
-                  lbu        t4, -1367(s8)
-                  mul        a6, t0, a2
-                  c.addi     a4, -16
-                  lui        s6, 728944
-                  sb         a2, 1643(s8)
-                  lui        s10, 984077
-                  nop
-                  lb         s0, 221(s8)
-                  lui        gp, 622819
-                  slli       a4, s0, 31
-                  lbu        s6, 186(s8)
-                  lh         zero, 301(s8)
-                  sra        s11, zero, gp
-                  c.lui      s9, 20
-                  sb         s1, 79(s8)
-                  xor        t5, s4, s3
-                  sra        a2, t2, a0
-                  sb         a5, 694(s8)
-                  lb         s3, -57(s8)
-                  lui        a5, 931897
-                  c.addi     t6, -29
-                  divu       s10, s2, a2
-                  c.addi     a3, 10
-                  c.addi     a4, 6
-                  lb         s2, 607(s8) #end riscv_load_store_rand_instr_stream_14
-                  div        s8, s11, zero
-                  mulh       a1, zero, gp
-                  c.lui      a0, 9
-                  c.slli     t5, 20
-                  c.slli     s3, 15
-                  c.slli     s4, 7
-1205:             and        s9, t1, a4
-                  c.lui      a1, 6
-                  auipc      t2, 1034334
-                  c.sub      s0, a2
-                  c.addi     a7, -18
-                  sra        s5, s7, a0
-                  c.addi     s8, 6
-                  c.addi     a3, -8
-                  c.srli     a3, 28
-                  c.addi     t1, 7
-                  c.addi     s4, -29
-                  c.addi     t6, 16
-                  auipc      s10, 525781
-                  auipc      t3, 1018180
-                  auipc      s6, 895265
-                  auipc      s1, 60492
-                  and        s3, ra, a4
-                  c.slli     s9, 20
-                  c.lui      t2, 2
-                  c.srai     a4, 23
-                  c.addi     a2, -4
-                  slli       t2, s0, 6
-                  c.addi     t2, 9
-                  c.lui      s3, 10
-                  auipc      a5, 300851
-                  c.lui      a4, 8
-                  c.addi     s7, -1
-                  c.addi     s11, -3
-                  c.srai     a1, 30
-                  c.srli     s0, 3
-                  c.srli     s0, 7
-                  c.srai     a5, 27
-                  c.addi     t6, -22
-                  la         s11, data_page_0+1771 #start riscv_load_store_rand_instr_stream_30
-                  lb         s2, -461(s11)
-                  c.lui      s7, 23
-                  lh         s10, 523(s11)
-                  lbu        s8, 288(s11)
-                  lw         s3, -187(s11)
-                  lhu        s1, 1063(s11)
-                  c.slli     a2, 7
-                  lb         s1, -270(s11)
-                  lh         s7, -7(s11)
-                  lb         t3, 1190(s11)
-                  lbu        t1, 1782(s11)
-                  c.addi     t1, 7
-                  lbu        s4, 693(s11)
-                  c.slli     a4, 26
-                  c.addi     a0, 23
-                  c.xor      s0, a0
-                  auipc      a6, 317523
-                  lb         s6, -1450(s11)
-                  andi       gp, s6, -613
-                  sb         s4, 1970(s11)
-                  c.srli     a2, 24
-                  lbu        a6, -734(s11)
-                  auipc      s4, 276395
-                  sra        s6, a1, a5
-                  sw         tp, -1231(s11)
-                  lh         a4, 1347(s11)
-                  lbu        a3, -907(s11)
-                  sb         t5, 1263(s11)
-                  lb         t6, -1355(s11)
-                  sb         t6, 1429(s11)
-                  sb         t2, 1749(s11)
-                  c.addi     a2, 21
-                  lhu        a0, 1523(s11)
-                  c.addi     s7, 22
-                  c.slli     gp, 14
-                  lhu        a7, -825(s11)
-                  lh         t4, 1491(s11)
-                  sltu       t1, a7, s7
-                  c.addi     s0, -2
-                  c.li       a2, -23
-                  sb         s10, -1102(s11)
-                  c.srai     a0, 8
-                  lbu        s9, 1654(s11)
-                  sb         s0, 272(s11)
-                  lbu        s9, 1292(s11) #end riscv_load_store_rand_instr_stream_30
-                  auipc      a6, 848854
-                  lui        s3, 472616
-                  c.addi     s8, 10
-                  c.lui      a3, 3
-                  lui        s1, 849718
-                  c.srai     a4, 9
-                  c.addi     t5, -31
-                  divu       s7, s3, zero
-                  c.srli     a3, 24
-                  c.slli     t1, 25
-                  auipc      s9, 72748
-                  or         s9, ra, s2
-                  c.addi     t5, 21
-                  lui        a2, 987006
-                  c.addi     a7, -5
-                  c.addi     s9, -5
-                  div        a1, zero, s4
-                  divu       a6, s0, a3
-                  auipc      a4, 68096
-                  bgeu       s7, t5, 1276f
-                  sltiu      s0, a2, -974
-                  c.srai     a4, 9
-                  c.addi     a2, -27
-                  lui        a1, 86752
-                  c.addi     s1, 25
-                  c.slli     a2, 26
-                  lui        gp, 548602
-                  c.srai     a3, 10
-                  c.bnez     a3, 1270f
-                  c.mv       t2, a3
-                  c.lui      t1, 8
-                  c.addi     s5, -5
-1270:             add        a3, sp, a0
-                  lui        s0, 842855
-                  c.srai     s1, 22
-                  lui        a0, 986239
-                  c.li       s8, -7
-                  lui        t4, 844279
-1276:             mul        s11, gp, s3
-                  c.addi     t4, 4
-                  fence.i
-                  auipc      a3, 680069
-                  c.lui      s10, 8
-                  auipc      t1, 486570
-                  c.addi     t2, 22
-                  c.addi     s7, 20
-                  lui        a7, 399143
-                  lui        s9, 115047
-                  auipc      s8, 164519
-                  c.slli     s11, 12
-                  c.addi     s4, 18
-                  bgeu       a5, s5, 1306f
-                  auipc      s11, 939445
-                  c.lui      a2, 20
-                  c.nop
-                  c.srli     a3, 11
-                  c.slli     s3, 7
-                  c.beqz     a1, 1304f
-                  bltu       s8, s5, 1298f
-                  c.srli     s0, 13
-1298:             c.and      a2, s1
-                  c.lui      a5, 12
-                  mul        s1, t5, a5
-                  c.srli     s0, 26
-                  c.addi     a7, -6
-                  c.slli     s0, 27
-1304:             auipc      s9, 44757
-                  c.srli     a1, 6
-1306:             c.sub      a1, a1
-                  c.lui      gp, 12
-                  and        t3, gp, s11
-                  xori       a5, s5, -955
-                  c.lui      a1, 20
-                  c.xor      a4, a5
-                  auipc      a5, 935577
-                  c.addi     s9, -10
-                  fence.i
-                  xor        s3, tp, sp
-                  srl        s4, t3, s2
-                  c.slli     gp, 29
-                  c.srai     s1, 31
-                  bge        s0, t1, 1329f
-                  c.addi     t4, -29
-                  c.nop
-                  c.addi     s2, 17
-                  la         a0, data_page_12+1825 #start riscv_load_store_rand_instr_stream_62
-                  sh         t4, -723(a0)
-                  lbu        s11, 1892(a0)
-                  lh         s2, 443(a0)
-                  lbu        t4, 357(a0)
-                  xori       s8, s3, 339
-                  auipc      s0, 434421
-                  lbu        gp, -1063(a0)
-                  sh         s9, -1611(a0)
-                  andi       a1, s0, 244
-                  mul        a5, sp, a5
-                  c.slli     s8, 5
-                  lb         t3, 402(a0)
-                  auipc      s2, 779977
-                  lb         a4, 189(a0)
-                  lui        s0, 1007077
-                  c.addi     s6, 3
-                  sb         s3, -455(a0)
-                  c.addi     t2, -7
-                  c.addi     s0, -21
-                  lhu        s3, -1435(a0)
-                  auipc      t2, 1041398
-                  auipc      gp, 757890
-                  lbu        a1, -380(a0)
-                  lb         s0, 1456(a0)
-                  lbu        s1, -215(a0)
-                  c.slli     a6, 27
-                  c.lui      a3, 5
-                  sb         t6, 1604(a0)
-                  lbu        s8, -973(a0)
-                  sb         t1, 717(a0)
-                  c.addi     gp, 16
-                  mulhsu     a6, a6, s4
-                  sb         ra, 305(a0)
-                  lb         s10, 156(a0)
-                  c.lui      s3, 5
-                  c.srai     a3, 8
-                  c.lui      t1, 22
-                  lh         s11, -821(a0) #end riscv_load_store_rand_instr_stream_62
-                  auipc      a3, 1029053
-                  c.addi     s7, -5
-                  auipc      s4, 1005310
-                  c.addi     t1, -26
-                  c.lui      t5, 5
-                  lui        a4, 21081
-1329:             c.lui      s7, 22
-                  c.addi     a6, 13
-                  c.addi     s6, 3
-                  c.addi     s7, -11
-                  c.srli     a0, 21
-                  c.addi     t6, -32
-                  c.addi     s2, -7
-                  c.addi     t5, 6
-                  sub        a5, a6, a5
-                  or         t4, tp, s6
-                  c.slli     s5, 28
-                  div        s11, t6, a2
-                  la         s4, data_page_14+1844 #start riscv_load_store_rand_instr_stream_53
-                  lb         zero, 182(s4)
-                  c.srli     s0, 10
-                  lb         t1, -414(s4)
-                  lb         t4, -771(s4)
-                  sb         tp, -1155(s4)
-                  rem        s3, t5, t5
-                  lui        s1, 944122
-                  c.lui      s2, 19
-                  sb         t3, -182(s4)
-                  sb         tp, 1819(s4)
-                  lw         a0, 336(s4)
-                  lhu        s8, 694(s4)
-                  lbu        s2, -737(s4)
-                  c.slli     a3, 31
-                  c.addi     s2, -6
-                  sltiu      a0, a7, 77
-                  c.addi     s10, -24
-                  mulhsu     s6, a6, t0
-                  lui        s1, 1044687
-                  c.addi     s10, -11
-                  lb         t6, 979(s4)
-                  auipc      a2, 781810
-                  c.lui      s9, 15
-                  lb         t3, 411(s4)
-                  and        s10, a2, s2
-                  lbu        t6, -227(s4)
-                  c.srai     s0, 4
-                  c.addi     s11, 27
-                  sb         zero, 1588(s4)
-                  lui        a5, 680568
-                  c.li       gp, -13
-                  mul        s11, a6, s11
-                  lui        gp, 640587
-                  c.addi     s3, 1
-                  c.lui      a6, 23
-                  c.slli     a7, 1
-                  c.srai     a2, 15
-                  lui        s0, 709472
-                  sb         s9, 803(s4)
-                  c.addi     a2, 27
-                  sb         s1, -499(s4)
-                  lui        a2, 249519
-                  c.srli     a5, 25
-                  lb         s2, 501(s4)
-                  auipc      t3, 270073
-                  c.addi     s11, -19
-                  lbu        s9, -1801(s4)
-                  sh         t3, 1206(s4)
-                  lbu        a4, -739(s4)
-                  lb         a6, -102(s4) #end riscv_load_store_rand_instr_stream_53
-                  auipc      s9, 794964
-                  c.srli     a2, 8
-                  or         a0, a3, a2
-                  lui        s1, 179380
-                  c.and      s1, s1
-                  andi       s5, a5, 816
-                  c.addi     t1, 22
-                  ori        t4, s11, 634
-                  c.slli     t3, 4
-                  c.addi     a1, 29
-                  sra        s2, a3, s10
-                  c.addi     s9, 6
-                  c.addi     s3, 14
-                  c.addi     t5, -5
-                  c.addi     s2, 5
-                  lui        a0, 417459
-                  c.slli     s7, 9
-                  c.lui      s10, 18
-                  lui        s10, 830928
-                  c.addi     a7, -28
-                  lui        a5, 556747
-                  auipc      s0, 678597
-                  beq        a6, s10, 1364f
-1364:             auipc      t4, 61505
-                  fence
-                  c.srli     s1, 4
-                  c.srai     a1, 15
-                  c.addi     t4, 9
-                  lui        a6, 521290
-                  c.xor      a2, a4
-                  fence
-                  c.addi     s0, -24
-                  lui        a5, 875803
-                  blt        ra, zero, 1377f
-                  c.addi     s3, -16
-                  c.addi     s7, 11
-1377:             xor        a6, a0, s6
-                  c.addi     a3, -26
-                  c.slli     a1, 27
-                  c.srli     s0, 9
-                  remu       t5, s7, gp
-                  c.addi     s6, 4
-                  c.addi     s4, 15
-                  c.addi     t3, -28
-                  slli       s0, ra, 15
-                  div        a1, s4, ra
-                  auipc      s10, 946116
-                  slli       s6, s5, 19
-                  auipc      a3, 863730
-                  c.addi     t4, 2
-                  c.addi     s11, -31
-                  auipc      a6, 680798
-                  c.srai     a4, 21
-                  slti       s10, tp, 719
-                  lui        t5, 627780
-                  bge        s7, a1, 1413f
-                  c.sub      a4, a2
-                  fence.i
-                  c.slli     a5, 4
-                  c.lui      s1, 31
-                  c.addi     a4, -4
-                  srai       s3, a3, 1
-                  lui        t6, 982699
-                  bge        s11, t2, 1419f
-                  c.addi     s0, -5
-                  divu       a0, a3, s9
-                  c.li       a2, 0
-                  auipc      t5, 506679
-                  lui        a0, 772363
-                  and        s5, a7, gp
-                  auipc      a0, 777985
-                  auipc      a4, 876749
-1413:             c.srai     a2, 25
-                  c.addi     s3, 22
-                  c.addi     t1, -10
-                  sltiu      s4, s9, 941
-                  slli       a1, s1, 7
-                  lui        a0, 734643
-1419:             c.lui      t2, 25
-                  c.addi     a2, -18
-                  lui        s1, 82773
-                  sltiu      a5, t2, -329
-                  c.addi     t1, -8
-                  auipc      t1, 188875
-                  c.lui      t2, 17
-                  c.srli     a1, 9
-                  c.slli     s10, 8
-                  c.addi     s5, 14
-                  c.addi     s10, -26
-                  c.slli     s0, 6
-                  c.addi     a5, 29
-                  c.srli     a0, 14
-                  c.srai     a3, 8
-                  lui        s8, 973427
-                  c.addi     t3, 14
-                  c.lui      s10, 6
-                  c.srli     a1, 29
-                  c.slli     gp, 21
-                  c.addi     t5, -5
-                  c.slli     a6, 20
-                  c.srai     s1, 9
-                  c.addi     s7, 30
-                  c.slli     t3, 7
-                  c.addi     s1, -15
-                  lui        s11, 599643
-                  lui        s7, 104762
-                  mulh       s6, a4, gp
-                  c.addi     a4, 3
-                  c.addi     a3, 23
-                  lui        s1, 151454
-                  c.lui      s4, 9
-                  bge        tp, t2, 1458f
-                  bge        s5, a7, 1473f
-                  c.slli     a0, 8
-                  c.addi     s4, 24
-                  c.addi     a1, -31
-                  sltiu      a5, s10, -1001
-1458:             c.slli     a3, 26
-                  add        t3, t5, t2
-                  c.addi     s2, 15
-                  lui        t4, 593590
-                  c.srli     s0, 4
-                  c.addi     s7, 28
-                  c.srli     a2, 3
-                  c.addi     t4, 13
-                  lui        s6, 345561
-                  and        a6, a3, s8
-                  c.lui      a0, 3
-                  c.addi     t3, 28
-                  lui        a2, 744887
-                  c.addi     a7, -1
-                  mulhsu     gp, gp, a5
-1473:             or         zero, a7, ra
-                  auipc      s4, 823919
-                  bgeu       s1, t4, 1488f
-                  c.slli     a2, 13
-                  c.addi     a4, -26
-                  c.slli     a5, 18
-                  lui        s10, 782514
-                  c.srli     a1, 24
-                  c.lui      a2, 8
-                  sll        zero, s8, a3
-                  c.srli     a1, 24
-                  auipc      a4, 32662
-                  auipc      s6, 131750
-                  lui        s9, 541476
-                  andi       gp, a4, -127
-1488:             slti       zero, a3, -106
-                  c.srai     a1, 27
-                  c.srli     a3, 8
-                  c.addi     s8, -26
-                  and        a1, a5, t5
-                  c.slli     s1, 17
-                  c.slli     a3, 6
-                  mulhu      t5, sp, a6
-                  mulh       s8, gp, s8
-                  lui        a2, 944657
-                  lui        s6, 95264
-                  bltu       a3, s8, 1516f
-                  and        s3, s0, a4
-                  sub        t1, s8, a4
-                  c.lui      gp, 10
-                  auipc      s8, 102267
-                  div        t3, t5, a7
-                  or         a4, s7, tp
-                  c.slli     s3, 10
-                  c.addi     t3, 22
-                  lui        s9, 197262
-                  lui        s6, 254709
-                  auipc      s10, 43869
-                  c.li       s3, 4
-                  c.beqz     a2, 1532f
-                  c.addi     a0, 17
-                  c.addi     t5, -16
-                  c.lui      t5, 10
-1516:             c.addi     t2, 7
-                  lui        a0, 878359
-                  fence.i
-                  lui        a1, 966684
-                  c.addi     s4, 1
-                  bne        t2, a4, 1524f
-                  auipc      a3, 102439
-                  andi       zero, a6, 62
-1524:             auipc      s11, 530572
-                  auipc      a2, 289985
-                  c.addi     s0, -29
-                  c.lui      gp, 21
-                  lui        s6, 144134
-                  c.addi     s0, 18
-                  c.addi     t1, 29
-                  lui        s0, 195374
-1532:             c.addi     t3, -13
-                  c.srli     a1, 30
-                  mul        a0, a2, tp
-                  c.srai     s1, 30
-                  auipc      a3, 996938
-                  bltu       tp, s9, 1542f
-                  c.addi     a2, 22
-                  c.lui      s3, 22
-                  c.addi     s3, 7
-                  rem        a1, s9, t4
-1542:             lui        a4, 924453
-                  c.addi     s11, -25
-                  auipc      a2, 521986
-                  beq        t5, s10, 1564f
-                  c.addi     s11, -26
-                  auipc      t2, 412993
-                  c.addi     t6, 19
-                  c.addi     s6, -4
-                  auipc      a0, 98830
-                  c.lui      s7, 24
-                  c.slli     s3, 21
-                  xori       s10, ra, 881
-                  c.addi     t3, -15
-                  c.mv       s11, s10
-                  c.srli     s0, 29
-                  c.addi     s1, -7
-                  c.srli     a2, 26
-                  lui        s6, 192187
-                  c.lui      t2, 26
-                  c.lui      t3, 11
-                  c.lui      t1, 15
-                  c.lui      a1, 28
-1564:             andi       gp, s2, -7
-                  c.srli     s0, 25
-                  c.addi     s11, 8
-                  andi       s11, a6, 765
-                  auipc      gp, 558666
-                  auipc      s0, 213918
-                  c.srai     s0, 16
-                  c.addi     t1, 21
-                  divu       t2, tp, s7
-                  c.addi     s8, 4
-                  andi       s3, a1, -115
-                  auipc      t3, 763510
-                  lui        s7, 710011
-                  c.addi     a3, 18
-                  c.slli     t4, 10
-                  c.srli     a4, 15
-                  lui        s3, 562833
-                  lui        a1, 862259
-                  c.srai     a4, 24
-                  lui        s8, 526701
-                  and        s10, a7, t0
-                  c.addi     s0, -18
-                  lui        s7, 655846
-                  c.addi     s6, -1
-                  auipc      a4, 56341
-                  c.addi     s9, 14
-                  lui        a7, 789822
-                  auipc      t6, 523409
-                  c.addi     t4, 22
-                  div        s2, s0, sp
-                  c.lui      s6, 11
-                  c.addi     t5, 28
-                  c.srai     a5, 16
-                  mul        gp, s8, s5
-                  c.addi     t1, -19
-                  c.addi     a5, 12
-                  c.addi     t4, -8
-                  c.srai     a1, 7
-                  sra        s8, a0, ra
-                  c.addi     t4, -25
-                  c.srai     a3, 18
-                  c.addi     s6, 31
-                  c.addi     gp, 4
-                  c.addi     s10, -2
-                  c.or       a0, a4
-                  c.lui      a3, 25
-                  c.slli     t3, 11
-                  auipc      s3, 203246
-                  c.addi     s0, -12
-                  c.addi     t3, -7
-                  c.lui      t1, 26
-                  rem        s8, s9, s5
-                  or         a6, a3, s9
-                  addi       s4, s0, 558
-                  nop
-                  c.addi     a0, 13
-                  c.bnez     a5, 1637f
-                  c.srai     a4, 21
-                  lui        a0, 955744
-                  mul        s10, s9, s1
-                  c.addi     a4, -11
-                  c.slli     a4, 13
-                  c.srai     s0, 16
-                  c.addi     s10, -22
-                  c.addi     s3, 20
-                  c.srli     a0, 27
-                  c.srai     a1, 29
-                  c.srai     a3, 27
-                  c.srli     a1, 7
-                  mulhu      t5, s1, gp
-                  auipc      t2, 53382
-                  lui        s11, 258391
-                  mulhsu     t4, t0, s3
-1637:             auipc      a2, 75374
-                  nop
-                  c.slli     t2, 22
-                  mulhsu     t6, a5, s2
-                  c.lui      s7, 18
-                  c.slli     a6, 28
-                  c.lui      a5, 2
-                  c.srli     a4, 16
-                  bltu       a2, a5, 1646f
-1646:             c.slli     t6, 6
-                  c.slli     s0, 20
-                  c.srli     s1, 9
-                  c.addi     s5, -4
-                  c.addi     t6, 7
-                  c.addi     s3, -5
-                  auipc      t6, 897499
-                  auipc      s3, 994142
-                  nop
-                  auipc      t1, 395617
-                  sltu       t2, a4, t2
-                  srai       s8, s10, 14
-                  c.srli     a1, 21
-                  c.slli     t1, 30
-                  auipc      s3, 500989
-                  c.addi     s4, -32
-                  auipc      a1, 531841
-                  lui        s0, 792199
-                  c.srai     a4, 29
-                  c.srli     s1, 5
-                  c.addi     s11, 26
-                  bgeu       t5, ra, 1676f
-                  c.addi     a0, 9
-                  c.addi     s1, 8
-                  lui        a1, 562929
-                  c.addi     a0, -21
-                  c.slli     s8, 5
-                  c.addi     a4, -20
-                  slti       s0, a6, -252
-                  sra        s10, t5, s10
-1676:             c.addi     a1, -4
-                  c.lui      s3, 12
-                  c.addi     a3, -21
-                  lui        t1, 436648
-                  c.addi     a4, -22
-                  c.lui      s8, 19
-                  c.srai     a3, 31
-                  c.lui      a5, 7
-                  sub        s11, t6, a3
-                  mul        gp, s4, s0
-                  c.srli     a2, 28
-                  c.addi     s1, 31
-                  c.addi     s10, 28
-                  rem        a4, s7, a6
-                  srai       s7, t5, 28
-                  c.srli     s0, 3
-                  c.slli     s1, 20
-                  c.addi     s2, -19
-                  srl        zero, s5, a0
-                  lui        s8, 721061
-                  c.slli     t6, 14
-                  c.addi     a5, -15
-                  auipc      s7, 67148
-                  divu       zero, a0, s6
-                  c.addi     a5, -28
-                  lui        s3, 109861
-                  lui        s3, 210410
-                  ori        s1, s1, 404
-                  c.addi     s0, 23
-                  lui        t5, 171570
-                  c.lui      a2, 21
-                  xor        s1, t6, t1
-                  c.srli     a2, 5
-                  la         s11, data_page_12+2133 #start riscv_load_store_rand_instr_stream_35
-                  c.srai     a0, 1
-                  srli       s2, a1, 25
-                  lui        a3, 705079
-                  lb         t1, -265(s11)
-                  lbu        a5, -864(s11)
-                  lb         a7, 504(s11)
-                  lhu        s5, -1811(s11)
-                  xori       a7, s8, 484
-                  sh         t6, -193(s11)
-                  c.addi     s9, -17
-                  c.add      s1, a4
-                  lb         t5, 1142(s11)
-                  lw         t1, 135(s11)
-                  c.and      a3, s1
-                  lhu        t4, -1813(s11)
-                  c.lui      t5, 19
-                  c.lui      t1, 8
-                  lb         s1, 1706(s11)
-                  lb         s9, -1456(s11)
-                  lb         t1, -1982(s11)
-                  lh         a3, 1393(s11)
-                  c.srai     a1, 1
-                  xor        s4, s11, t2
-                  lh         a0, -489(s11)
-                  auipc      gp, 149162
-                  c.srli     s0, 23
-                  sh         s0, -437(s11)
-                  lb         a0, -1343(s11)
-                  lui        s2, 102727
-                  c.or       a2, s1
-                  c.addi     s2, -13
-                  sh         s3, 1327(s11)
-                  sh         s7, 71(s11)
-                  sb         t0, 1632(s11)
-                  auipc      a2, 463577
-                  lb         a2, 1631(s11)
-                  lb         t1, -1806(s11)
-                  lb         s8, -1242(s11)
-                  lb         s6, -1240(s11)
-                  c.srli     a3, 25
-                  lb         t2, 433(s11)
-                  sb         zero, 1731(s11)
-                  slti       a0, t0, -703
-                  sb         s1, -1432(s11)
-                  lw         t1, 791(s11)
-                  auipc      gp, 210937
-                  lbu        t2, -341(s11)
-                  sw         ra, -997(s11)
-                  sb         s11, 770(s11) #end riscv_load_store_rand_instr_stream_35
-                  c.srli     s0, 20
-                  c.addi     s5, 2
-                  lui        s4, 167681
-                  sll        t6, s4, a4
-                  c.srli     a4, 5
-                  c.lui      s3, 23
-                  lui        a2, 96765
-                  c.addi     t4, -20
-                  c.srli     a1, 12
-                  c.sub      s1, a0
-                  xori       a0, a6, 601
-                  c.addi     a4, -24
-                  c.addi     s10, -23
-                  c.srai     a1, 4
-                  c.addi     t1, -10
-                  c.addi     t2, -19
-                  lui        a3, 301600
-                  c.srai     a5, 18
-                  c.slli     t5, 25
-                  auipc      t5, 927593
-                  remu       t2, t5, a2
-                  lui        t2, 232550
-                  c.srai     s0, 15
-                  c.addi     s7, -26
-                  c.addi     s6, -3
-                  c.addi     a6, 28
-                  lui        s1, 454149
-                  auipc      a0, 989152
-                  ori        s9, s3, -385
-                  auipc      a3, 985948
-                  lui        gp, 674405
-                  remu       s1, t1, a2
-                  c.bnez     s1, 1749f
-                  lui        s4, 137730
-                  c.addi     a4, -25
-                  auipc      a7, 297504
-                  c.addi     a2, 5
-                  c.addi     t2, 15
-                  slli       s8, s8, 11
-                  c.addi     s3, -13
-1749:             c.lui      s8, 6
-                  c.addi     s1, 31
-                  c.nop
-                  c.slli     t5, 4
-                  c.addi     t6, -1
-                  auipc      zero, 544295
-                  c.srai     s0, 23
-                  c.addi     s10, -2
-                  c.addi     s2, -8
-                  c.addi     a7, 10
-                  c.addi     t1, -5
-                  c.lui      t5, 13
-                  auipc      s10, 546697
-                  c.addi     s1, -21
-                  auipc      s0, 852686
-                  c.slli     s1, 20
-                  srai       s8, t5, 19
-                  c.addi     a7, 26
-                  c.srli     s0, 7
-                  c.addi     a3, 3
-                  c.addi     a0, 7
-                  c.addi     t3, -25
-                  auipc      t6, 865215
-                  auipc      s9, 131751
-                  bgeu       s10, gp, 1779f
-                  c.addi     a6, 1
-                  c.srai     a0, 22
-                  lui        a3, 368459
-                  c.addi     a4, 21
-                  lui        t6, 888345
-1779:             c.addi     a6, 9
-                  c.bnez     a0, 1795f
-                  addi       s3, s10, -359
-                  c.addi     s8, -7
-                  c.addi     s8, -24
-                  xor        s11, t6, a7
-                  slti       s0, a0, -843
-                  c.addi     s11, 22
-                  c.srli     s1, 15
-                  c.andi     a1, 19
-                  srai       s8, s2, 22
-                  lui        a2, 979935
-                  auipc      a0, 984523
-                  c.addi     s6, 6
-                  c.addi     a6, -8
-                  c.addi     a5, 31
-1795:             c.srai     a0, 20
-                  auipc      s7, 861975
-                  c.srli     a0, 20
-                  la         t6, data_page_2+2503 #start riscv_load_store_rand_instr_stream_48
-                  sh         a3, -677(t6)
-                  sb         s7, 987(t6)
-                  divu       s1, t5, a0
-                  c.addi     s4, -27
-                  sw         s0, -435(t6)
-                  auipc      a7, 886710
-                  lb         a1, 313(t6)
-                  c.addi     a0, -13
-                  sb         t0, -104(t6)
-                  auipc      a1, 936706
-                  c.addi     t2, 20
-                  auipc      a0, 940896
-                  c.addi     s4, 2
-                  lui        s9, 90422
-                  sw         s9, 1529(t6)
-                  c.lui      a3, 22
-                  lb         t2, -600(t6)
-                  auipc      s6, 751602
-                  lb         a4, 88(t6)
-                  sb         t1, 83(t6)
-                  lb         a1, -974(t6)
-                  sb         a3, -1722(t6) #end riscv_load_store_rand_instr_stream_48
-                  c.andi     s1, 14
-                  c.beqz     s0, 1804f
-                  c.addi     s6, 26
-                  srl        s9, a6, t2
-                  auipc      a5, 537901
-                  lui        t2, 953172
-1804:             lui        a3, 548393
-                  auipc      gp, 16528
-                  c.addi     t3, 24
-                  la         s11, data_page_7+1543 #start riscv_load_store_rand_instr_stream_63
-                  lbu        s3, 608(s11)
-                  c.srai     a1, 14
-                  lw         a0, 93(s11)
-                  remu       a4, s10, a4
-                  sb         s4, -996(s11)
-                  lui        gp, 56584
-                  lw         a4, 629(s11)
-                  lb         s10, 380(s11)
-                  lb         a2, 1203(s11)
-                  add        s10, t3, s9
-                  sb         s2, 428(s11)
-                  lb         a0, 742(s11)
-                  fence.i
-                  c.slli     s9, 25
-                  c.srai     a1, 17
-                  lb         s5, 1952(s11)
-                  c.srai     a1, 3
-                  lui        s6, 263629
-                  lbu        s3, 587(s11)
-                  sb         s9, 1678(s11)
-                  c.addi     s9, -22
-                  c.srai     a5, 11
-                  c.srai     a2, 26
-                  c.slli     s3, 15
-                  c.srai     a0, 23
-                  c.addi     a5, -14
-                  lb         a2, -1222(s11)
-                  c.lui      s10, 14
-                  c.andi     a3, -16
-                  sll        s9, t5, s3
-                  lb         s2, 652(s11)
-                  lui        s8, 198493
-                  sb         gp, 1497(s11)
-                  c.addi     a1, 16
-                  c.srli     a3, 23
-                  slti       s4, zero, 319
-                  auipc      a7, 330031
-                  sw         a5, 709(s11)
-                  c.mv       gp, s10
-                  mulh       s6, s9, gp
-                  lhu        t3, 1521(s11)
-                  lbu        s6, 156(s11)
-                  lui        s9, 783578
-                  lb         t2, 1934(s11) #end riscv_load_store_rand_instr_stream_63
-                  xor        s11, s11, t1
-                  c.li       s5, 31
-                  c.addi     a6, -22
-                  c.addi     gp, -27
-                  c.addi     a4, -29
-                  div        a5, a6, s5
-                  sub        t4, a3, a5
-                  c.bnez     a0, 1832f
-                  c.srli     s1, 10
-                  c.srli     a5, 16
-                  c.addi     s0, -12
-                  auipc      a6, 329090
-                  c.addi     s2, 12
-                  lui        s5, 370149
-                  remu       t4, a2, a4
-                  c.slli     a7, 29
-                  c.srli     a2, 10
-                  auipc      s8, 66952
-                  sra        a1, s10, gp
-                  c.slli     t2, 20
-                  auipc      t5, 343436
-                  xor        s1, a0, t3
-                  c.addi     a4, -7
-                  lui        s9, 671831
-                  auipc      s9, 912751
-                  la         s9, data_page_4+1740 #start riscv_load_store_rand_instr_stream_39
-                  c.lui      a4, 5
-                  auipc      s7, 527944
-                  sb         ra, 36(s9)
-                  lbu        s7, 389(s9)
-                  lbu        s3, -1113(s9)
-                  c.slli     t1, 22
-                  lh         a2, 708(s9)
-                  lb         a0, -1354(s9)
-                  lbu        gp, 428(s9)
-                  c.addi     a1, 12
-                  lbu        gp, -1532(s9)
-                  sb         s11, 2028(s9)
-                  lb         t6, 1870(s9)
-                  lh         a6, 1050(s9)
-                  lui        t1, 467304
-                  c.addi     a2, -6
-                  sb         ra, -901(s9)
-                  sh         t0, -250(s9)
-                  sb         s0, 1571(s9)
-                  sb         a6, 304(s9)
-                  div        a4, s9, a1
-                  lui        s8, 990582
-                  c.lui      t1, 14
-                  sw         s11, 1888(s9)
-                  srl        a3, a7, t3
-                  sh         s10, 734(s9)
-                  lb         s5, -1441(s9)
-                  lb         a0, -1543(s9)
-                  c.nop
-                  lui        s2, 681189
-                  lui        s5, 801952
-                  sb         s2, 1303(s9)
-                  lb         s7, -506(s9)
-                  lh         s2, -816(s9)
-                  lw         t4, 1200(s9)
-                  c.srai     a5, 8
-                  c.srli     a3, 23
-                  lbu        s1, 1781(s9)
-                  lh         s7, -1082(s9)
-                  andi       zero, tp, 934
-                  sb         s10, 1246(s9)
-                  lw         s8, 1900(s9)
-                  srli       a1, sp, 12
-                  lbu        t3, 903(s9)
-                  lw         s1, -328(s9)
-                  c.srli     a1, 23
-                  lh         t3, -176(s9) #end riscv_load_store_rand_instr_stream_39
-1832:             c.srli     a2, 5
-                  c.addi     a4, 16
-                  auipc      a3, 814522
-                  c.srli     a5, 1
-                  c.addi     s2, 3
-                  c.slli     s0, 25
-                  auipc      t3, 148703
-                  lui        t1, 1043002
-                  c.xor      s1, a0
-                  c.addi     a3, -12
-                  auipc      s8, 359430
-                  c.srli     a5, 18
-                  c.addi     s2, 24
-                  c.addi     s1, -26
-                  c.addi     t5, 26
-                  c.srai     a2, 19
-                  xor        t2, t1, a6
-                  c.srli     s1, 6
-                  nop
-                  c.lui      a2, 30
-                  c.addi     a0, 3
-                  srli       gp, a2, 21
-                  c.lui      a6, 26
-                  c.addi     s8, 1
-                  c.addi     gp, 1
-                  c.lui      s8, 21
-                  c.addi     a0, 25
-                  c.addi     a5, -25
-                  c.slli     s8, 22
-                  lui        t5, 595435
-                  c.addi     s3, -26
-                  lui        a4, 311158
-                  auipc      a1, 965221
-                  auipc      t5, 983850
-                  c.addi     a3, 10
-                  c.addi     t3, -18
-                  c.srai     s0, 20
-                  mulhu      gp, a5, s2
-                  auipc      zero, 546827
-                  lui        s1, 19635
-                  divu       s0, s4, t1
-                  c.addi     a0, 10
-                  auipc      s1, 979090
-                  mulh       a6, a0, a5
-                  c.nop
-                  c.sub      a2, a3
-                  c.srai     a5, 14
-                  sll        t6, t6, a3
-                  lui        s9, 1520
-                  c.addi     t1, -6
-                  c.addi     s1, 26
-                  c.slli     s11, 17
-                  c.lui      s5, 11
-                  c.addi     a1, -30
-                  la         a2, data_page_17+1992 #start riscv_load_store_rand_instr_stream_51
-                  sb         t6, 169(a2)
-                  sb         s6, 155(a2)
-                  lh         s10, 1520(a2)
-                  auipc      s9, 355175
-                  lhu        s9, -1986(a2)
-                  sb         s8, 1753(a2)
-                  sltiu      t6, a2, -694
-                  c.addi     s2, -9
-                  lbu        s2, 949(a2)
-                  lbu        s3, 1969(a2)
-                  lbu        a7, 290(a2)
-                  lb         a5, 1098(a2)
-                  c.srai     a3, 29
-                  lb         gp, 22(a2)
-                  lbu        s0, 215(a2)
-                  lbu        s0, -841(a2)
-                  lb         s10, 749(a2)
-                  lui        a7, 674250
-                  lb         a0, -1267(a2)
-                  lb         t6, -1881(a2)
-                  lh         t3, -1170(a2)
-                  c.srli     a1, 19
-                  lbu        a1, -1630(a2)
-                  lb         t6, -1510(a2)
-                  c.mv       a3, s9
-                  lh         s11, 1578(a2)
-                  lb         t2, 994(a2)
-                  sb         a7, -1565(a2)
-                  lui        a4, 1041924
-                  lui        s7, 364090
-                  sb         a1, 612(a2)
-                  lb         a3, 1537(a2)
-                  c.or       a0, a3
-                  lbu        a5, -1169(a2)
-                  auipc      s10, 90273
-                  lbu        t5, -606(a2)
-                  sb         a7, -1224(a2)
-                  sb         a3, -873(a2)
-                  auipc      t1, 385914
-                  lbu        s6, 1887(a2) #end riscv_load_store_rand_instr_stream_51
-                  auipc      a7, 878710
-                  c.addi     a2, 9
-                  c.addi     a7, -30
-                  c.srli     a3, 12
-                  c.srli     a0, 3
-                  c.lui      s8, 6
-                  auipc      t5, 990314
-                  auipc      a0, 656047
-                  c.lui      a0, 2
-                  c.slli     t1, 9
-                  c.lui      a3, 23
-                  ori        s4, s2, -322
-                  c.addi     t3, 26
-                  c.addi     a7, -19
-                  auipc      a5, 463322
-                  bltu       a2, sp, 1905f
-                  lui        a0, 252213
-                  srli       gp, s1, 12
-                  c.addi     s0, -3
-1905:             lui        s7, 602832
-                  sltu       a1, t2, a7
-                  auipc      s6, 565548
-                  la         a4, data_page_9+2030 #start riscv_load_store_rand_instr_stream_60
-                  divu       s8, tp, a6
-                  lh         s11, -1256(a4)
-                  c.addi     a5, -15
-                  sb         a2, 133(a4)
-                  lb         a6, 419(a4)
-                  c.lui      s6, 2
-                  lbu        t6, -2016(a4)
-                  sh         a3, 1740(a4)
-                  lui        a6, 890201
-                  lhu        s2, 848(a4)
-                  sb         t5, -872(a4)
-                  c.addi     s8, -6
-                  sb         t6, 373(a4)
-                  c.addi     s2, 31
-                  lbu        a0, -1237(a4)
-                  lbu        gp, 621(a4)
-                  sb         sp, 237(a4)
-                  lui        s0, 787273
-                  c.addi     t1, 20
-                  lbu        t4, 1585(a4)
-                  sb         s0, 1759(a4)
-                  lb         a5, 733(a4)
-                  lb         a2, -1003(a4)
-                  lb         t1, 577(a4)
-                  rem        s5, a5, s2
-                  lh         zero, -470(a4)
-                  sb         t6, 961(a4)
-                  lb         s10, 1657(a4)
-                  lh         s6, -1300(a4)
-                  auipc      s6, 790716
-                  sw         zero, 674(a4)
-                  c.lui      t2, 17
-                  sb         tp, 1858(a4)
-                  sh         t1, 556(a4)
-                  c.sub      s0, a0
-                  sb         sp, -1254(a4)
-                  lh         t4, -610(a4)
-                  c.srli     a1, 13
-                  auipc      t3, 278045
-                  c.addi     a7, 4
-                  lb         s11, 778(a4)
-                  lbu        t1, -257(a4)
-                  lui        a6, 319628
-                  lh         s9, 1080(a4)
-                  c.slli     a2, 28
-                  auipc      s8, 928654
-                  srl        t4, s0, s1
-                  sb         sp, -1239(a4) #end riscv_load_store_rand_instr_stream_60
-                  lui        gp, 922246
-                  c.srli     s0, 18
-                  c.addi     t5, 30
-                  lui        t6, 525744
-                  c.lui      a0, 25
-                  lui        s7, 60147
-                  lui        t6, 384917
-                  auipc      s0, 81512
-                  lui        t6, 799931
-                  c.srai     a4, 9
-                  c.addi     a5, -31
-                  or         s4, zero, t3
-                  c.addi     t4, 27
-                  c.xor      s0, a3
-                  c.addi     s9, -30
-                  c.srai     a1, 15
-                  lui        a4, 142895
-                  c.lui      s4, 26
-                  auipc      s11, 402455
-                  c.sub      a3, a3
-                  c.srli     a2, 14
-                  c.addi     t5, 23
-                  and        t5, a3, t1
-                  c.addi     s4, 26
-                  c.srli     a5, 6
-                  lui        s10, 484818
-                  auipc      a3, 221149
-                  sra        a4, a5, s4
-                  la         s4, data_page_5+2139 #start riscv_load_store_rand_instr_stream_69
-                  lui        a5, 462253
-                  auipc      s6, 550898
-                  auipc      t2, 182425
-                  lhu        t2, -1479(s4)
-                  c.srai     a4, 19
-                  lb         s11, 1008(s4)
-                  sb         tp, -1039(s4)
-                  sb         s1, 1423(s4)
-                  c.addi     a5, 24
-                  sb         a4, 203(s4)
-                  sb         zero, -445(s4)
-                  c.addi     s0, 22
-                  lb         a4, 238(s4)
-                  lbu        s8, 1640(s4)
-                  sb         s1, -1952(s4)
-                  div        t5, a3, a3
-                  sb         s11, 1732(s4)
-                  sb         s2, -860(s4)
-                  sb         s7, -548(s4)
-                  lb         a4, 407(s4)
-                  mulh       s11, s0, s8
-                  c.add      a2, a3
-                  lbu        a0, 870(s4)
-                  lb         s8, 1696(s4)
-                  lb         a2, 620(s4)
-                  auipc      a3, 766907
-                  c.srai     a1, 8
-                  sb         s7, -1442(s4)
-                  c.srli     s0, 3
-                  sb         t4, -637(s4)
-                  lbu        a2, -707(s4)
-                  c.or       a4, a5
-                  c.addi     t1, -4
-                  c.addi     s2, 3
-                  c.srli     a2, 23
-                  lhu        t5, -1935(s4)
-                  sb         s2, -646(s4)
-                  lbu        a1, 831(s4)
-                  c.xor      a2, a5
-                  sb         s9, -536(s4)
-                  mul        a6, a4, sp
-                  c.lui      a3, 31
-                  sb         t0, 1323(s4)
-                  lw         s8, 1521(s4)
-                  c.addi     a6, -30
-                  sb         a4, 684(s4)
-                  lb         s11, 816(s4)
-                  auipc      s6, 729940
-                  lh         t3, 1465(s4) #end riscv_load_store_rand_instr_stream_69
-                  c.addi     s0, -26
-                  lui        s1, 175503
-                  c.srli     a1, 30
-                  lui        s9, 270028
-                  auipc      s4, 769434
-                  auipc      a4, 434390
-                  auipc      s3, 965256
-                  c.addi     t1, 16
-                  auipc      t1, 1003810
-                  c.lui      s11, 23
-                  c.lui      t5, 26
-                  bne        t5, s6, 1952f
-                  auipc      s5, 269713
-                  mul        a7, zero, s4
-                  c.addi     a0, 27
-                  sltu       a3, a1, t5
-1952:             srl        t6, t6, a3
-                  c.srai     s1, 14
-                  c.srai     a1, 29
-                  lui        a6, 45412
-                  c.addi     s0, 14
-                  c.beqz     s0, 1975f
-                  c.addi     s3, 11
-                  srai       t1, s10, 0
-                  c.addi     t2, -20
-                  and        a5, s1, a1
-                  c.addi     a5, -3
-                  c.addi     s9, -24
-                  c.srai     a4, 3
-                  auipc      t3, 18126
-                  c.srai     s0, 22
-                  c.srli     a2, 5
-                  c.addi     gp, 19
-                  c.addi     t5, 11
-                  c.addi     s10, -6
-                  ori        a6, s4, 981
-                  c.addi     gp, -20
-                  c.lui      a6, 28
-                  mulhsu     s5, a7, a5
-1975:             auipc      s4, 303718
-                  auipc      s4, 603139
-                  c.andi     a5, -5
-                  sub        s0, s1, s10
-                  auipc      s2, 488125
-                  c.lui      s8, 14
-                  c.srli     a4, 6
-                  mulh       s1, a1, a5
-                  c.slli     t3, 31
-                  c.addi     a5, 28
-                  c.srai     s0, 22
-                  auipc      zero, 406501
-                  lui        t5, 221654
-                  lui        s7, 418305
-                  c.srli     a3, 24
-                  c.slli     s0, 21
-                  bgeu       s1, sp, 1995f
-                  auipc      a5, 689031
-                  c.addi     s10, -12
-                  c.addi     s3, 2
-1995:             c.srai     s1, 28
-                  auipc      s6, 16770
-                  sltu       s10, a1, s0
-                  c.beqz     s0, 1999f
-1999:             c.addi     t4, -6
-                  c.slli     s3, 25
-                  auipc      s9, 57187
-                  auipc      a0, 808500
-                  sll        a2, s0, s9
-                  c.addi     a6, 31
-                  remu       s11, tp, a7
-                  c.srai     a5, 8
-                  c.addi     s11, -6
-                  c.slli     a4, 16
-                  bltu       s9, a4, 2012f
-                  c.srli     a1, 3
-                  addi       s8, s0, -52
-2012:             c.srai     a3, 2
-                  c.srli     s0, 28
-                  c.addi     a4, 11
-                  auipc      t6, 316424
-                  bge        t5, a0, 2017f
-2017:             c.addi     s10, -31
-                  c.srai     a3, 26
-                  sra        a3, ra, t0
-                  c.srli     s0, 17
-                  lui        s1, 890452
-                  auipc      a5, 977995
-                  c.srli     a2, 29
-                  auipc      a5, 780337
-                  c.srai     a2, 16
-                  srl        zero, tp, s3
-                  c.addi     s11, 26
-                  c.addi     s9, -13
-                  c.lui      a2, 14
-                  c.li       t2, 27
-                  c.or       a5, a4
-                  la         t3, data_page_16+2425 #start riscv_load_store_rand_instr_stream_23
-                  c.slli     t6, 10
-                  lb         t6, -1719(t3)
-                  sb         a6, 1253(t3)
-                  sb         s9, -1704(t3)
-                  lhu        s4, -657(t3)
-                  c.srai     a4, 19
-                  lh         t1, -751(t3)
-                  auipc      zero, 541040
-                  sw         gp, -1233(t3)
-                  fence
-                  sb         zero, 1151(t3)
-                  lbu        a7, 538(t3)
-                  c.slli     s8, 11
-                  lb         a6, 47(t3)
-                  c.addi     t6, -7
-                  lbu        s8, 946(t3)
-                  lbu        s3, -1470(t3)
-                  lh         t5, 1233(t3)
-                  lbu        t4, 1435(t3)
-                  c.lui      s3, 3
-                  c.addi     s7, 23
-                  lui        s10, 779248
-                  c.nop
-                  lhu        a2, -635(t3)
-                  lh         t6, -179(t3)
-                  lb         a1, -846(t3)
-                  lb         zero, -1874(t3)
-                  sh         s8, -1103(t3)
-                  sw         a5, -1621(t3)
-                  lbu        a1, 155(t3)
-                  sb         s1, -622(t3)
-                  c.slli     t1, 2
-                  sb         s10, 104(t3)
-                  sh         s8, 83(t3)
-                  lbu        a5, 962(t3)
-                  lbu        gp, 352(t3)
-                  lbu        s11, 1214(t3)
-                  sb         a0, 1027(t3)
-                  sb         a6, 1604(t3)
-                  lb         a5, -1363(t3) #end riscv_load_store_rand_instr_stream_23
-                  c.srai     s1, 11
-                  lui        t2, 573969
-                  c.addi     t3, 15
-                  remu       s11, s4, a6
-                  c.addi     a1, -25
-                  c.lui      t6, 20
-                  bne        s3, s9, 2039f
-2039:             c.lui      s8, 7
-                  c.addi     a3, -8
-                  auipc      t1, 854768
-                  lui        a1, 974885
-                  c.li       s6, 4
-                  c.srai     a1, 20
-                  c.addi     s7, -31
-                  c.addi     a2, -32
-                  c.addi     a3, -11
-                  c.addi     t2, 27
-                  c.srai     a1, 2
-                  c.srai     s1, 31
-                  slt        s9, a3, a2
-                  lui        a0, 341706
-                  c.beqz     a5, 2060f
-                  c.addi     s0, -19
-                  c.addi     s6, -23
-                  c.srli     a1, 22
-                  c.addi     s6, -31
-                  sll        s8, a4, t6
-                  auipc      s11, 678016
-2060:             c.addi     gp, -8
-                  c.slli     a6, 27
-                  c.lui      a4, 10
-                  c.addi     s2, 25
-                  c.lui      a7, 27
-                  lui        s6, 793446
-                  c.slli     s3, 23
-                  c.lui      s9, 6
-                  srl        zero, s9, s3
-                  auipc      a0, 917236
-                  lui        s6, 695792
-                  c.lui      s3, 14
-                  mulhu      s9, a2, ra
-                  c.addi     s7, 14
-                  c.addi     s5, 25
-                  c.slli     s5, 6
-                  c.srai     a4, 18
-                  c.addi     s11, -2
-                  sltu       t4, t3, s5
-                  c.slli     t1, 9
-                  c.srli     a1, 24
-                  lui        a0, 12369
-                  c.lui      s6, 6
-                  lui        s4, 366649
-                  c.srai     a2, 5
-                  auipc      t2, 73866
-                  auipc      s6, 756711
-                  c.addi     s1, -24
-                  c.addi     s11, 18
-                  c.slli     s11, 15
-                  c.addi     a7, -3
-                  c.and      s0, a3
-                  c.slli     t5, 6
-                  c.bnez     a5, 2098f
-                  auipc      s8, 181874
-                  lui        s11, 456591
-                  sub        s3, s8, t3
-                  c.sub      a1, a2
-2098:             lui        s3, 470971
-                  c.addi     s3, -3
-                  srl        t5, s11, s10
-                  c.addi     s1, -26
-                  c.lui      t2, 17
-                  c.lui      a0, 9
-                  c.srli     s0, 18
-                  la         t5, data_page_15+1961 #start riscv_load_store_rand_instr_stream_0
-                  lbu        s4, 1854(t5)
-                  lbu        t3, 112(t5)
-                  lhu        a7, 999(t5)
-                  lb         s1, -64(t5)
-                  c.srai     s0, 31
-                  sh         a5, 601(t5)
-                  lui        a6, 197077
-                  c.lui      s5, 19
-                  ori        zero, a6, -391
-                  sb         tp, -447(t5)
-                  auipc      s2, 496573
-                  sh         a1, 497(t5)
-                  sh         a0, -1221(t5)
-                  c.lui      t2, 14
-                  sb         s8, 529(t5)
-                  c.addi     s8, -23
-                  ori        a0, gp, 113
-                  lb         t4, 1672(t5)
-                  c.srai     a5, 22
-                  lhu        a7, -1681(t5)
-                  lw         a5, -729(t5)
-                  c.addi     s7, 27
-                  c.slli     s4, 11
-                  c.addi     s1, -25
-                  lhu        a4, 393(t5)
-                  lhu        s1, 639(t5)
-                  sltu       s7, t5, a6
-                  lh         s4, 1899(t5)
-                  auipc      s1, 962489
-                  sh         t1, 1503(t5)
-                  lb         t1, -1680(t5)
-                  lbu        s11, -571(t5)
-                  c.srai     a1, 27
-                  sb         a5, -352(t5)
-                  lhu        zero, 423(t5)
-                  lbu        a4, -1866(t5)
-                  c.srai     a0, 24
-                  c.slli     s11, 15
-                  lui        t2, 479247
-                  slt        t4, s7, a0
-                  mul        t2, a3, t0
-                  lh         s7, -105(t5)
-                  lbu        s6, -554(t5)
-                  sw         zero, -993(t5)
-                  fence
-                  lw         s11, 603(t5)
-                  lui        gp, 985587
-                  lb         t2, -118(t5)
-                  lbu        t4, 1708(t5) #end riscv_load_store_rand_instr_stream_0
-                  auipc      t3, 735589
-                  addi       s2, a6, -1
-                  lui        a3, 77439
-                  c.mv       a1, t5
-                  lui        s6, 146185
-                  c.addi     s3, -6
-                  c.addi     s1, 10
-                  andi       t1, s5, -461
-                  c.addi     a0, 6
-                  c.addi     t6, -27
-                  slli       s3, a1, 14
-                  lui        s10, 667895
-                  auipc      a3, 449642
-                  c.slli     s4, 10
-                  lui        t5, 674181
-                  c.srli     a3, 26
-                  auipc      a0, 156250
-                  slli       a3, s4, 22
-                  c.addi     a0, -14
-                  c.addi     a6, -16
-                  c.slli     a7, 31
-                  c.addi     s1, 13
-                  c.xor      a1, a1
-                  c.lui      s8, 13
-                  nop
-                  lui        a6, 923562
-                  c.slli     s6, 22
-                  c.srli     a1, 2
-                  auipc      s2, 266498
-                  c.addi     s4, 26
-                  c.lui      s1, 5
-                  auipc      s9, 242794
-                  sltu       a2, t2, s6
-                  c.nop
-                  c.srai     a4, 4
-                  c.bnez     a3, 2142f
-                  lui        s6, 477656
-2142:             c.addi     a0, -32
-                  lui        s10, 834685
-                  c.nop
-                  c.lui      a2, 27
-                  mulhsu     s9, gp, gp
-                  c.addi     s5, 22
-                  c.beqz     a1, 2165f
-                  c.addi     a0, 29
-                  remu       a4, t5, t2
-                  c.addi     s5, -20
-                  auipc      a1, 631524
-                  fence.i
-                  add        s8, zero, t1
-                  c.addi     t2, 8
-                  mul        s4, s8, a6
-                  auipc      s3, 807605
-                  auipc      a1, 569270
-                  c.srli     a0, 6
-                  fence.i
-                  c.or       a0, a4
-                  blt        a7, a0, 2165f
-                  c.slli     a6, 13
-                  c.addi     s10, -13
-2165:             c.srai     a1, 11
-                  auipc      a7, 597807
-                  c.slli     t1, 7
-                  auipc      s3, 820927
-                  c.slli     a5, 5
-                  c.addi     s6, -24
-                  lui        a3, 501529
-                  rem        s2, s10, sp
-                  lui        a2, 444421
-                  bltu       a5, s6, 2179f
-                  c.addi     s9, -6
-                  c.slli     s6, 24
-                  srai       a7, t6, 24
-                  c.slli     a0, 21
-                  la         t4, data_page_11+2031 #start riscv_load_store_rand_instr_stream_46
-                  lhu        a4, 571(t4)
-                  c.addi     a2, 19
-                  sh         s10, -231(t4)
-                  fence
-                  lbu        s2, 1425(t4)
-                  c.addi     t5, -20
-                  srai       s4, a2, 2
-                  c.srai     a2, 6
-                  or         s5, s5, s4
-                  sw         s8, -987(t4)
-                  lbu        gp, 628(t4)
-                  c.srai     a5, 8
-                  srli       s1, ra, 1
-                  c.srli     s1, 17
-                  lui        t3, 64349
-                  c.srai     s0, 31
-                  lb         t6, -1773(t4)
-                  sw         tp, 513(t4)
-                  lbu        s0, 534(t4)
-                  sb         s8, 1061(t4)
-                  sb         a6, 653(t4)
-                  c.srai     a0, 21
-                  c.addi     t1, -5
-                  c.lui      s9, 17
-                  lb         s10, -1540(t4)
-                  c.addi     a4, 31
-                  srl        t2, s10, s11
-                  sh         tp, 1199(t4)
-                  lui        s7, 616483
-                  c.srai     a5, 9
-                  c.addi     t3, -17
-                  auipc      a1, 693980
-                  lui        a3, 918384
-                  c.srli     a4, 31
-                  lui        t1, 62385
-                  auipc      s8, 110641
-                  c.srli     a5, 8
-                  lui        t3, 927764
-                  sll        s0, a3, sp
-                  auipc      a7, 1004050
-                  lh         s0, -345(t4)
-                  c.addi     t5, -13
-                  remu       s8, s0, t4
-                  lb         a1, 1922(t4) #end riscv_load_store_rand_instr_stream_46
-2179:             c.addi     a2, -27
-                  c.srli     a4, 25
-                  c.srli     a1, 23
-                  c.srai     a4, 9
-                  lui        a3, 344882
-                  c.beqz     a5, 2191f
-                  c.mv       s6, t6
-                  c.addi     s11, -32
-                  c.addi     s6, -26
-                  lui        t1, 222053
-                  c.srai     a3, 19
-                  c.addi     s8, 16
-2191:             auipc      gp, 149523
-                  c.addi     t5, 2
-                  c.srli     a1, 23
-                  lui        s3, 911036
-                  c.addi     s9, -9
-                  c.lui      s5, 15
-                  c.lui      a0, 13
-                  lui        a4, 716933
-                  c.addi     s5, 1
-                  lui        a3, 268337
-                  c.lui      s1, 4
-                  auipc      t2, 88047
-                  c.srli     a1, 18
-                  bltu       s0, t6, 2211f
-                  c.slli     a0, 10
-                  auipc      s9, 22627
-                  lui        s8, 41080
-                  c.addi     t3, 5
-                  c.addi     s6, 21
-                  c.lui      a3, 9
-2211:             auipc      s7, 442117
-                  auipc      s1, 82412
-                  c.addi     s7, -4
-                  c.srai     a5, 30
-                  c.slli     a0, 13
-                  fence
-                  c.srai     a0, 2
-                  fence
-                  lui        a2, 421872
-                  lui        s10, 138635
-                  slli       t6, s10, 1
-                  auipc      t6, 317496
-                  c.addi     t3, 18
-                  c.lui      a2, 26
-                  c.addi     s5, 10
-                  c.xor      s1, a4
-                  c.addi     s1, 14
-                  auipc      a4, 869127
-                  lui        t4, 186959
-                  bgeu       zero, s10, 2247f
-                  c.lui      a2, 10
-                  c.addi     s11, 20
-                  c.addi     s4, -30
-                  auipc      a4, 786666
-                  c.lui      a3, 5
-                  c.addi     a3, 4
-                  lui        a5, 809502
-                  auipc      a5, 815870
-                  c.lui      s1, 25
-                  c.addi     gp, 11
-                  lui        s11, 973828
-                  c.lui      t2, 7
-                  c.addi     a0, -6
-                  lui        s4, 454012
-                  c.addi     s3, -23
-                  c.addi     t6, -1
-2247:             remu       a0, a4, ra
-                  lui        t3, 407791
-                  c.addi     gp, 23
-                  c.srai     a4, 13
-                  c.addi     s2, 18
-                  c.srai     s1, 16
-                  c.srai     a5, 21
-                  c.addi     t5, -7
-                  c.lui      a7, 21
-                  div        s11, s7, s5
-                  auipc      s8, 782012
-                  c.addi     s0, 3
-                  c.addi     s0, -22
-                  blt        a7, zero, 2275f
-                  auipc      s4, 10255
-                  c.addi     t5, 20
-                  c.addi     a7, -32
-                  c.addi     t4, 22
-                  auipc      t2, 269271
-                  c.lui      a4, 8
-                  c.addi     s0, -15
-                  lui        s3, 273856
-                  lui        s8, 325157
-                  c.slli     t5, 18
-                  c.xor      a1, a0
-                  c.mv       t3, t6
-                  la         t6, data_page_3+1939 #start riscv_load_store_rand_instr_stream_49
-                  lh         t2, -1711(t6)
-                  lb         t5, 1563(t6)
-                  lbu        s0, -714(t6)
-                  lb         a4, 766(t6)
-                  c.addi     s1, -9
-                  c.slli     s8, 15
-                  lbu        s1, -1598(t6)
-                  slli       s3, s11, 15
-                  lbu        s9, 18(t6)
-                  sb         a2, -462(t6)
-                  c.addi     s0, 4
-                  c.addi     s3, -25
-                  lui        s3, 1043585
-                  lui        s5, 1025475
-                  c.addi     t5, 3
-                  lb         t4, -1893(t6)
-                  sb         s9, 947(t6)
-                  sb         t0, 1976(t6)
-                  lb         s3, 1124(t6)
-                  sb         t3, -848(t6)
-                  c.srli     a3, 22
-                  c.srai     a3, 19
-                  lui        a0, 720752
-                  c.slli     a5, 23
-                  sh         tp, 795(t6)
-                  lui        s8, 837920
-                  lbu        a5, 1278(t6)
-                  sb         gp, 1158(t6)
-                  lui        s1, 283922
-                  c.srli     a1, 7
-                  lb         t2, 1854(t6)
-                  srai       s0, a0, 11
-                  sb         s5, 986(t6)
-                  lui        t5, 910330
-                  c.slli     s8, 18
-                  srai       t5, t6, 16
-                  c.slli     s8, 22
-                  lbu        s11, 348(t6)
-                  sltiu      s9, a0, 892
-                  srai       a3, a6, 8
-                  c.slli     s3, 6
-                  c.addi     a3, 21
-                  lui        s3, 220726
-                  lui        t1, 531360
-                  lh         s3, -1851(t6)
-                  lui        zero, 717317
-                  srli       t1, s11, 28
-                  c.slli     s1, 3
-                  auipc      s2, 792136
-                  lh         s3, 591(t6)
-                  sb         a4, 920(t6) #end riscv_load_store_rand_instr_stream_49
-                  c.srai     a3, 5
-                  lui        a1, 315813
-2275:             xori       a5, s6, -479
-                  c.lui      a3, 31
-                  auipc      s3, 218523
-                  la         t1, data_page_2+2040 #start riscv_load_store_rand_instr_stream_67
-                  lb         a5, 235(t1)
-                  lb         a5, -1151(t1)
-                  sb         a7, -229(t1)
-                  c.addi     a2, -21
-                  lbu        zero, 184(t1)
-                  lbu        a5, 1297(t1)
-                  sra        a5, a2, a0
-                  lbu        t2, -891(t1)
-                  lbu        s6, -1601(t1)
-                  lb         s7, 1981(t1)
-                  lb         zero, -1323(t1)
-                  lb         s4, 8(t1)
-                  sb         ra, 1759(t1)
-                  c.mv       s6, a7
-                  lbu        s0, 1841(t1)
-                  lh         s1, -1254(t1)
-                  lb         a3, 1911(t1)
-                  sb         a7, 1401(t1)
-                  lbu        t4, 279(t1)
-                  lb         s2, -1010(t1)
-                  lbu        s3, -99(t1)
-                  c.addi     s5, 1
-                  c.addi     s10, -13
-                  sb         s10, 1187(t1)
-                  lw         s6, 732(t1)
-                  srli       s9, s9, 11
-                  sltiu      t4, a3, -459
-                  lb         s4, -783(t1)
-                  auipc      s11, 876006
-                  c.addi     s8, -7
-                  lb         a3, -1117(t1)
-                  lui        a1, 582596
-                  lui        a7, 849834
-                  auipc      a4, 282879
-                  auipc      a0, 504331
-                  lb         a6, 1409(t1)
-                  lb         t6, -299(t1)
-                  sw         s3, -1128(t1)
-                  lhu        t3, -1450(t1) #end riscv_load_store_rand_instr_stream_67
-                  c.lui      t6, 4
-                  auipc      s0, 727510
-                  c.beqz     a2, 2300f
-                  auipc      t4, 903513
-                  c.lui      a2, 25
-                  mulhsu     s6, s0, sp
-                  c.addi     s4, 4
-                  c.srai     a0, 3
-                  bge        s2, a0, 2305f
-                  auipc      a7, 91755
-                  c.addi     s1, -32
-                  rem        s11, s9, gp
-                  c.srli     a5, 10
-                  auipc      s7, 206659
-                  c.li       a1, -18
-                  auipc      s9, 62901
-                  c.addi     a2, 19
-                  auipc      a4, 18616
-                  fence
-                  c.slli     a0, 17
-                  auipc      t4, 823615
-                  c.srli     a3, 25
-2300:             bltu       s2, s1, 2318f
-                  c.addi     s8, 9
-                  lui        t4, 792282
-                  lui        s2, 1010477
-                  c.lui      t1, 30
-2305:             c.srli     a4, 16
-                  c.srli     a3, 8
-                  c.addi     a5, 23
-                  srli       s8, s8, 22
-                  c.addi     a2, -4
-                  blt        t6, t6, 2323f
-                  auipc      s0, 302692
-                  c.srai     s1, 25
-                  c.srai     a2, 22
-                  auipc      s6, 150518
-                  sltu       s5, zero, t3
-                  auipc      s4, 305021
-                  la         a7, data_page_18+1804 #start riscv_load_store_rand_instr_stream_19
-                  auipc      t5, 923834
-                  sb         a5, 923(a7)
-                  sub        s2, a5, s9
-                  c.addi     a1, 29
-                  c.addi     a6, 3
-                  lhu        zero, 1898(a7)
-                  c.addi     a6, -17
-                  c.srai     a2, 8
-                  c.lui      s6, 20
-                  lb         s10, -1465(a7)
-                  c.slli     t6, 19
-                  c.addi     a2, -32
-                  c.add      a5, a4
-                  c.addi     s4, 3
-                  lh         s2, 148(a7)
-                  lh         t3, -822(a7)
-                  lbu        s2, -1217(a7)
-                  c.lui      s5, 2
-                  lui        t2, 892518
-                  c.slli     a4, 9
-                  auipc      a1, 207232
-                  auipc      t6, 658989
-                  c.srai     a1, 22
-                  c.slli     a5, 6
-                  sb         s6, 521(a7)
-                  lui        s6, 521869
-                  addi       s8, s0, 750
-                  c.xor      a4, a2
-                  c.lui      s2, 28
-                  c.li       s9, 29
-                  lhu        s11, -1254(a7)
-                  addi       s7, t6, -401
-                  c.addi     a3, -27
-                  lhu        s4, 1194(a7)
-                  lui        a4, 851415
-                  xori       s5, a5, 402
-                  divu       s5, t4, s10
-                  lbu        gp, 554(a7) #end riscv_load_store_rand_instr_stream_19
-                  c.addi     t3, 18
-2318:             c.addi     t6, -13
-                  c.srli     s0, 24
-                  c.addi     s6, -24
-                  nop
-                  c.addi     s11, 22
-2323:             c.lui      a3, 23
-                  c.addi     s6, 31
-                  c.addi     gp, 18
-                  c.nop
-                  c.nop
-                  sub        a5, tp, s10
-                  andi       t1, tp, -888
-                  sra        s11, s2, zero
-                  slt        t4, s1, t3
-                  c.andi     s1, 4
-                  bgeu       tp, s9, 2338f
-                  c.addi     s5, 3
-                  lui        s3, 483302
-                  c.addi     t1, 1
-                  lui        a4, 228489
-2338:             c.addi     t5, 23
-                  sra        s3, s2, a5
-                  c.addi     s6, 25
-                  beq        tp, tp, 2359f
-                  lui        a2, 18784
-                  xor        a4, t2, s2
-                  c.srai     a3, 13
-                  c.addi     s1, -20
-                  bne        ra, a2, 2358f
-                  srli       s10, tp, 17
-                  c.srli     s0, 12
-                  c.or       a0, a1
-                  lui        t1, 794980
-                  auipc      a4, 74620
-                  c.addi     s3, -7
-                  xor        s8, a6, s4
-                  lui        zero, 311662
-                  lui        gp, 572792
-                  auipc      s11, 676611
-                  bge        a6, t6, 2359f
-2358:             c.addi     s6, -4
-2359:             c.addi     s7, -27
-                  auipc      s4, 375168
-                  c.slli     s0, 19
-                  lui        s6, 911841
-                  c.srli     a2, 7
-                  sltu       a0, s8, s5
-                  c.lui      t3, 11
-                  lui        s0, 229591
-                  c.slli     s2, 25
-                  slli       a4, t2, 12
-                  c.addi     a5, -9
-                  c.addi     s11, 27
-                  c.srli     a2, 9
-                  c.addi     t3, 28
-                  sll        s0, s4, a0
-                  lui        s8, 785631
-                  c.nop
-                  lui        t5, 610661
-                  c.srli     a0, 27
-                  c.addi     t5, 17
-                  c.addi     s1, 23
-                  lui        t4, 968445
-                  c.srli     a0, 25
-                  c.addi     a4, -18
-                  lui        t1, 651413
-                  lui        s3, 445396
-                  c.addi     s10, -25
-                  auipc      s8, 910745
-                  slt        a7, t5, t4
-                  c.addi     t5, 24
-                  c.addi     s6, -6
-                  c.addi     a1, -31
-                  sra        a2, a6, gp
-                  c.addi     a3, 1
-                  c.add      a5, a4
-                  c.srai     a0, 19
-                  auipc      s1, 201010
-                  auipc      a1, 356128
-                  auipc      zero, 1002468
-                  auipc      t1, 976446
-                  c.addi     s7, 22
-                  srli       a2, t2, 1
-                  c.nop
-                  la         a4, data_page_19+2828 #start riscv_load_store_rand_instr_stream_31
-                  slli       a6, t2, 18
-                  lh         gp, -206(a4)
-                  lb         t6, 170(a4)
-                  c.srai     a1, 4
-                  lb         a6, 250(a4)
-                  c.srai     a0, 4
-                  lhu        s5, -1950(a4)
-                  auipc      t1, 649263
-                  c.addi     a6, -7
-                  sw         sp, -380(a4)
-                  mul        s10, a5, s9
-                  c.addi     t5, -16
-                  c.srai     a3, 7
-                  sh         s7, 514(a4)
-                  lh         a0, -1552(a4)
-                  c.slli     s1, 12
-                  sb         s9, 617(a4)
-                  c.slli     s10, 18
-                  remu       t1, s4, s4
-                  sb         s3, -1198(a4)
-                  lhu        s9, -290(a4)
-                  lbu        s2, 595(a4)
-                  c.addi     a3, 6
-                  c.addi     a3, -30
-                  sub        s2, a5, t2
-                  lw         s6, 1128(a4)
-                  lhu        a0, 1136(a4)
-                  lb         s11, 781(a4)
-                  sb         t1, 372(a4)
-                  lb         s2, 1092(a4)
-                  sb         tp, -1276(a4)
-                  remu       a7, t6, sp
-                  lb         s5, -135(a4)
-                  c.addi     s6, 16
-                  c.slli     a0, 15
-                  lb         s3, -717(a4)
-                  lh         a5, -1332(a4)
-                  lh         gp, -252(a4)
-                  nop
-                  c.addi     s3, -17
-                  sb         tp, -510(a4)
-                  sb         s6, -1901(a4)
-                  lbu        s7, 1150(a4)
-                  lui        s4, 175053
-                  slti       zero, sp, 270
-                  lb         s6, 286(a4)
-                  lb         s2, 437(a4)
-                  lbu        s3, -533(a4)
-                  sb         t0, -1229(a4)
-                  c.or       a0, a3
-                  lbu        a1, 1013(a4)
-                  lbu        s4, 5(a4) #end riscv_load_store_rand_instr_stream_31
-                  divu       a3, s8, a5
-                  auipc      a7, 313251
-                  c.addi     s4, 27
-                  c.addi     s4, 28
-                  c.srli     a4, 31
-                  sltiu      s10, s9, 483
-                  c.srli     s0, 12
-                  c.srli     a2, 29
-                  remu       s3, sp, s2
-                  c.slli     s6, 28
-                  c.addi     t1, 11
-                  sltiu      t4, s4, 264
-                  c.addi     s9, -15
-                  srl        t4, a5, s3
-                  lui        s11, 515051
-                  lui        s11, 179595
-                  c.srli     a4, 8
-                  auipc      a1, 820305
-                  c.addi     s11, -16
-                  auipc      gp, 362245
-                  c.slli     a3, 28
-                  sra        a2, gp, t4
-                  c.srai     a2, 3
-                  c.addi     t5, 19
-                  c.lui      a6, 14
-                  c.addi     s11, -8
-                  c.sub      a3, a0
-                  c.lui      a4, 13
-                  c.srli     a5, 16
-                  c.slli     s4, 20
-                  add        a2, a4, t3
-                  auipc      a0, 785446
-                  c.addi     s9, -28
-                  c.addi     a2, -26
-                  c.addi     s11, 4
-                  c.andi     a5, 5
-                  lui        zero, 737329
-                  mul        s11, a5, s4
-                  c.addi     s9, 12
-                  slti       gp, s9, -354
-                  c.slli     gp, 12
-                  c.addi     a7, 12
-                  c.slli     a3, 28
-                  lui        s10, 87200
-                  c.srai     a5, 26
-                  c.slli     a7, 27
-                  c.srli     s0, 11
-                  lui        a3, 749113
-                  c.addi     t2, 28
-                  c.xor      s1, s1
-                  c.addi     s10, 3
-                  srai       s2, a1, 3
-                  c.lui      a5, 24
-                  c.srai     a0, 27
-                  c.slli     t6, 16
-                  c.nop
-                  bge        a5, t5, 2475f
-                  auipc      s10, 4157
-                  la         a1, data_page_0+2419 #start riscv_load_store_rand_instr_stream_41
-                  sb         a3, -186(a1)
-                  auipc      a7, 968141
-                  sh         t1, 433(a1)
-                  lbu        a5, -461(a1)
-                  lbu        s3, 1406(a1)
-                  srl        a2, s11, t0
-                  c.srai     a2, 2
-                  lbu        a3, 959(a1)
-                  lb         a7, 1102(a1)
-                  mul        s0, t2, s10
-                  lb         a7, -1627(a1)
-                  lb         s7, -740(a1)
-                  ori        a4, s9, 549
-                  sb         t1, -388(a1)
-                  lb         s10, -536(a1)
-                  lh         t1, -1991(a1)
-                  lbu        a4, -1318(a1)
-                  lb         t5, -781(a1)
-                  sb         a4, -1693(a1)
-                  ori        zero, s4, 775
-                  lbu        a3, 1648(a1)
-                  c.addi     s11, 19
-                  lb         a6, -1501(a1)
-                  lb         t2, -1676(a1)
-                  c.slli     t6, 11
-                  sb         s3, 538(a1)
-                  auipc      s9, 983074
-                  lbu        s1, 1386(a1)
-                  sb         t6, 1107(a1)
-                  c.srli     a3, 9
-                  sb         s8, -1666(a1)
-                  c.addi     a4, -30
-                  lb         a4, 1546(a1)
-                  mulhu      s8, a3, s2
-                  sh         t3, 1125(a1)
-                  lb         t3, -1705(a1) #end riscv_load_store_rand_instr_stream_41
-                  c.addi     s11, -16
-                  mulh       a6, t2, s6
-                  c.addi     t1, -19
-                  lui        zero, 700553
-                  div        a1, s7, t0
-                  c.addi     s9, -26
-                  c.addi     a0, 20
-                  c.srai     a1, 22
-                  c.srli     s0, 20
-                  c.addi     gp, -31
-                  divu       s4, s5, a4
-                  c.slli     s6, 17
-                  c.addi     a6, 9
-                  c.slli     s9, 12
-                  lui        t2, 902839
-2475:             c.add      a4, a5
-                  fence
-                  c.lui      a6, 7
-                  c.nop
-                  c.addi     s2, 24
-                  srl        a6, s9, t4
-                  mulhu      s9, s0, s2
-                  auipc      t2, 785640
-                  srli       t1, a7, 10
-                  slli       a1, ra, 13
-                  lui        a2, 492005
-                  c.addi     t6, -16
-                  c.addi     t1, 19
-                  c.addi     s2, 2
-                  c.srai     s1, 20
-                  c.addi     t2, -25
-                  auipc      a4, 323929
-                  lui        t4, 864476
-                  auipc      gp, 311801
-                  c.addi     t4, 30
-                  srl        a7, t3, tp
-                  c.srai     a2, 2
-                  c.addi     a2, 16
-                  sub        s10, s3, gp
-                  lui        t6, 91381
-                  c.srli     a4, 7
-                  c.slli     t1, 30
-                  c.addi     t2, -20
-                  or         gp, s6, a2
-                  c.addi     s10, -32
-                  c.addi     s6, 1
-                  bgeu       t3, t1, 2516f
-                  c.addi     a5, 21
-                  lui        a6, 539752
-                  c.srai     s1, 29
-                  auipc      a5, 258905
-                  lui        a1, 856988
-                  mulh       a7, a7, s8
-                  c.addi     a7, -28
-                  c.lui      s7, 14
-                  la         s0, data_page_8+2125 #start riscv_load_store_rand_instr_stream_2
-                  lw         a6, 1515(s0)
-                  lb         t4, 1130(s0)
-                  srli       a6, s2, 19
-                  sb         a0, -1356(s0)
-                  c.sub      a0, s0
-                  lhu        t1, -1093(s0)
-                  sb         t4, 164(s0)
-                  rem        s4, t5, t5
-                  lb         a3, -1726(s0)
-                  lbu        s1, -1338(s0)
-                  add        s7, a3, t3
-                  c.addi     t3, -1
-                  auipc      s11, 144141
-                  lb         a2, 1006(s0)
-                  c.srli     a0, 20
-                  auipc      gp, 162967
-                  c.lui      a6, 21
-                  auipc      a4, 888620
-                  lb         t6, 260(s0)
-                  sb         s4, -740(s0)
-                  lb         a1, 1146(s0)
-                  sb         ra, -448(s0)
-                  lui        a0, 111746
-                  lbu        a1, 141(s0)
-                  auipc      s10, 873882
-                  sltu       a1, s5, tp
-                  sw         s6, -473(s0)
-                  lhu        t6, 1719(s0)
-                  lbu        t1, 1607(s0)
-                  lui        t2, 939958
-                  lb         gp, -1147(s0)
-                  c.srli     a2, 22
-                  lb         s8, -1186(s0)
-                  lb         s3, -1570(s0)
-                  lbu        s2, 30(s0) #end riscv_load_store_rand_instr_stream_2
-                  c.slli     s3, 29
-2516:             c.addi     s2, -20
-                  andi       s4, s5, -666
-                  c.addi     s1, 16
-                  c.xor      a4, a5
-                  c.addi     t1, 21
-                  c.lui      t2, 1
-                  srli       s10, a4, 27
-                  c.slli     t5, 29
-                  c.or       a4, a2
-                  c.lui      s7, 14
-                  c.lui      a3, 2
-                  c.slli     t4, 3
-                  auipc      t3, 45033
-                  c.addi     a4, 27
-                  c.slli     s11, 31
-                  lui        s11, 666960
-                  c.lui      a1, 22
-                  c.srai     s1, 26
-                  c.addi     a4, 5
-                  c.lui      a6, 14
-                  c.addi     a7, 12
-                  c.srai     s0, 4
-                  auipc      a3, 588044
-                  c.srai     a0, 16
-                  or         s0, t3, zero
-                  c.srli     a0, 6
-                  c.addi     s2, -29
-                  c.addi     a5, -18
-                  auipc      a6, 694129
-                  c.addi     s2, -21
-                  c.lui      t4, 30
-                  c.lui      s10, 17
-                  c.bnez     a5, 2552f
-                  c.addi     s0, -20
-                  c.addi     t4, 21
-                  fence.i
-2552:             c.slli     a2, 15
-                  blt        s9, zero, 2569f
-                  c.addi     s11, 24
-                  c.xor      s1, s0
-                  c.lui      s4, 8
-                  slli       t4, s11, 15
-                  sll        s7, s0, s5
-                  auipc      a0, 841525
-                  c.addi     t3, -17
-                  c.sub      a2, s1
-                  andi       s9, t1, 860
-                  auipc      s6, 664865
-                  lui        t3, 549283
-                  c.lui      t3, 11
-                  c.addi     s2, -10
-                  addi       a7, a5, 337
-                  srl        s1, t1, t0
-2569:             c.addi     s4, -10
-                  c.srai     a5, 24
-                  sub        s6, zero, s9
-                  auipc      s9, 460186
-                  beq        s10, a2, 2588f
-                  lui        a7, 457644
-                  bge        t1, t6, 2576f
-2576:             lui        s8, 85532
-                  c.slli     a3, 30
-                  c.or       a4, a4
-                  auipc      s6, 11396
-                  c.xor      a4, a0
-                  addi       s0, s11, 404
-                  bltu       a3, s7, 2588f
-                  c.lui      t3, 7
-                  c.lui      t1, 19
-                  c.addi     s11, -13
-                  sub        a2, ra, t6
-                  c.addi     s7, -20
-2588:             lui        t3, 433658
-                  c.srai     a4, 18
-                  nop
-                  andi       zero, a0, -698
-                  lui        s11, 491966
-                  auipc      s2, 222743
-                  c.addi     s4, -24
-                  sll        t1, ra, t6
-                  auipc      a3, 888777
-                  c.addi     t3, 6
-                  slt        s3, s1, s0
-                  lui        a2, 649583
-                  bge        t5, tp, 2608f
-                  auipc      t1, 1047723
-                  sll        t5, s0, s8
-                  c.addi     s10, -27
-                  andi       gp, a0, -1023
-                  fence
-                  fence
-                  c.addi     s0, -13
-2608:             auipc      t2, 90273
-                  auipc      t1, 623272
-                  mul        a1, a0, s5
-                  c.srli     a0, 2
-                  c.addi     s6, 9
-                  srl        s8, s10, a0
-                  c.addi     s2, 16
-                  lui        a5, 155746
-                  c.addi     s7, 26
-                  c.slli     s0, 10
-                  c.addi     a7, 25
-                  c.slli     t2, 15
-                  auipc      s8, 274680
-                  c.addi     a7, 8
-                  c.addi     s6, -32
-                  and        s1, s9, s4
-                  c.addi     a3, -30
-                  c.add      a5, a5
-                  beq        s11, t2, 2644f
-                  c.lui      a6, 3
-                  add        t6, t1, t3
-                  c.srli     a3, 2
-                  blt        s11, ra, 2650f
-                  c.slli     t2, 25
-                  addi       a3, t6, -539
-                  div        s4, a1, a3
-                  c.srai     a0, 20
-                  c.addi     a2, -8
-                  c.nop
-                  c.nop
-                  c.srli     s1, 5
-                  c.addi     s4, 8
-                  la         s3, data_page_15+1831 #start riscv_load_store_rand_instr_stream_38
-                  c.lui      s2, 28
-                  c.addi     t6, 17
-                  c.slli     s7, 28
-                  lh         zero, 1681(s3)
-                  sh         sp, 1667(s3)
-                  sb         tp, -1457(s3)
-                  fence.i
-                  lhu        s9, -289(s3)
-                  lb         a1, 1728(s3)
-                  auipc      a6, 41648
-                  srai       t6, s0, 28
-                  c.srai     a4, 29
-                  lui        s4, 23064
-                  lbu        a3, 1140(s3)
-                  sb         s1, -107(s3)
-                  auipc      s11, 805943
-                  c.andi     a0, 17
-                  sb         s7, 1279(s3)
-                  div        s8, s8, t6
-                  c.lui      a0, 16
-                  c.slli     t1, 22
-                  fence.i
-                  lh         t4, -1283(s3)
-                  sb         t1, -503(s3)
-                  lhu        a6, -417(s3)
-                  c.srai     a4, 8
-                  lbu        t5, 194(s3)
-                  c.add      a2, a3
-                  lhu        t4, -1295(s3)
-                  sb         a5, 685(s3)
-                  c.addi     t5, 14
-                  c.addi     a4, 29
-                  sh         ra, -209(s3)
-                  c.addi     t4, 27
-                  sh         s4, -1809(s3)
-                  xori       s9, s11, -100
-                  c.add      a1, s1
-                  c.srai     a4, 10
-                  nop
-                  auipc      t4, 315074
-                  lb         s11, -1300(s3)
-                  lui        t1, 285538
-                  sb         s11, -1062(s3)
-                  xor        t6, t2, s2
-                  sb         s2, 1626(s3)
-                  c.li       a4, -26
-                  c.xor      a5, a5
-                  sw         t6, 2009(s3)
-                  lbu        t5, 1812(s3)
-                  c.addi     s2, -16
-                  lh         s2, 551(s3)
-                  sb         a7, -1165(s3)
-                  c.addi     s1, -6
-                  lhu        a1, 1771(s3)
-                  sh         t4, -727(s3) #end riscv_load_store_rand_instr_stream_38
-                  la         s10, data_page_7+1936 #start riscv_load_store_rand_instr_stream_50
-                  c.addi     s6, 20
-                  lbu        s0, -319(s10)
-                  lb         t6, 1624(s10)
-                  lhu        a7, -1042(s10)
-                  lb         s0, -1589(s10)
-                  c.addi     s3, 15
-                  lb         a1, 1836(s10)
-                  c.lui      t2, 24
-                  c.addi     a1, 4
-                  lb         t3, 1205(s10)
-                  c.srli     a3, 20
-                  sb         t1, 879(s10)
-                  sra        t6, s5, a1
-                  auipc      a5, 853821
-                  auipc      a3, 176264
-                  lui        t4, 926852
-                  lb         s6, 1347(s10)
-                  lb         a2, 1065(s10)
-                  sb         gp, -685(s10)
-                  c.xor      s1, a1
-                  lbu        s7, -557(s10)
-                  lb         s5, -1215(s10)
-                  c.addi     t1, -19
-                  lbu        t3, 969(s10)
-                  lbu        s8, 1140(s10)
-                  sb         a4, -569(s10)
-                  lui        a7, 132380
-                  lb         s5, -240(s10)
-                  lui        s0, 213497
-                  auipc      a4, 209883
-                  lhu        t6, 686(s10)
-                  sb         s3, -1009(s10)
-                  c.slli     t4, 30
-                  lbu        s9, 987(s10)
-                  c.mv       s6, a5
-                  sb         s3, 585(s10)
-                  lbu        t3, 633(s10) #end riscv_load_store_rand_instr_stream_50
-                  c.slli     t3, 2
-                  c.addi     s0, -5
-                  auipc      a0, 634640
-                  lui        s7, 731993
-2644:             c.addi     a3, -7
-                  c.addi     t5, -11
-                  c.srai     a4, 19
-                  c.srai     a2, 5
-                  lui        s3, 52963
-                  c.add      a0, a2
-2650:             lui        s1, 388621
-                  c.addi     a5, 31
-                  xor        a6, s1, tp
-                  sll        s1, zero, t6
-                  c.addi     a6, 29
-                  xori       s1, tp, 403
-                  c.addi     a7, -15
-                  andi       s0, a0, -1010
-                  la         s2, data_page_14+2190 #start riscv_load_store_rand_instr_stream_61
-                  c.slli     t1, 8
-                  c.lui      s1, 22
-                  slt        t6, t1, s2
-                  lb         s8, 233(s2)
-                  c.xor      a2, s0
-                  lb         a7, 1813(s2)
-                  auipc      a7, 555858
-                  lb         s6, 1001(s2)
-                  c.addi     s8, 22
-                  sb         a4, -255(s2)
-                  lbu        zero, 389(s2)
-                  sb         s6, 1257(s2)
-                  sh         t0, -1898(s2)
-                  auipc      s7, 467484
-                  lbu        s11, -753(s2)
-                  lh         a1, 1280(s2)
-                  sh         ra, -536(s2)
-                  andi       gp, s9, 629
-                  auipc      s9, 579468
-                  c.lui      s0, 6
-                  sb         sp, 259(s2)
-                  c.slli     t6, 25
-                  sb         s0, -685(s2)
-                  c.srai     a2, 29
-                  sb         a0, -1021(s2)
-                  and        a3, a5, t1
-                  c.addi     s6, 9
-                  sb         s10, -597(s2)
-                  c.srli     a2, 15
-                  nop
-                  auipc      a0, 161872
-                  sub        t3, t1, ra
-                  c.addi     s7, -9
-                  auipc      a4, 794185
-                  lbu        s1, 1206(s2)
-                  c.srai     a1, 11
-                  lb         t3, -1893(s2)
-                  lb         s6, 356(s2)
-                  c.addi     a4, 22
-                  andi       a0, a3, 907
-                  lbu        s10, -2046(s2)
-                  lbu        a6, -650(s2)
-                  lbu        t3, -1600(s2)
-                  lb         t4, 803(s2)
-                  auipc      t2, 229542
-                  c.nop
-                  lh         t2, 0(s2)
-                  xori       s5, t1, -145
-                  lui        a7, 6301
-                  c.srai     a3, 2
-                  c.srli     a1, 10
-                  sb         s1, 869(s2)
-                  sb         t1, 918(s2)
-                  lui        s6, 189018
-                  lhu        t4, 1816(s2)
-                  lb         gp, 353(s2) #end riscv_load_store_rand_instr_stream_61
-                  c.slli     s5, 26
-                  auipc      s2, 551348
-                  andi       t3, t5, -408
-                  auipc      zero, 706677
-                  c.addi     s5, 2
-                  auipc      s1, 297993
-                  fence
-                  bge        t2, s7, 2682f
-                  lui        s9, 1028582
-                  and        s7, a4, a2
-                  c.addi     a4, 8
-                  c.srai     a1, 7
-                  c.addi     a5, 8
-                  c.or       a5, a1
-                  c.addi     a4, -16
-                  auipc      t5, 322131
-                  beq        t6, t5, 2694f
-                  c.addi     t6, 13
-                  fence.i
-                  c.addi     s11, -9
-                  c.addi     a2, -4
-                  auipc      s3, 738218
-                  auipc      s6, 506319
-                  c.addi     a1, -23
-2682:             srli       gp, s6, 14
-                  lui        s10, 170574
-                  c.addi     a4, -26
-                  c.srai     a0, 13
-                  c.srai     s0, 10
-                  c.srli     a3, 7
-                  slli       a2, a7, 4
-                  lui        s9, 491907
-                  lui        t3, 862907
-                  lui        s7, 297531
-                  andi       s10, a6, 781
-                  lui        t3, 1041433
-2694:             c.addi     a3, 26
-                  c.srai     s1, 13
-                  c.addi     s11, 14
-                  lui        t6, 909931
-                  auipc      s9, 200616
-                  c.sub      a1, a1
-                  c.lui      a6, 17
-                  auipc      a2, 162863
-                  lui        s6, 641093
-                  auipc      s0, 213529
-                  c.addi     s1, 30
-                  c.addi     s10, 27
-                  xor        s4, a7, a5
-                  auipc      t1, 163842
-                  c.andi     a3, 26
-                  lui        s9, 1008752
-                  c.addi     t3, -18
-                  mulh       s11, t3, a0
-                  c.addi     s6, -4
-                  c.slli     s5, 5
-                  c.lui      t4, 5
-                  c.slli     t3, 26
-                  div        s2, a6, s8
-                  auipc      t3, 211174
-                  c.addi     t3, 28
-                  lui        a7, 673468
-                  c.srai     a2, 8
-                  lui        a2, 589829
-                  lui        s3, 988449
-                  lui        s3, 135151
-                  sll        s9, t6, a4
-                  lui        t4, 575899
-                  c.srli     a4, 11
-                  c.addi     s7, -16
-                  c.addi     a4, -20
-                  c.slli     s9, 26
-                  c.addi     t1, -5
-                  auipc      t6, 549703
-                  c.addi     s1, 11
-                  c.addi     t5, 10
-                  lui        a2, 655698
-                  nop
-                  auipc      s10, 565116
-                  c.addi     a1, 9
-                  c.lui      s10, 8
-                  lui        s8, 501949
-                  xori       s8, a0, -705
-                  mul        a4, a2, sp
-                  lui        s2, 871933
-                  c.add      a4, a4
-                  auipc      s8, 63719
-                  c.addi     s9, 19
-                  auipc      s7, 812065
-                  auipc      s7, 361570
-                  c.srli     a0, 5
-                  c.srai     a5, 21
-                  lui        t6, 22804
-                  c.slli     a2, 29
-                  c.addi     a6, 3
-                  c.addi     t4, -13
-                  beq        tp, s4, 2772f
-                  c.srai     a1, 14
-                  auipc      s9, 112328
-                  c.xor      a0, a1
-                  c.addi     a1, 13
-                  c.addi     a2, 15
-                  c.srai     a4, 16
-                  c.addi     t6, 27
-                  c.mv       t4, t3
-                  lui        s9, 843665
-                  c.mv       a2, s8
-                  beq        a2, s0, 2784f
-                  c.srai     s1, 4
-                  c.srli     s0, 18
-                  c.srli     a4, 12
-                  c.and      a1, a1
-                  bltu       t3, a1, 2780f
-                  c.nop
-2772:             c.srai     a5, 22
-                  lui        s3, 192841
-                  lui        s4, 982267
-                  c.addi     s4, 13
-                  c.li       s4, -12
-                  bge        t5, t2, 2791f
-                  c.addi     s0, -12
-                  remu       s1, s1, ra
-2780:             c.addi     a1, 23
-                  c.slli     s10, 27
-                  lui        s4, 793059
-                  lui        s1, 856929
-2784:             c.srli     a0, 31
-                  c.slli     s11, 31
-                  c.slli     s5, 2
-                  c.slli     a2, 22
-                  slti       a4, t2, -595
-                  c.addi     s2, 18
-                  c.andi     a1, -7
-2791:             c.srli     s0, 10
-                  auipc      t4, 579795
-                  mulh       a0, t0, s5
-                  c.addi     s11, 30
-                  c.add      a1, s1
-                  c.addi     s10, -4
-                  lui        s2, 456639
-                  la         gp, data_page_1+1826 #start riscv_load_store_rand_instr_stream_55
-                  lbu        a5, 1910(gp)
-                  lbu        t6, -1653(gp)
-                  c.xor      a0, a2
-                  lui        s9, 644750
-                  lbu        a6, 299(gp)
-                  lbu        s10, 968(gp)
-                  c.slli     s7, 27
-                  sb         s7, -515(gp)
-                  sb         a1, 1045(gp)
-                  auipc      t4, 636552
-                  sb         sp, -981(gp)
-                  c.slli     s10, 23
-                  lb         s9, -1729(gp)
-                  lhu        s2, 314(gp)
-                  fence
-                  lhu        a2, 1252(gp)
-                  c.addi     t1, -16
-                  c.lui      s1, 15
-                  c.srli     s0, 25
-                  c.srli     a2, 16
-                  lb         a0, -1273(gp)
-                  c.addi     a1, 17
-                  srli       s5, zero, 2
-                  sb         zero, -1647(gp)
-                  c.srai     a4, 10
-                  lbu        t3, 1367(gp)
-                  sll        t2, a1, s0
-                  c.addi     a4, 15
-                  c.addi     t5, -9
-                  auipc      a5, 144588
-                  c.addi     a5, 15
-                  sb         s8, 772(gp)
-                  c.addi     a2, -25
-                  lbu        t1, -1802(gp)
-                  lbu        s5, -73(gp)
-                  divu       s7, s7, s9
-                  sb         s2, 967(gp)
-                  sh         t5, 146(gp)
-                  c.slli     s3, 23
-                  lh         s9, -40(gp) #end riscv_load_store_rand_instr_stream_55
-                  c.addi     a3, -9
-                  remu       s7, t2, s2
-                  c.addi     a3, -25
-                  lui        s11, 78300
-                  c.addi     s9, 28
-                  c.srai     s0, 9
-                  c.addi     s11, 18
-                  lui        t5, 1013736
-                  c.mv       t3, ra
-                  lui        a3, 346460
-                  c.srai     s0, 10
-                  c.addi     a7, 24
-                  c.slli     t6, 18
-                  c.addi     s4, 6
-                  auipc      s6, 553960
-                  c.addi     s5, 7
-                  c.srli     a2, 19
-                  auipc      t2, 466109
-                  c.or       a0, a3
-                  c.srli     s0, 7
-                  c.addi     s8, -1
-                  lui        t6, 200609
-                  slti       s4, s11, -683
-                  c.lui      s7, 8
-                  lui        s2, 209606
-                  lui        s3, 998287
-                  auipc      a1, 217922
-                  c.slli     t6, 18
-                  c.li       gp, -16
-                  c.add      a3, a4
-                  la         s2, data_page_10+2220 #start riscv_load_store_rand_instr_stream_37
-                  add        a1, t4, tp
-                  c.srli     a4, 13
-                  ori        t6, t2, -623
-                  lbu        s8, -1789(s2)
-                  c.srli     a2, 30
-                  auipc      a6, 504941
-                  c.addi     t1, -23
-                  lb         t6, -551(s2)
-                  lb         a0, 1172(s2)
-                  lui        t1, 53052
-                  c.addi     a7, -17
-                  sb         t4, -1135(s2)
-                  lh         s7, 1268(s2)
-                  sb         sp, 547(s2)
-                  auipc      a4, 501497
-                  c.srli     a1, 23
-                  lbu        t2, 1365(s2)
-                  srl        gp, s8, s0
-                  c.slli     t6, 27
-                  sb         a5, -16(s2)
-                  sh         t6, -1104(s2)
-                  lb         t3, 1048(s2)
-                  lbu        s1, -265(s2)
-                  fence
-                  c.addi     t5, -23
-                  lb         t1, -1214(s2)
-                  lbu        a7, 959(s2)
-                  lhu        gp, -608(s2)
-                  lbu        a0, 1285(s2)
-                  lhu        s8, 312(s2) #end riscv_load_store_rand_instr_stream_37
-                  divu       s2, s8, tp
-                  mul        s5, t4, s11
-                  c.addi     s4, -5
-                  c.addi     s11, -11
-                  auipc      zero, 451361
-                  c.addi     t3, 27
-                  c.addi     a5, -20
-                  c.srai     a0, 11
-                  auipc      s5, 752879
-                  xor        s4, s10, s5
-                  addi       a5, sp, 518
-                  c.lui      s0, 30
-                  lui        s0, 579577
-                  srai       s5, a0, 16
-                  c.addi     s6, 20
-                  sub        a4, t5, s8
-                  xor        s4, t0, t5
-                  auipc      t6, 758666
-                  auipc      s5, 340144
-                  slli       t3, a4, 11
-                  c.addi     a4, -10
-                  lui        a0, 706266
-                  lui        t5, 212987
-                  c.srli     a0, 25
-                  c.addi     t1, 1
-                  auipc      a7, 237374
-                  c.addi     t1, -6
-                  c.addi     t3, 12
-                  c.addi     a6, -6
-                  c.addi     s2, -20
-                  c.addi     a7, 29
-                  c.srli     a2, 10
-                  lui        s6, 782631
-                  nop
-                  slt        t2, a0, t1
-                  slti       gp, s10, -655
-                  c.lui      a3, 6
-                  c.addi     a5, -10
-                  c.addi     s4, -24
-                  c.lui      t5, 17
-                  auipc      gp, 258890
-                  c.add      s1, a4
-                  auipc      t1, 457915
-                  c.srai     a1, 11
-                  c.srli     a2, 20
-                  c.addi     a0, 29
-                  xori       a7, a5, 695
-                  rem        a2, t2, s2
-                  c.add      a0, a1
-                  c.srli     a4, 31
-                  c.addi     s1, -28
-                  auipc      t6, 307432
-                  lui        a2, 824088
-                  fence.i
-                  and        s3, a5, a5
-                  c.addi     s5, -8
-                  auipc      s11, 88457
-                  c.srli     a0, 28
-                  lui        s11, 30545
-                  c.addi     a0, 22
-                  auipc      s4, 96594
-                  srl        s2, tp, s9
-                  c.lui      a5, 8
-                  c.lui      a0, 15
-                  c.addi     s4, 10
-                  c.srai     a2, 25
-                  c.srli     a0, 18
-                  c.addi     s5, -22
-                  c.addi     a7, 10
-                  lui        s9, 5235
-                  lui        t6, 700972
-                  c.li       s6, 4
-                  c.mv       gp, t4
-                  c.addi     t6, 31
-                  c.srai     a0, 23
-                  auipc      s2, 488494
-                  c.addi     a2, -6
-                  lui        s5, 662233
-                  c.andi     a4, 11
-                  lui        a7, 248149
-                  c.srai     a5, 28
-                  c.addi     a7, 2
-                  srli       a2, ra, 0
-                  c.sub      a0, a0
-                  sltu       t4, gp, t0
-                  c.srai     a5, 1
-                  c.addi     s7, 27
-                  lui        s7, 653010
-                  bge        s3, a4, 2920f
-                  c.addi     s9, -18
-                  c.slli     a1, 20
-                  c.srai     a0, 15
-2920:             c.xor      s1, s1
-                  c.addi     s11, -14
-                  divu       s5, a2, s10
-                  lui        t5, 385855
-                  lui        s6, 572925
-                  c.slli     s1, 11
-                  c.srai     a1, 2
-                  c.addi     s6, 22
-                  c.add      a2, a1
-                  c.addi     a7, 20
-                  c.lui      a2, 10
-                  c.addi     s8, -14
-                  c.addi     a0, 24
-                  c.addi     t6, -31
-                  c.lui      t5, 6
-                  bge        s7, t0, 2953f
-                  auipc      t5, 310764
-                  c.addi     s7, 14
-                  srli       t2, s7, 31
-                  slt        a7, t3, s8
-                  c.addi     a0, 25
-                  c.addi     s2, -24
-                  srli       s2, t6, 10
-                  auipc      s3, 1012994
-                  c.slli     s2, 4
-                  c.srli     a5, 14
-                  c.slli     s2, 31
-                  lui        t6, 179583
-                  c.addi     a5, 19
-                  c.addi     a1, -4
-                  c.addi     s9, 29
-                  c.srai     a1, 25
-                  c.addi     t6, 20
-2953:             c.addi     s2, 5
-                  auipc      a4, 925480
-                  c.srai     a2, 15
-                  c.addi     t5, -24
-                  auipc      s10, 147051
-                  lui        s1, 364357
-                  remu       s7, s9, s0
-                  auipc      s8, 657167
-                  lui        a5, 804981
-                  c.lui      s5, 28
-                  c.srli     a3, 1
-                  c.srai     s1, 25
-                  auipc      a3, 467140
-                  c.or       a4, a3
-                  c.addi     a6, -7
-                  c.addi     t4, -17
-                  c.addi     s6, -4
-                  c.addi     t5, -24
-                  c.lui      s10, 20
-                  auipc      t2, 399589
-                  auipc      s11, 856240
-                  c.addi     t6, 26
-                  c.addi     s9, 29
-                  c.slli     a5, 28
-                  c.addi     s3, -24
-                  c.srli     a4, 10
-                  c.or       a2, s1
-                  c.li       s11, -19
-                  c.addi     s1, -16
-                  add        s1, s3, s10
-                  c.srli     a1, 21
-                  c.srai     s1, 21
-                  auipc      gp, 645966
-                  auipc      s11, 533920
-                  c.addi     gp, 3
-                  auipc      t3, 965730
-                  lui        t3, 205092
-                  c.nop
-                  c.srli     a4, 26
-                  c.addi     t3, -25
-                  c.addi     s3, -20
-                  lui        s11, 1024783
-                  c.srai     a0, 11
-                  c.addi     s4, -30
-                  nop
-                  c.srli     a4, 10
-                  auipc      t3, 655833
-                  auipc      s3, 788937
-                  auipc      t3, 632490
-                  c.xor      a2, a5
-                  c.addi     s7, -19
-                  c.srai     a0, 24
-                  c.lui      t6, 8
-                  c.slli     a2, 17
-                  remu       t3, t4, s11
-                  c.and      a4, a0
-                  c.addi     s0, 27
-                  c.srai     a3, 27
-                  c.addi     a6, -11
-                  auipc      s10, 1018261
-                  c.addi     a0, 29
-                  lui        a4, 908091
-                  c.lui      t5, 6
-                  auipc      a2, 900968
-                  srai       s1, s5, 25
-                  srl        s10, zero, s9
-                  lui        gp, 588766
-                  auipc      a4, 793097
-                  c.addi     s2, -11
-                  auipc      a6, 674430
-                  xor        zero, a3, s8
-                  c.srai     a3, 9
-                  auipc      a6, 493605
-                  c.srai     a0, 3
-                  and        s7, t5, s1
-                  c.addi     s2, -29
-                  c.srai     a5, 5
-                  c.nop
-                  c.addi     a3, 23
-                  lui        s6, 1033511
-                  c.li       a0, 5
-                  add        t2, s10, a2
-                  c.addi     t4, -8
-                  c.lui      s5, 8
-                  c.slli     t5, 28
-                  c.or       a2, s1
-                  c.addi     s8, -23
-                  lui        zero, 771279
-                  c.addi     t5, -8
-                  c.addi     s8, -26
-                  c.addi     s6, -2
-                  c.addi     gp, 12
-                  c.addi     t4, 17
-                  c.addi     gp, 12
-                  c.li       t4, 11
-                  auipc      a2, 553150
-                  c.addi     a7, -18
-                  fence
-                  c.addi     t6, 16
-                  c.addi     s1, -11
-                  rem        s3, s2, s0
-                  c.srai     a2, 3
-                  lui        s3, 391379
-                  c.add      a5, s1
-                  addi       a7, t2, -407
-                  c.slli     s2, 10
-                  xori       a1, t3, 227
-                  c.srli     a1, 15
-                  c.addi     gp, -7
-                  slti       a7, zero, -593
-                  lui        s2, 647404
-                  c.lui      s10, 26
-                  c.li       s0, 17
-                  auipc      s10, 154735
-                  c.srai     a3, 5
-                  c.srli     a2, 18
-                  c.slli     a5, 27
-                  auipc      s7, 662206
-                  c.slli     s5, 23
-                  blt        t2, gp, 3079f
-                  c.addi     s8, -11
-                  lui        s10, 714651
-                  c.slli     a5, 29
-                  c.srai     a3, 7
-                  and        s6, a2, gp
-                  c.addi     a6, -25
-3079:             c.srai     a2, 29
-                  c.addi     a3, 12
-                  c.srai     a0, 22
-                  c.slli     a2, 29
-                  c.addi     s4, 16
-                  c.addi     s9, 11
-                  c.addi     t5, 30
-                  c.lui      t3, 11
-                  c.lui      t6, 5
-                  remu       gp, a5, tp
-                  beq        gp, s6, 3105f
-                  c.srai     a4, 17
-                  c.slli     a6, 6
-                  c.srai     a4, 6
-                  c.addi     s2, 20
-                  c.addi     s7, -22
-                  bgeu       s1, s9, 3099f
-                  c.lui      s5, 12
-                  c.slli     s1, 22
-                  and        s3, a0, ra
-3099:             auipc      s10, 730837
-                  auipc      t1, 443011
-                  mulhu      t1, sp, zero
-                  c.addi     s2, -3
-                  bltu       t2, s3, 3116f
-                  auipc      a2, 400899
-3105:             auipc      s6, 57656
-                  c.mv       a1, s6
-                  c.nop
-                  auipc      t5, 577912
-                  auipc      s2, 874064
-                  divu       s10, s11, t5
-                  c.andi     a2, 12
-                  c.lui      t4, 18
-                  c.addi     a0, 11
-                  and        s4, gp, t3
-                  c.slli     a1, 24
-3116:             c.addi     t4, 2
-                  c.addi     t4, 19
-                  c.srai     a4, 10
-                  auipc      gp, 675734
-                  div        a2, s8, t6
-                  c.lui      s1, 28
-                  c.addi     s1, 9
-                  lui        a7, 350061
-                  c.slli     gp, 20
-                  lui        s5, 581130
-                  auipc      s2, 400731
-                  c.addi     s9, 22
-                  auipc      s11, 114308
-                  c.srli     a4, 4
-                  c.srai     a3, 27
-                  c.lui      s0, 7
-                  srl        s3, s0, s10
-                  xor        t2, zero, t3
-                  c.lui      t3, 4
-                  or         gp, tp, s7
-                  c.nop
-                  c.addi     s1, 31
-                  auipc      zero, 244823
-                  fence.i
-                  auipc      t5, 661491
-                  c.addi     t1, -4
-                  c.addi     s11, -9
-                  c.addi     a7, -26
-                  lui        s9, 552388
-                  c.lui      t5, 26
-                  auipc      t3, 472849
-                  lui        a3, 668289
-                  c.sub      a5, s1
-                  c.bnez     a2, 3152f
-                  c.lui      t3, 29
-                  nop
-3152:             slt        s9, s11, s0
-                  c.addi     s9, 12
-                  c.xor      a5, s0
-                  c.slli     a2, 21
-                  c.srli     a1, 9
-                  c.addi     a1, -14
-                  c.addi     t3, -5
-                  addi       s4, a7, -896
-                  c.srli     a2, 4
-                  c.addi     s3, -18
-                  c.srli     a3, 29
-                  c.srai     a3, 3
-                  auipc      a6, 827472
-                  c.srai     a4, 24
-                  c.srai     a2, 30
-                  c.srai     a4, 3
-                  c.and      a0, a0
-                  auipc      s11, 922524
-                  c.and      a4, s1
-                  bge        sp, s9, 3176f
-                  div        s2, a5, s2
-                  xori       s3, t5, -609
-                  c.lui      s7, 8
-                  c.slli     t5, 14
-3176:             bgeu       s9, ra, 3177f
-3177:             lui        s0, 141203
-                  lui        t1, 483318
-                  c.addi     gp, 15
-                  c.srli     a1, 21
-                  slli       s4, a6, 13
-                  c.lui      t6, 26
-                  fence.i
-                  auipc      s9, 173359
-                  lui        a5, 462664
-                  div        a7, a5, s0
-                  auipc      a4, 936864
-                  lui        s5, 564169
-                  c.nop
-                  c.addi     s6, -14
-                  auipc      t2, 792707
-                  mulh       a7, s5, s2
-                  c.addi     a7, 1
-                  c.addi     s10, 5
-                  beq        t0, a5, 3200f
-                  c.addi     s5, 23
-                  c.addi     s2, -2
-                  c.srai     a2, 7
-                  c.srai     a5, 6
-3200:             c.srli     a5, 3
-                  c.lui      s6, 25
-                  lui        s0, 308669
-                  auipc      s5, 710984
-                  c.addi     t3, 23
-                  c.lui      s9, 10
-                  lui        t1, 814267
-                  lui        s9, 628894
-                  auipc      a7, 616342
-                  c.addi     s6, -1
-                  c.addi     s8, -3
-                  lui        a4, 868650
-                  srai       t3, a0, 18
-                  lui        s0, 25645
-                  c.addi     s5, 19
-                  c.addi     a1, -19
-                  c.srli     a4, 25
-                  c.srli     a3, 24
-                  fence
-                  c.addi     gp, 29
-                  c.srli     s1, 16
-                  c.addi     a3, -9
-                  auipc      s11, 141877
-                  sltu       a6, zero, a2
-                  c.srai     s0, 15
-                  c.addi     s5, 5
-                  c.addi     s8, -5
-                  c.addi     a5, 26
-                  auipc      s0, 352431
-                  c.lui      t1, 30
-                  c.lui      a5, 15
-                  c.addi     a7, 17
-                  sltu       s9, zero, s4
-                  lui        t1, 590252
-                  c.nop
-                  lui        t3, 293502
-                  nop
-                  auipc      s8, 23186
-                  auipc      a3, 593943
-                  c.slli     a1, 2
-                  c.addi     s10, 29
-                  bne        s7, gp, 3243f
-                  c.addi     s8, -4
-3243:             c.lui      s11, 22
-                  lui        s11, 321348
-                  auipc      s7, 835611
-                  mulhsu     s0, s6, s7
-                  slt        t6, t1, t4
-                  lui        s8, 368192
-                  c.addi     t2, 7
-                  auipc      t5, 293503
-                  c.lui      s4, 16
-                  c.slli     a7, 27
-                  c.addi     t6, -28
-                  c.addi     s10, 30
-                  auipc      a6, 1013614
-                  auipc      t2, 1030471
-                  c.slli     s6, 16
-                  c.bnez     a3, 3262f
-                  lui        s9, 544288
-                  lui        zero, 737895
-                  lui        s8, 904557
-3262:             c.addi     a4, -6
-                  c.srli     a3, 27
-                  c.srai     s0, 15
-                  auipc      s1, 434105
-                  c.srai     a5, 3
-                  c.lui      t5, 2
-                  bltu       t5, a3, 3286f
-                  xor        a6, t6, s6
-                  c.srai     a5, 7
-                  c.add      s0, a3
-                  lui        t4, 451829
-                  c.lui      t6, 16
-                  c.bnez     a4, 3285f
-                  slti       s6, zero, 751
-                  auipc      a2, 173241
-                  c.slli     s1, 8
-                  c.addi     a6, 6
-                  c.addi     a3, -24
-                  auipc      a7, 902921
-                  c.srai     s0, 13
-                  c.addi     gp, -23
-                  c.slli     a2, 14
-                  lui        s6, 1004191
-3285:             slli       a3, s0, 27
-3286:             auipc      a7, 57439
-                  xori       s9, s0, -941
-                  divu       s2, a2, t0
-                  auipc      a5, 439408
-                  auipc      t4, 165754
-                  c.addi     t2, -23
-                  bne        s3, s2, 3304f
-                  lui        a7, 944417
-                  c.addi     a1, -29
-                  slt        t6, s7, s8
-                  c.mv       a1, a5
-                  c.lui      a4, 31
-                  c.addi     t2, -26
-                  auipc      t3, 866865
-                  auipc      t3, 432444
-                  c.li       s9, -28
-                  auipc      t5, 590473
-                  sltiu      s7, a7, 689
-3304:             slli       a7, sp, 14
-                  mulh       t2, s0, s11
-                  c.srai     a1, 29
-                  c.addi     a1, -31
-                  lui        t1, 261295
-                  c.lui      a0, 19
-                  blt        s3, gp, 3324f
-                  mul        s11, a7, t3
-                  auipc      s9, 1018338
-                  c.srli     a2, 24
-                  slt        s6, sp, s4
-                  c.addi     a0, -3
-                  srl        s11, a0, a4
-                  srai       s11, s3, 0
-                  auipc      a3, 819524
-                  c.addi     t5, -17
-                  c.lui      a2, 19
-                  c.srai     s0, 10
-                  c.addi     t6, -14
-                  c.addi     s1, 4
-3324:             lui        s11, 398898
-                  lui        a6, 605900
-                  la         a4, data_page_6+2291 #start riscv_load_store_rand_instr_stream_45
-                  lbu        t4, -728(a4)
-                  lui        t4, 320362
-                  auipc      t1, 29453
-                  lhu        t5, -1095(a4)
-                  lhu        t5, -725(a4)
-                  c.addi     s4, 1
-                  andi       a0, a7, -778
-                  c.or       s1, a0
-                  lui        t3, 495236
-                  sltu       t3, gp, a0
-                  sh         a2, -923(a4)
-                  c.li       t5, 21
-                  sh         gp, -827(a4)
-                  c.addi     t2, -3
-                  sh         t2, -831(a4)
-                  c.addi     s9, 14
-                  lui        t6, 1022649
-                  lui        a3, 670228
-                  sb         ra, 890(a4)
-                  lui        t3, 70039
-                  nop
-                  sb         s3, 711(a4)
-                  sh         s2, -517(a4)
-                  lui        a6, 485885
-                  c.lui      s4, 10
-                  lbu        s8, 1574(a4)
-                  lbu        gp, 325(a4)
-                  sb         s3, -1790(a4)
-                  lb         s1, 455(a4) #end riscv_load_store_rand_instr_stream_45
-                  c.addi     s3, 29
-                  auipc      s2, 367580
-                  c.addi     t4, 8
-                  c.addi     a2, -4
-                  lui        t3, 208163
-                  c.addi     a3, -29
-                  bge        t1, t4, 3350f
-                  mul        s8, s3, t0
-                  fence
-                  c.mv       s5, s3
-                  bltu       a5, a7, 3354f
-                  mulhsu     t6, s11, t1
-                  lui        t2, 281901
-                  slti       a3, t5, 434
-                  auipc      a6, 286446
-                  c.srai     a2, 14
-                  c.or       s1, a4
-                  auipc      s0, 237954
-                  div        s7, a0, a0
-                  c.addi     a1, 24
-                  c.srai     a0, 9
-                  c.addi     a5, 6
-                  auipc      a1, 744686
-                  c.addi     s5, 24
-3350:             auipc      s7, 196293
-                  c.addi     t3, -4
-                  fence.i
-                  lui        s1, 611411
-3354:             c.lui      s1, 27
-                  sll        a1, sp, t1
-                  c.lui      s2, 1
-                  c.addi     a5, -15
-                  c.addi     a5, -22
-                  slti       a2, s3, -310
-                  c.slli     s8, 4
-                  c.srli     a3, 12
-                  srai       t2, s2, 18
-                  slli       s9, a5, 24
-                  c.srli     s0, 23
-                  c.lui      s10, 19
-                  c.mv       a3, s7
-                  c.srai     s1, 27
-                  c.lui      a4, 31
-                  lui        s8, 207839
-                  c.addi     s11, 2
-                  c.addi     t1, -6
-                  c.addi     t4, -32
-                  c.slli     t6, 27
-                  la         a7, data_page_19+2443 #start riscv_load_store_rand_instr_stream_56
-                  lbu        a1, -1169(a7)
-                  lb         a4, -868(a7)
-                  auipc      a4, 642532
-                  lh         t4, -1507(a7)
-                  c.addi     s2, -8
-                  lb         a5, 1245(a7)
-                  c.srli     a1, 25
-                  c.addi     s10, -5
-                  auipc      s2, 572825
-                  lb         a2, 137(a7)
-                  c.addi     s9, -20
-                  c.srai     a4, 27
-                  fence
-                  lui        a2, 306910
-                  lbu        s4, 226(a7)
-                  nop
-                  c.addi     s11, -10
-                  sb         t5, -1130(a7)
-                  lb         a6, 252(a7)
-                  lb         s4, -1014(a7)
-                  c.addi     t3, -26
-                  div        a4, a4, t5
-                  lb         a0, 211(a7)
-                  or         t1, t3, a5
-                  lb         a1, -902(a7)
-                  sb         a0, 239(a7)
-                  lbu        s2, -204(a7)
-                  divu       t4, a3, a0
-                  sh         s10, -1589(a7)
-                  auipc      s4, 862613
-                  lb         a5, 872(a7)
-                  lb         s1, 1400(a7)
-                  lbu        t5, -2020(a7)
-                  c.lui      t4, 23
-                  lui        t2, 687709
-                  sh         s6, -537(a7)
-                  lb         a0, 1222(a7)
-                  sb         s1, -646(a7)
-                  lhu        a4, 395(a7)
-                  lbu        s10, 464(a7)
-                  sb         s2, -673(a7) #end riscv_load_store_rand_instr_stream_56
-                  lui        s5, 67006
-                  auipc      s0, 192366
-                  c.srli     a3, 5
-                  bgeu       t4, a2, 3396f
-                  c.lui      s0, 19
-                  c.addi     a6, 8
-                  c.nop
-                  c.nop
-                  c.slli     s0, 10
-                  auipc      s1, 613961
-                  c.srai     a3, 16
-                  c.srai     s1, 17
-                  c.li       a0, 7
-                  c.add      s1, a1
-                  bge        a2, s0, 3395f
-                  c.bnez     a2, 3397f
-                  auipc      s2, 1040322
-                  c.slli     a2, 10
-                  slti       s11, s10, 352
-                  addi       s0, a0, -17
-                  auipc      s2, 278276
-3395:             c.addi     t1, 9
-3396:             lui        s10, 209127
-3397:             c.addi     a7, -22
-                  auipc      t5, 829126
-                  c.lui      t6, 25
-                  c.addi     a5, -21
-                  c.addi     t4, 25
-                  c.li       a1, -15
-                  c.lui      s4, 17
-                  c.addi     t3, -1
-                  c.addi     s8, -15
-                  c.addi     s8, 16
-                  c.srai     a2, 31
-                  auipc      s3, 915780
-                  c.slli     s7, 27
-                  auipc      a4, 248796
-                  c.or       a0, a0
-                  lui        a5, 510120
-                  c.addi     a1, -20
-                  c.addi     s4, 29
-                  lui        t1, 485799
-                  c.addi     s3, 20
-                  c.slli     s3, 16
-                  c.addi     s11, 25
-                  auipc      a6, 537207
-                  remu       a7, t4, s10
-                  c.lui      a1, 21
-                  lui        a5, 406226
-                  auipc      t6, 653086
-                  c.addi     a1, 13
-                  c.srli     a4, 5
-                  rem        zero, s11, t5
-                  c.addi     t4, -11
-                  c.lui      a6, 6
-                  c.srai     a2, 1
-                  srai       a6, tp, 21
-                  fence
-                  c.slli     t1, 6
-                  c.addi     t4, 12
-                  c.addi     a6, -9
-                  c.addi     s11, -18
-                  sra        s8, s9, s11
-                  c.srai     a4, 27
-                  c.addi     a4, 24
-                  c.li       t2, -19
-                  mulh       s4, a6, t3
-                  auipc      gp, 494690
-                  c.addi     a6, -12
-                  auipc      a4, 443763
-                  blt        a2, a3, 3456f
-                  sltiu      a4, s8, -993
-                  srli       t6, s7, 31
-                  c.lui      a6, 16
-                  auipc      a1, 474995
-                  c.srai     a1, 26
-                  mulhu      t4, t1, a4
-                  fence.i
-                  c.srai     a0, 15
-                  c.addi     t6, -30
-                  c.addi     a0, -16
-                  c.addi     s11, -30
-3456:             c.addi     a2, 23
-                  c.slli     s3, 29
-                  remu       s3, s3, a5
-                  auipc      a3, 686741
-                  bltu       t2, t1, 3471f
-                  c.addi     a2, 5
-                  auipc      t5, 901749
-                  mulh       a5, s8, a0
-                  c.addi     t4, -20
-                  auipc      t1, 337420
-                  c.or       a1, a3
-                  auipc      s7, 223075
-                  sltiu      a7, s0, -689
-                  auipc      a7, 847757
-                  c.andi     a2, -32
-3471:             sra        a1, t4, a7
-                  auipc      s8, 774408
-                  c.bnez     s0, 3491f
-                  fence
-                  c.lui      s9, 24
-                  add        s3, s2, t1
-                  auipc      a3, 317995
-                  sltu       a1, t1, s3
-                  c.slli     a0, 11
-                  c.slli     s4, 23
-                  c.lui      s10, 5
-                  srai       a5, s0, 4
-                  c.srai     s1, 18
-                  srli       s8, s3, 17
-                  c.addi     s4, -18
-                  lui        t5, 683201
-                  srl        s4, s7, tp
-                  c.srli     a5, 21
-                  c.addi     s4, 6
-                  auipc      a7, 163888
-3491:             auipc      s2, 297232
-                  c.addi     s6, -28
-                  c.addi     s0, -15
-                  c.addi     a4, 18
-                  c.srli     a1, 14
-                  c.addi     s10, 5
-                  lui        s5, 550125
-                  c.addi     s2, -4
-                  bgeu       ra, s2, 3517f
-                  c.srli     a2, 6
-                  c.srli     a0, 16
-                  la         a1, data_page_3+2902 #start riscv_load_store_rand_instr_stream_3
-                  c.slli     a3, 6
-                  c.lui      s5, 18
-                  lui        t6, 531252
-                  sb         a4, 1007(a1)
-                  c.addi     gp, -32
-                  rem        t1, a2, a6
-                  lb         t6, -1177(a1)
-                  andi       s1, s7, -764
-                  lui        s7, 823823
-                  lhu        a4, -2048(a1)
-                  lui        s8, 155598
-                  lh         t2, -1714(a1)
-                  lui        a4, 798761
-                  lb         t6, -1645(a1)
-                  sh         s6, -528(a1)
-                  c.lui      s6, 14
-                  c.addi     a2, -28
-                  c.lui      a4, 11
-                  c.addi     s4, 17
-                  lbu        s6, -785(a1)
-                  lui        s5, 529740
-                  sh         t0, -40(a1)
-                  c.addi     s1, 20
-                  fence
-                  c.lui      s10, 3
-                  sb         a5, 123(a1)
-                  lw         a7, 1162(a1)
-                  and        s5, s10, t0
-                  sb         s2, -573(a1)
-                  lui        a4, 945065
-                  c.sub      a0, a1
-                  lbu        s0, 815(a1)
-                  c.lui      s4, 16
-                  sb         sp, -182(a1)
-                  auipc      a5, 29527
-                  sb         s2, 561(a1)
-                  sb         a6, 407(a1)
-                  c.addi     s2, 15
-                  lui        a7, 872619
-                  lw         s6, -1878(a1)
-                  lw         s5, -110(a1) #end riscv_load_store_rand_instr_stream_3
-                  c.srli     s1, 5
-                  c.addi     a3, 14
-                  c.addi     a0, -27
-                  lui        a0, 600950
-                  c.nop
-                  andi       s5, s6, -627
-                  auipc      a4, 719241
-                  lui        s11, 103618
-                  sltu       t5, a7, a4
-                  c.srai     a0, 18
-                  lui        a6, 796882
-                  c.addi     s7, -30
-                  c.addi     s11, -2
-                  lui        a1, 216874
-                  c.lui      s4, 2
-3517:             auipc      s6, 1019032
-                  c.lui      a3, 29
-                  c.addi     s4, -32
-                  lui        a7, 128394
-                  c.slli     s4, 28
-                  slli       s7, t1, 23
-                  mulh       s8, s8, s11
-                  c.lui      s0, 25
-                  c.addi     a0, -14
-                  c.addi     a1, -24
-                  c.slli     s7, 20
-                  bne        s2, a3, 3538f
-                  srai       a0, t0, 7
-                  auipc      s10, 989126
-                  c.lui      t5, 24
-                  c.and      a5, s1
-                  c.addi     s10, 24
-                  lui        a3, 193139
-                  srl        a4, t0, t0
-                  c.andi     a2, -12
-                  la         s0, data_page_3+1990 #start riscv_load_store_rand_instr_stream_1
-                  lbu        t3, -281(s0)
-                  lui        s10, 499132
-                  c.srai     a2, 11
-                  lbu        t1, -1731(s0)
-                  lui        a2, 336553
-                  lbu        gp, 43(s0)
-                  auipc      a0, 642756
-                  c.add      a0, a0
-                  sb         a5, 1043(s0)
-                  c.srli     a3, 26
-                  lbu        a0, 1556(s0)
-                  lbu        t1, -97(s0)
-                  auipc      s2, 899751
-                  lui        a5, 624357
-                  lb         gp, -622(s0)
-                  c.srai     a1, 25
-                  c.addi     a5, -1
-                  lbu        a5, -1437(s0)
-                  lui        s11, 667604
-                  sb         s3, 1295(s0)
-                  c.addi     a0, 31
-                  c.addi     s1, 13
-                  c.srai     a2, 5
-                  lbu        t5, 2007(s0)
-                  lbu        t5, -437(s0)
-                  c.addi     a2, -11
-                  lh         s3, -644(s0)
-                  sb         a1, 58(s0)
-                  c.lui      s1, 9
-                  sh         a0, 1164(s0)
-                  lbu        s3, 1735(s0)
-                  c.srli     s1, 4
-                  sb         s8, 1933(s0)
-                  lb         a5, -1367(s0)
-                  lbu        s4, 425(s0)
-                  lbu        zero, -53(s0)
-                  c.addi     a0, -4
-                  lbu        s10, 191(s0)
-                  c.srai     a3, 6
-                  c.srai     a0, 20
-                  c.lui      a3, 26
-                  c.add      a3, s0
-                  mul        s3, a5, a7
-                  lbu        t5, -273(s0)
-                  c.addi     s10, 5
-                  nop
-                  c.slli     a0, 17
-                  auipc      gp, 476391
-                  sll        t3, s1, s5
-                  c.addi     s5, -22
-                  sh         t0, -1970(s0)
-                  lbu        a4, -564(s0)
-                  sh         a4, 46(s0)
-                  sb         a1, -1168(s0) #end riscv_load_store_rand_instr_stream_1
-                  c.srai     s1, 15
-3538:             c.addi     t4, -9
-                  c.slli     s1, 17
-                  c.addi     s5, 25
-                  c.addi     s8, -16
-                  fence.i
-                  lui        s2, 80746
-                  srai       s3, t1, 0
-                  c.slli     s2, 15
-                  c.addi     t5, 31
-                  la         s3, data_page_4+1876 #start riscv_load_store_rand_instr_stream_25
-                  c.slli     a5, 8
-                  sra        s4, a0, gp
-                  lh         a1, 868(s3)
-                  mul        a1, t2, s5
-                  lui        a5, 247481
-                  sh         tp, 1590(s3)
-                  sra        a0, t0, t6
-                  c.addi     t4, 8
-                  lhu        t2, 1918(s3)
-                  c.srai     a5, 9
-                  c.srai     a5, 18
-                  slti       a1, t1, -196
-                  c.addi     s5, -4
-                  sb         a0, 1973(s3)
-                  lui        t1, 876092
-                  nop
-                  lui        s10, 145238
-                  c.srli     a1, 18
-                  or         s9, s6, t2
-                  lb         a1, -597(s3)
-                  auipc      a5, 309178
-                  lbu        t5, 649(s3)
-                  sub        a4, s8, gp
-                  c.lui      t4, 16
-                  lui        s10, 897986
-                  c.slli     s10, 16
-                  lui        s7, 937843
-                  lbu        t2, -1576(s3)
-                  c.slli     a7, 26
-                  c.slli     a5, 28
-                  c.and      s1, a1
-                  sb         s3, -1085(s3)
-                  c.srli     a5, 1
-                  lbu        a2, -487(s3)
-                  c.addi     a1, 23
-                  lb         s10, -1234(s3) #end riscv_load_store_rand_instr_stream_25
-                  auipc      a0, 951703
-                  bne        s11, t5, 3556f
-                  c.lui      a7, 25
-                  lui        a5, 1003822
-                  andi       zero, a0, 924
-                  c.slli     a3, 16
-                  lui        gp, 847564
-                  c.sub      s1, a2
-                  auipc      t3, 1003090
-3556:             c.addi     t6, 3
-                  bne        s6, s8, 3559f
-                  c.addi     a1, 25
-3559:             c.addi     s0, -11
-                  c.addi     s4, 20
-                  c.srai     s0, 26
-                  auipc      a4, 685925
-                  c.addi     s4, -20
-                  c.addi     s6, 6
-                  lui        a7, 53506
-                  c.srai     a0, 18
-                  c.srai     a2, 12
-                  c.addi     s4, -2
-                  c.addi     t4, 24
-                  bne        a1, s11, 3589f
-                  c.addi     a5, -20
-                  auipc      a3, 537891
-                  c.addi     s8, 1
-                  c.addi     a4, -4
-                  c.andi     a2, 1
-                  c.addi     a2, 19
-                  lui        t3, 370318
-                  bgeu       a4, a0, 3591f
-                  c.addi     t4, 22
-                  c.addi     s11, -8
-                  lui        s1, 796015
-                  beq        a6, s4, 3587f
-                  auipc      a2, 68349
-                  xori       t6, t6, 881
-                  c.addi     gp, 30
-                  c.addi     a4, 30
-3587:             auipc      t1, 597889
-                  c.addi     t2, 23
-3589:             c.xor      a0, a3
-                  lui        a0, 615082
-3591:             c.srai     a2, 9
-                  add        s3, a6, s7
-                  c.srai     a2, 2
-                  c.lui      gp, 2
-                  c.lui      s3, 2
-                  c.nop
-                  auipc      s1, 551305
-                  c.addi     a6, -15
-                  lui        s1, 336881
-                  c.slli     gp, 22
-                  lui        s3, 396344
-                  div        s0, a2, a2
-                  c.addi     s6, 11
-                  lui        t4, 662972
-                  c.slli     t2, 6
-                  c.addi     s7, -25
-                  auipc      t4, 1007889
-                  addi       s9, s8, 394
-                  lui        t5, 696636
-                  lui        s5, 554878
-                  c.addi     a3, 21
-                  c.addi     s1, -2
-                  bne        t2, a7, 3614f
-3614:             sll        a2, a3, t2
-                  c.srai     a1, 6
-                  c.addi     a5, -17
-                  auipc      t2, 979639
-                  c.addi     t5, -31
-                  andi       t3, tp, -986
-                  bltu       t5, s0, 3625f
-                  lui        gp, 504220
-                  c.srli     a4, 10
-                  auipc      s8, 722919
-                  c.addi     s3, 5
-3625:             c.lui      s2, 13
-                  c.lui      s8, 17
-                  c.lui      s9, 19
-                  c.addi     a1, -21
-                  lui        a5, 358571
-                  c.lui      s6, 28
-                  lui        t1, 994817
-                  c.addi     s9, 22
-                  c.andi     s1, -16
-                  c.slli     a0, 14
-                  c.slli     a0, 26
-                  c.srli     a2, 16
-                  bltu       s7, tp, 3641f
-                  c.andi     a5, -12
-                  c.slli     s9, 26
-                  c.addi     a3, 26
-3641:             c.slli     s6, 16
-                  c.srai     a0, 10
-                  auipc      t4, 182205
-                  auipc      t6, 358395
-                  auipc      a7, 471618
-                  c.lui      a7, 28
-                  xori       s8, s5, -850
-                  c.srai     s1, 11
-                  c.lui      t3, 31
-                  c.slli     s1, 4
-                  c.sub      a1, a4
-                  c.addi     s2, 5
-                  bne        s3, s8, 3665f
-                  and        t3, s10, t5
-                  auipc      t3, 228872
-                  c.andi     a2, -1
-                  c.srli     a2, 24
-                  auipc      t5, 233042
-                  lui        s2, 972319
-                  c.addi     s11, 8
-                  c.addi     s0, 17
-                  lui        s5, 688710
-                  c.addi     s6, -15
-                  c.srai     a5, 5
-3665:             slli       a5, s11, 24
-                  auipc      s11, 827994
-                  c.addi     s10, 24
-                  c.addi     s7, -29
-                  c.srai     s0, 4
-                  c.addi     t1, 27
-                  c.srli     s0, 6
-                  c.addi     gp, 20
-                  sll        a0, tp, a5
-                  auipc      s10, 300657
-                  lui        a5, 687268
-                  c.addi     t2, -14
-                  c.li       t5, 20
-                  c.srai     a1, 5
-                  c.addi     gp, 24
-                  lui        t4, 5106
-                  c.addi     a6, -5
-                  c.andi     a4, -17
-                  fence
-                  c.addi     s0, 18
-                  c.addi     a3, 1
-                  c.addi     s1, 3
-                  c.addi     s5, 31
-                  c.addi     s2, -19
-                  c.addi     a3, 18
-                  c.bnez     a0, 3696f
-                  c.lui      t2, 23
-                  c.addi     t5, 8
-                  rem        s8, a5, t5
-                  c.slli     s1, 12
-                  c.addi     s11, 23
-3696:             c.addi     s10, 10
-                  c.srai     s0, 31
-                  auipc      s5, 369716
-                  auipc      s3, 816149
-                  c.slli     a4, 31
-                  c.addi     a7, -29
-                  or         s6, s9, a4
-                  c.srai     s0, 7
-                  lui        a1, 79702
-                  slti       t1, a7, -836
-                  c.srai     a1, 15
-                  c.lui      a2, 5
-                  c.addi     s1, 22
-                  auipc      s8, 945048
-                  lui        t5, 440604
-                  c.slli     s3, 30
-                  lui        t2, 821838
-                  c.addi     s6, 6
-                  c.addi     a1, -5
-                  c.srli     a2, 7
-                  lui        zero, 741382
-                  c.addi     s7, 7
-                  c.addi     t1, -23
-                  blt        s5, gp, 3735f
-                  lui        a2, 497623
-                  remu       t2, t1, s1
-                  srl        t6, gp, s8
-                  c.lui      a3, 29
-                  c.srli     a1, 9
-                  andi       zero, a3, 988
-                  c.srli     a4, 14
-                  c.srli     a3, 22
-                  c.addi     s1, -1
-                  ori        t2, t3, -827
-                  and        s4, s5, a4
-                  c.addi     s11, -15
-                  xori       s8, a6, 375
-                  sltiu      a6, t5, 705
-                  c.addi     t4, -10
-3735:             andi       s5, sp, 408
-                  auipc      a6, 146421
-                  c.lui      s10, 30
-                  c.slli     a6, 31
-                  c.srli     a1, 14
-                  c.addi     a5, -4
-                  div        a4, s10, a4
-                  c.addi     t3, -31
-                  c.srli     a2, 28
-                  ori        a6, t4, -839
-                  lui        a1, 935323
-                  c.addi     s11, -31
-                  c.srai     s1, 3
-                  c.addi     s11, 24
-                  auipc      t5, 277513
-                  c.slli     t2, 30
-                  c.addi     a2, 6
-                  c.srai     a2, 24
-                  auipc      gp, 1040024
-                  c.srli     s1, 23
-                  c.xor      a5, a0
-                  rem        a4, s3, s4
-                  c.addi     t1, 26
-                  c.addi     s5, 23
-                  slli       t3, s6, 20
-                  lui        s10, 676902
-                  auipc      a7, 876556
-                  auipc      a1, 185585
-                  slli       s10, s0, 30
-                  c.lui      s7, 16
-                  lui        a7, 900376
-                  c.srai     a0, 3
-                  lui        a6, 118797
-                  auipc      a1, 130563
-                  c.slli     s3, 15
-                  blt        s7, tp, 3788f
-                  auipc      s4, 159145
-                  auipc      s5, 758862
-                  c.srli     a0, 28
-                  lui        s5, 208991
-                  auipc      t4, 392977
-                  c.slli     gp, 22
-                  c.addi     s2, -16
-                  c.addi     s9, 13
-                  add        t1, s0, a0
-                  auipc      a4, 169695
-                  c.addi     s9, 9
-                  c.addi     a7, 11
-                  auipc      a3, 279196
-                  c.lui      s8, 3
-                  c.lui      t4, 26
-                  lui        s4, 732573
-                  sll        s3, a6, t3
-3788:             c.slli     a4, 4
-                  c.srai     a5, 8
-                  c.addi     s1, -5
-                  c.bnez     a3, 3807f
-                  c.addi     s3, -17
-                  c.sub      a0, s0
-                  c.slli     a2, 7
-                  addi       a2, a1, -522
-                  c.addi     s4, -17
-                  c.lui      a3, 4
-                  c.srli     s0, 29
-                  c.addi     a1, -5
-                  c.addi     s9, 26
-                  c.slli     t4, 17
-                  and        a2, t6, s11
-                  c.addi     s1, 16
-                  c.slli     t1, 18
-                  lui        a5, 448054
-                  c.sub      s0, a2
-3807:             lui        s3, 999302
-                  c.slli     t4, 10
-                  c.li       a7, -30
-                  lui        s2, 331869
-                  c.addi     s11, -15
-                  c.addi     s6, -2
-                  la         a7, data_page_13+2783 #start riscv_load_store_rand_instr_stream_13
-                  sb         t4, -1058(a7)
-                  sb         s8, -1569(a7)
-                  sb         a2, -1853(a7)
-                  lbu        a2, -1426(a7)
-                  sb         s7, 363(a7)
-                  lui        s9, 402083
-                  sh         a4, 1269(a7)
-                  lb         s3, 44(a7)
-                  lbu        gp, -1082(a7)
-                  auipc      t2, 845972
-                  c.addi     a6, -13
-                  sb         t1, -1274(a7)
-                  sub        t3, a3, s10
-                  lbu        s5, 943(a7)
-                  sb         t0, -52(a7)
-                  c.addi     a4, 17
-                  lb         s10, 550(a7)
-                  mulhsu     t2, s10, s11
-                  c.addi     s6, -1
-                  lb         s9, 187(a7)
-                  lb         s9, 810(a7)
-                  sh         t4, 1011(a7)
-                  sw         sp, 361(a7)
-                  lui        s8, 327374
-                  lh         a6, -1403(a7)
-                  lhu        a1, 991(a7)
-                  and        s3, a6, s8
-                  sb         t0, -59(a7)
-                  c.lui      s8, 27
-                  sh         a5, 915(a7)
-                  lb         s7, -1809(a7)
-                  lui        a3, 1036710
-                  c.sub      a4, a1
-                  lw         a4, -1767(a7)
-                  mulhsu     a0, ra, t2
-                  c.addi     a4, 22
-                  lh         t6, -841(a7) #end riscv_load_store_rand_instr_stream_13
-                  c.mv       s3, gp
-                  c.srai     s1, 25
-                  auipc      s10, 992949
-                  lui        t5, 667471
-                  remu       gp, a0, a6
-                  c.addi     t1, 14
-                  auipc      s6, 1009036
-                  c.addi     a5, 31
-                  fence
-                  slti       t2, t1, 426
-                  c.slli     a4, 17
-                  c.lui      a3, 19
-                  c.slli     s9, 13
-                  lui        s5, 482503
-                  auipc      s1, 634132
-                  c.nop
-                  auipc      t2, 150059
-                  remu       gp, s1, zero
-                  fence.i
-                  c.and      a5, a2
-                  c.xor      a5, a0
-                  c.slli     t2, 17
-                  c.addi     s2, 13
-                  auipc      a3, 155700
-                  c.addi     s10, -31
-                  bltu       s3, a0, 3854f
-                  bne        s8, s11, 3854f
-                  c.lui      a5, 6
-                  c.addi     t4, 23
-                  lui        t2, 70018
-                  auipc      t6, 597844
-                  c.srai     s0, 28
-                  c.srli     a1, 29
-                  c.addi     s9, -29
-                  c.lui      s2, 2
-                  c.sub      s1, a5
-                  sll        s5, s2, s1
-                  c.lui      s9, 26
-                  c.lui      t5, 12
-                  c.lui      t2, 1
-                  c.addi     s3, 4
-3854:             c.srli     a4, 1
-                  bne        a5, a3, 3872f
-                  c.addi     s0, 23
-                  bge        a0, t1, 3858f
-3858:             c.srli     a3, 9
-                  addi       s7, t0, -924
-                  c.lui      a3, 2
-                  slti       zero, a1, 633
-                  lui        s9, 1045847
-                  la         a3, data_page_7+2048 #start riscv_load_store_rand_instr_stream_12
-                  add        t5, a3, a1
-                  lbu        t1, -229(a3)
-                  c.srli     a4, 20
-                  slt        a0, s7, t2
-                  lb         a5, 889(a3)
-                  c.add      s1, s0
-                  c.srli     a5, 20
-                  c.andi     a5, -32
-                  lui        a2, 915920
-                  lh         t6, 798(a3)
-                  c.srai     a0, 1
-                  or         s0, a0, t5
-                  lbu        a4, 937(a3)
-                  lui        s6, 652475
-                  xor        t5, s7, t3
-                  c.xor      a0, a1
-                  add        t6, s10, a5
-                  c.addi     s1, -28
-                  sb         s2, -512(a3)
-                  lhu        a1, -1474(a3)
-                  auipc      s3, 136561
-                  lbu        a4, 1786(a3)
-                  sb         s11, 1751(a3)
-                  lh         zero, 160(a3)
-                  lui        s2, 712232
-                  lhu        t4, 1564(a3)
-                  c.lui      s3, 31
-                  sw         a7, 1192(a3)
-                  lb         gp, -1313(a3)
-                  c.addi     s3, 27
-                  lb         s6, -1911(a3)
-                  c.srli     a0, 20
-                  auipc      s3, 235304
-                  c.srai     a1, 12
-                  lui        zero, 1008468
-                  c.srai     a5, 13
-                  sb         t5, 507(a3)
-                  c.addi     s0, -2
-                  lb         a7, -345(a3)
-                  lb         s6, 770(a3)
-                  c.srai     a5, 10
-                  lb         s3, -1438(a3)
-                  lbu        s2, 1301(a3)
-                  sb         a2, 189(a3) #end riscv_load_store_rand_instr_stream_12
-                  c.addi     a4, -13
-                  c.addi     a2, 20
-                  c.addi     s1, 20
-                  c.srli     s1, 26
-                  lui        s9, 152670
-                  c.addi     s5, -16
-                  c.addi     s3, -24
-                  c.addi     t1, -30
-                  c.addi     t1, 9
-3872:             c.lui      t3, 6
-                  lui        a0, 116938
-                  c.lui      t6, 18
-                  lui        s11, 413009
-                  beq        t2, s3, 3883f
-                  lui        a3, 698169
-                  c.addi     a5, 20
-                  sra        s9, a6, a3
-                  c.lui      s6, 22
-                  auipc      a7, 670722
-                  add        s1, ra, gp
-3883:             lui        s2, 204354
-                  c.addi     a0, -7
-                  auipc      a2, 669010
-                  c.slli     t2, 1
-                  add        t5, a7, s6
-                  auipc      a2, 2393
-                  c.lui      a4, 18
-                  auipc      s8, 691507
-                  auipc      a2, 793358
-                  la         s5, data_page_19+2322 #start riscv_load_store_rand_instr_stream_47
-                  lbu        s9, 1477(s5)
-                  lbu        s4, -1725(s5)
-                  c.addi     a3, 6
-                  c.srli     a3, 11
-                  add        zero, gp, a1
-                  lw         s4, 162(s5)
-                  lb         t4, -765(s5)
-                  divu       s3, s3, s7
-                  c.addi     t4, -12
-                  c.sub      s0, s1
-                  sb         tp, 1521(s5)
-                  c.srli     a0, 28
-                  lb         s10, 769(s5)
-                  c.slli     s6, 17
-                  lw         a3, -1510(s5)
-                  sh         t3, -760(s5)
-                  c.addi     s4, -6
-                  c.lui      t5, 5
-                  sltiu      s1, zero, 444
-                  auipc      zero, 742034
-                  lh         s4, 724(s5)
-                  lbu        a6, 1465(s5)
-                  c.sub      a4, a0
-                  c.li       t6, 31
-                  c.addi     a1, 31
-                  c.srli     a2, 20
-                  lhu        s2, -1270(s5) #end riscv_load_store_rand_instr_stream_47
-                  blt        t4, s10, 3906f
-                  lui        a4, 517722
-                  c.slli     s0, 3
-                  c.srai     s1, 23
-                  addi       a2, t5, 303
-                  c.addi     s9, 31
-                  c.addi     s11, -17
-                  c.lui      a0, 13
-                  bge        s8, a6, 3905f
-                  c.slli     s8, 7
-                  c.srai     a5, 4
-                  c.lui      s2, 23
-                  ori        s3, a2, -329
-3905:             c.srai     a1, 22
-3906:             c.slli     s3, 7
-                  auipc      t1, 149573
-                  lui        a1, 612166
-                  c.addi     t1, -22
-                  c.slli     a5, 2
-                  c.addi     t4, -20
-                  c.li       a0, 31
-                  lui        s6, 349520
-                  lui        s6, 217973
-                  c.addi     s10, -3
-                  auipc      a7, 429384
-                  c.addi     a3, 27
-                  fence.i
-                  auipc      s11, 872464
-                  c.addi     s5, -21
-                  lui        a4, 693597
-                  lui        a5, 422462
-                  c.addi     a2, -21
-                  c.addi     a1, 21
-                  c.addi     t5, 1
-                  c.lui      s10, 11
-                  c.addi     a2, 30
-                  c.srli     a0, 28
-                  c.srai     s0, 5
-                  bge        t1, gp, 3935f
-                  c.lui      a2, 20
-                  auipc      a2, 565936
-                  c.andi     s0, 11
-                  c.srli     s1, 24
-3935:             rem        s3, s5, s10
-                  c.slli     a7, 20
-                  c.srli     a2, 11
-                  c.srai     s1, 8
-                  auipc      s5, 282827
-                  auipc      t6, 168697
-                  c.xor      s1, a1
-                  c.srai     s0, 10
-                  la         t4, data_page_5+1947 #start riscv_load_store_rand_instr_stream_22
-                  c.slli     a1, 2
-                  c.addi     s5, -24
-                  sb         zero, -540(t4)
-                  srai       a1, gp, 4
-                  c.srli     a1, 18
-                  mulh       a7, s9, gp
-                  c.srai     a4, 3
-                  lb         a4, -224(t4)
-                  auipc      s10, 873506
-                  c.li       a6, 1
-                  c.addi     s3, 5
-                  sb         s7, -688(t4)
-                  lui        zero, 954228
-                  lb         zero, 244(t4)
-                  lbu        t2, 1230(t4)
-                  sltiu      s9, t3, -980
-                  lb         a2, -1809(t4)
-                  c.srli     a5, 27
-                  lbu        s10, 1787(t4)
-                  lhu        s6, 1041(t4)
-                  lui        s10, 645143
-                  or         s1, a3, a7
-                  lw         s11, -899(t4)
-                  c.addi     s1, -25
-                  lbu        a1, 1238(t4)
-                  lui        a4, 962793
-                  c.srli     a3, 16
-                  c.slli     s9, 30
-                  sll        s8, a5, s8
-                  sb         t1, 838(t4)
-                  c.lui      t2, 13
-                  add        a3, a5, s3
-                  lb         t6, -406(t4)
-                  c.srli     a3, 20
-                  lbu        a6, -1292(t4)
-                  lui        t1, 359839
-                  auipc      s8, 366870
-                  c.addi     s8, 21
-                  sll        t2, t5, zero
-                  c.lui      a5, 20
-                  sb         a2, 172(t4)
-                  sb         s11, 1074(t4)
-                  sh         ra, -1843(t4) #end riscv_load_store_rand_instr_stream_22
-                  c.addi     a5, -31
-                  auipc      t6, 137011
-                  c.addi     t5, -6
-                  fence.i
-                  lui        a2, 672688
-                  c.addi     a1, -9
-                  ori        s1, a5, 1020
-                  lui        a6, 108752
-                  c.lui      a3, 22
-                  slti       s2, s4, -674
-                  c.srai     a4, 17
-                  bltu       s10, a2, 3960f
-                  divu       a6, a6, t0
-                  auipc      s10, 1035725
-                  c.srai     s1, 27
-                  auipc      s5, 304512
-                  c.addi     a5, 3
-3960:             c.srai     a2, 3
-                  andi       a4, s7, -483
-                  c.addi     t2, 16
-                  auipc      s1, 372288
-                  c.srli     a2, 13
-                  lui        s3, 802264
-                  c.addi     s8, 11
-                  lui        a4, 177377
-                  c.addi     gp, -15
-                  c.slli     s2, 30
-                  c.srli     s0, 5
-                  lui        t2, 687115
-                  c.addi     s1, 7
-                  c.addi     s6, -31
-                  c.slli     a5, 26
-                  c.slli     s2, 17
-                  c.addi     a2, 11
-                  auipc      a4, 957133
-                  c.addi     a6, -1
-                  lui        a1, 649422
-                  c.addi     t1, 12
-                  sll        s10, s2, gp
-                  c.srli     a4, 27
-                  bgeu       a5, s11, 3994f
-                  c.addi     s3, 13
-                  div        t3, s2, s7
-                  c.srai     a0, 27
-                  lui        s0, 575662
-                  c.srai     a0, 3
-                  c.srai     a0, 28
-                  c.add      a5, a4
-                  c.beqz     a5, 4005f
-                  c.slli     a6, 10
-                  c.lui      s10, 27
-3994:             auipc      a5, 318165
-                  c.addi     a5, -9
-                  c.addi     a7, 7
-                  lui        t2, 477766
-                  c.lui      t1, 12
-                  bge        s9, ra, 4018f
-                  fence.i
-                  c.addi     s0, 31
-                  beq        s2, tp, 4022f
-                  auipc      t4, 442896
-                  c.addi     s7, -25
-4005:             fence
-                  beq        t3, t0, 4015f
-                  c.addi     s7, 29
-                  auipc      t4, 532961
-                  c.slli     s5, 15
-                  ori        t4, t1, 67
-                  lui        a1, 508326
-                  lui        a1, 993176
-                  addi       zero, t3, -679
-                  auipc      zero, 380829
-4015:             c.addi     t3, -14
-                  c.srai     s0, 21
-                  c.srli     a3, 6
-4018:             c.srai     s0, 31
-                  c.addi     s1, 1
-                  slli       s0, a0, 3
-                  c.addi     s3, 22
-4022:             auipc      t3, 115687
-                  c.lui      s11, 29
-                  xor        s4, tp, a3
-                  c.addi     t3, 2
-                  c.slli     t5, 18
-                  c.addi     t2, -30
-                  sra        t4, t3, s6
-                  c.addi     s5, -16
-                  c.addi     s11, -7
-                  mul        s10, s11, gp
-                  mul        s8, s0, a7
-                  c.beqz     a2, 4051f
-                  c.addi     s7, -29
-                  lui        s7, 259104
-                  lui        t1, 128850
-                  c.lui      s6, 10
-                  c.addi     a6, 5
-                  auipc      s10, 357426
-                  c.slli     a2, 13
-                  lui        gp, 1044911
-                  c.lui      a4, 17
-                  c.addi     a0, 25
-                  c.slli     t4, 2
-                  c.addi     a6, -21
-                  lui        zero, 129082
-                  lui        a4, 147695
-                  c.srai     a1, 16
-                  auipc      a1, 458918
-                  lui        s6, 498931
-4051:             c.addi     a0, 11
-                  lui        s6, 444350
-                  lui        a7, 809854
-                  c.addi     s1, 7
-                  mulhu      a4, s1, t2
-                  auipc      t3, 939273
-                  auipc      s11, 287593
-                  lui        t5, 88290
-                  c.srli     a3, 12
-                  slti       s0, s0, 96
-                  c.addi     a7, 12
-                  c.addi     s8, -31
-                  auipc      a0, 386670
-                  auipc      a4, 511492
-                  c.addi     t4, -28
-                  c.addi     s11, -16
-                  c.addi     a2, 17
-                  auipc      t2, 721980
-                  c.slli     a2, 25
-                  c.slli     t4, 1
-                  fence.i
-                  c.srai     a1, 18
-                  c.addi     s7, 6
-                  c.li       s1, -14
-                  auipc      zero, 996921
-                  c.addi     s3, 1
-                  c.srai     a4, 19
-                  auipc      t1, 700006
-                  c.lui      a0, 7
-                  auipc      s3, 576321
-                  c.slli     a0, 31
-                  c.mv       s10, a4
-                  srai       s9, a4, 17
-                  xor        t3, t5, s10
-                  lui        s3, 695038
-                  mulh       s3, a0, s9
-                  c.lui      s8, 17
-                  auipc      a0, 964724
-                  c.srli     a4, 15
-                  c.addi     t1, -12
-                  c.addi     a7, -3
-                  c.srli     a5, 28
-                  c.slli     s0, 2
-                  c.addi     s7, 17
-                  c.srai     s1, 31
-                  lui        s8, 888452
-                  lui        s6, 398545
-                  auipc      t4, 845050
-                  auipc      a6, 4204
-                  lui        s10, 682032
-                  auipc      s6, 273031
-                  c.lui      t4, 10
-                  c.srai     a1, 5
-                  c.addi     s7, 17
-                  c.addi     a2, 3
-                  c.addi     s7, -32
-                  auipc      s4, 612170
-                  c.lui      a0, 17
-                  c.addi     s11, 29
-                  lui        s7, 55491
-                  and        s4, s6, a2
-                  or         a5, s11, gp
-                  c.lui      s5, 11
-                  c.srli     a5, 20
-                  c.addi     a4, -8
-                  auipc      s0, 1003004
-                  c.slli     s2, 5
-                  c.addi     t2, -10
-                  c.addi     t6, -7
-                  auipc      s3, 762068
-                  auipc      a6, 729246
-                  c.slli     a0, 7
-                  c.addi     s8, -10
-                  la         s5, data_page_15+2573 #start riscv_load_store_rand_instr_stream_34
-                  lui        t5, 815093
-                  c.srli     a3, 29
-                  divu       t6, tp, s2
-                  c.srli     a3, 31
-                  c.addi     s9, 11
-                  sb         s0, 624(s5)
-                  lb         s8, -1668(s5)
-                  c.addi     a5, 12
-                  lhu        a5, -1579(s5)
-                  auipc      gp, 433835
-                  lui        gp, 57534
-                  c.slli     s4, 5
-                  lb         a4, -19(s5)
-                  lui        a0, 1011884
-                  auipc      s2, 859902
-                  lh         s4, -891(s5)
-                  lb         s2, -821(s5)
-                  c.slli     s2, 16
-                  lbu        s8, -1696(s5)
-                  srl        a1, a7, t0
-                  c.slli     a6, 27
-                  auipc      s7, 626500
-                  remu       zero, t4, s10
-                  lbu        t3, 1460(s5)
-                  lh         a5, -1039(s5)
-                  c.addi     s8, -30
-                  c.srai     a1, 26
-                  slli       a5, t4, 0
-                  sb         a1, 1185(s5)
-                  c.addi     t6, 15
-                  c.addi     s1, -6
-                  c.addi     s1, -28
-                  sh         tp, -1383(s5) #end riscv_load_store_rand_instr_stream_34
-                  srli       a0, tp, 3
-                  c.addi     s5, 26
-                  c.addi     a6, 27
-                  c.srai     s0, 6
-                  lui        t3, 571052
-                  auipc      a7, 529551
-                  slt        t5, s6, s6
-                  nop
-                  mul        a6, a3, s3
-                  c.slli     a7, 11
-                  auipc      t5, 551142
-                  slli       a5, gp, 15
-                  c.srai     a1, 20
-                  nop
-                  lui        s2, 533832
-                  c.slli     a1, 7
-                  c.lui      t6, 28
-                  la         t5, data_page_1+2088 #start riscv_load_store_rand_instr_stream_16
-                  c.addi     s1, -31
-                  c.lui      a5, 22
-                  sb         zero, -1469(t5)
-                  lbu        s9, 473(t5)
-                  c.srai     a3, 15
-                  lui        s3, 464789
-                  c.sub      s0, a4
-                  c.slli     s1, 30
-                  auipc      a5, 711984
-                  auipc      s8, 703828
-                  sb         s0, 1439(t5)
-                  sltiu      s7, t2, -83
-                  c.addi     a0, 8
-                  sltiu      s8, s6, 643
-                  c.addi     t3, 25
-                  auipc      s8, 850458
-                  slli       a7, t1, 3
-                  auipc      a1, 2924
-                  sh         tp, 698(t5)
-                  c.li       t3, -25
-                  sb         s9, -818(t5)
-                  c.lui      s1, 26
-                  c.slli     a7, 10
-                  c.addi     a7, 20
-                  lb         s8, -57(t5)
-                  lbu        a6, -786(t5)
-                  srl        s0, t0, s0
-                  c.lui      t4, 6
-                  lb         a4, -517(t5)
-                  c.lui      t6, 13
-                  sb         a6, 523(t5)
-                  add        a4, gp, a4
-                  auipc      a0, 483835
-                  c.or       a5, a2
-                  lui        s0, 1020498
-                  sb         t1, 235(t5)
-                  mul        t4, s9, a5
-                  sh         a2, 884(t5) #end riscv_load_store_rand_instr_stream_16
-                  c.bnez     a1, 4158f
-                  c.addi     s4, 18
-                  auipc      s1, 771464
-                  c.lui      s2, 9
-                  auipc      s1, 1014007
-                  c.srai     a5, 29
-                  c.slli     a7, 15
-                  mul        a0, s0, s6
-                  lui        s2, 846729
-                  c.beqz     a1, 4167f
-                  lui        s5, 988694
-                  c.srli     a1, 15
-                  lui        a3, 770481
-                  c.lui      s10, 25
-                  slti       a3, s11, -336
-                  c.slli     a0, 9
-                  lui        t6, 189898
-4158:             auipc      s0, 80966
-                  auipc      s3, 748568
-                  slli       a7, zero, 25
-                  ori        s10, t5, -733
-                  c.srli     a5, 4
-                  ori        s8, s9, 107
-                  c.srai     a3, 16
-                  c.addi     s8, -1
-                  c.beqz     s1, 4170f
-4167:             c.addi     s5, -24
-                  c.lui      a5, 4
-                  slli       a2, t1, 3
-4170:             c.lui      t2, 28
-                  c.addi     gp, 26
-                  c.slli     t2, 29
-                  c.lui      t1, 22
-                  lui        a7, 1019963
-                  c.mv       s11, s1
-                  c.addi     s0, 27
-                  c.addi     a1, 29
-                  addi       t6, s7, -789
-                  c.addi     t2, -4
-                  c.lui      s3, 28
-                  remu       a1, a1, a6
-                  lui        s2, 729837
-                  slt        a2, ra, a5
-                  c.slli     gp, 2
-                  c.nop
-                  lui        a4, 1011889
-                  c.addi     t1, 6
-                  c.srai     a3, 19
-                  bge        tp, a2, 4192f
-                  c.addi     s11, -31
-                  c.addi     s2, 4
-4192:             slt        t1, s1, s1
-                  c.beqz     s1, 4200f
-                  auipc      t3, 324097
-                  auipc      t4, 474314
-                  c.lui      a3, 20
-                  c.srli     a0, 16
-                  lui        s5, 923963
-                  c.addi     s7, 26
-4200:             remu       s9, sp, s3
-                  auipc      a5, 479149
-                  addi       a6, s11, -285
-                  c.srli     a3, 18
-                  rem        t3, s7, s11
-                  auipc      s4, 121112
-                  c.srai     a5, 11
-                  c.slli     a2, 21
-                  rem        a1, a4, a4
-                  c.slli     s10, 23
-                  c.srli     a1, 18
-                  lui        t3, 364975
-                  c.lui      t2, 18
-                  c.lui      a7, 31
-                  c.addi     t5, -31
-                  la         t6, data_page_6+2125 #start riscv_load_store_rand_instr_stream_44
-                  lw         t3, -265(t6)
-                  lb         s4, -1303(t6)
-                  c.addi     a6, 24
-                  lb         s10, -914(t6)
-                  c.addi     t5, -29
-                  auipc      t1, 120627
-                  lbu        t5, 1324(t6)
-                  sh         sp, -473(t6)
-                  lb         t4, -86(t6)
-                  sb         s5, -2026(t6)
-                  c.addi     s10, 24
-                  lbu        t5, -561(t6)
-                  lh         a2, 1695(t6)
-                  lb         a4, 971(t6)
-                  c.addi     s10, 30
-                  sb         gp, 1602(t6)
-                  lui        t4, 923299
-                  lhu        a7, 1465(t6)
-                  lw         s0, 1439(t6)
-                  c.srai     s1, 28
-                  sb         a1, -2036(t6)
-                  c.addi     s4, 17
-                  c.addi     t3, 26
-                  lbu        t5, -1913(t6)
-                  sll        s9, s1, s0
-                  lb         s7, 423(t6)
-                  c.srli     a1, 4
-                  lb         s1, -1310(t6)
-                  c.addi     t1, -8
-                  c.srli     a0, 11
-                  c.addi     s11, 21
-                  c.lui      t1, 4
-                  lhu        s7, 819(t6)
-                  lw         s10, -2037(t6)
-                  sh         t0, -1169(t6)
-                  lw         a4, 1171(t6)
-                  c.slli     gp, 20
-                  sb         t1, 1516(t6)
-                  lhu        a7, -839(t6)
-                  c.addi     s1, 30
-                  lui        a6, 69946
-                  lhu        s0, 1049(t6)
-                  lb         a3, -1236(t6)
-                  sb         t3, 1582(t6)
-                  sb         s1, -938(t6)
-                  c.srai     a5, 26
-                  c.addi     s1, -20
-                  lhu        s3, 1415(t6)
-                  sb         s11, -1622(t6)
-                  lb         s7, -1139(t6) #end riscv_load_store_rand_instr_stream_44
-                  c.srai     a2, 23
-                  c.addi     a6, -29
-                  c.addi     t6, -16
-                  slli       s7, t0, 1
-                  c.addi     s2, -16
-                  auipc      gp, 291790
-                  c.addi     s9, 6
-                  auipc      a2, 387614
-                  auipc      t3, 779622
-                  lui        zero, 822729
-                  c.addi     s8, -4
-                  c.slli     s5, 29
-                  srai       s1, t5, 8
-                  remu       a7, tp, gp
-                  auipc      t4, 384941
-                  andi       a0, s3, 805
-                  c.addi     a5, 9
-                  c.sub      s1, a0
-                  c.lui      s7, 22
-                  nop
-                  add        t1, t6, a6
-                  lui        a3, 29435
-                  c.add      a5, a0
-                  c.andi     a0, -9
-                  remu       zero, s8, gp
-                  c.srli     a0, 7
-                  c.slli     s1, 12
-                  mulhsu     a1, s8, a5
-                  c.addi     a7, -8
-                  c.slli     t5, 5
-                  c.srai     s0, 13
-                  c.srai     s1, 20
-                  c.slli     s10, 27
-                  lui        s7, 593334
-                  c.addi     gp, -21
-                  slti       a7, t4, -513
-                  auipc      a5, 59022
-                  c.addi     a5, -11
-                  auipc      s9, 658138
-                  lui        a4, 874361
-                  auipc      s11, 985381
-                  c.addi     s6, 12
-                  auipc      s11, 147140
-                  c.addi     t5, -1
-                  fence.i
-                  c.slli     a6, 1
-                  auipc      a1, 248720
-                  xori       t2, s9, -254
-                  add        a7, s10, zero
-                  c.srli     s0, 6
-                  and        s3, s11, a3
-                  addi       s1, a1, 418
-                  c.srli     a2, 10
-                  mul        a6, s9, s9
-                  auipc      s4, 83414
-                  c.addi     t3, 29
-                  xor        s8, a3, s11
-                  c.srli     a4, 29
-                  c.lui      a2, 4
-                  c.srai     a2, 5
-                  c.slli     a0, 19
-                  nop
-                  c.addi     t3, 22
-                  c.srli     a2, 1
-                  sra        s2, ra, a0
-                  auipc      t1, 723947
-                  c.lui      a2, 28
-                  mulh       s11, s6, a1
-                  auipc      a3, 231331
-                  c.addi     s10, 27
-                  c.lui      s9, 29
-                  c.addi     a0, -5
-                  xori       t3, tp, -443
-                  sra        s2, ra, a5
-                  rem        t3, t3, a2
-                  auipc      s3, 141987
-                  lui        s11, 993312
-                  mulhsu     t5, s5, s1
-                  auipc      s10, 873125
-                  lui        s1, 55914
-                  c.addi     s8, -8
-                  c.addi     t1, 1
-                  auipc      a6, 890897
-                  c.srli     a3, 21
-                  c.addi     a4, 14
-                  slli       a0, s0, 3
-                  c.beqz     a4, 4309f
-                  c.srli     a5, 14
-                  c.addi     s5, -27
-                  auipc      s1, 72964
-                  lui        s0, 976843
-                  auipc      a3, 341822
-                  c.addi     t4, -6
-                  auipc      a7, 762922
-4309:             c.addi     s8, 28
-                  c.srai     a5, 4
-                  mulhsu     s5, s4, s0
-                  and        a0, s5, a7
-                  c.srai     s1, 4
-                  c.addi     gp, -25
-                  c.nop
-                  lui        a1, 225917
-                  auipc      t4, 631163
-                  c.addi     s7, -31
-                  c.addi     a4, 24
-                  auipc      t4, 676961
-                  bne        t5, s5, 4324f
-                  auipc      t3, 388077
-                  auipc      s10, 31265
-4324:             c.addi     s3, -6
-                  and        a1, gp, s9
-                  lui        t4, 816288
-                  c.addi     t1, -16
-                  c.slli     t5, 17
-                  c.slli     s5, 21
-                  add        t6, ra, t6
-                  c.addi     a7, -25
-                  div        t4, a3, a3
-                  c.lui      a6, 9
-                  c.addi     s5, 22
-                  c.srai     a0, 12
-                  c.addi     t3, -12
-                  c.lui      t4, 8
-                  c.addi     t2, -5
-                  c.addi     s1, 16
-                  c.srai     a0, 31
-                  lui        t5, 796312
-                  c.srai     a2, 14
-                  c.addi     s0, 26
-                  c.srli     a4, 23
-                  and        s10, t1, s9
-                  c.srli     s0, 15
-                  slti       s0, t3, 389
-                  c.addi     a0, -21
-                  lui        a3, 1014673
-                  c.addi     s10, -1
-                  fence
-                  c.slli     a5, 26
-                  slti       a6, t2, 716
-                  auipc      a3, 861151
-                  c.addi     a1, 8
-                  sltu       s7, a7, s8
-                  c.srli     a4, 10
-                  c.srai     a5, 6
-                  mulhu      s0, s11, s10
-                  c.lui      s9, 17
-                  c.addi     a5, 24
-                  c.srli     a3, 5
-                  lui        s3, 606985
-                  auipc      zero, 1011110
-                  mulhsu     t1, t3, a3
-                  c.addi     s0, -31
-                  lui        a1, 6400
-                  lui        a0, 443953
-                  c.srai     a3, 24
-                  c.addi     s0, 13
-                  c.addi     t1, 27
-                  c.srli     a5, 4
-                  xor        gp, a1, zero
-                  mulhu      s10, t5, s1
-                  c.srai     a4, 9
-                  c.slli     s2, 10
-                  auipc      t3, 145106
-                  lui        a2, 230282
-                  sra        a0, s10, s8
-                  auipc      a2, 283426
-                  lui        a5, 207359
-                  c.addi     a5, 30
-                  c.add      a5, s1
-                  c.addi     s7, 21
-                  c.addi     s0, -29
-                  rem        s3, a3, s4
-                  nop
-                  c.add      a5, a5
-                  c.srai     a4, 25
-                  sra        s2, zero, a7
-                  lui        t3, 582730
-                  c.lui      t4, 11
-                  ori        a3, t1, -32
-                  c.srli     a4, 4
-                  c.lui      s2, 25
-                  beq        a1, s3, 4414f
-                  c.addi     a2, 10
-                  c.addi     s6, 7
-                  c.addi     a4, 2
-                  auipc      a2, 840778
-                  bge        t3, a7, 4405f
-                  c.srli     a0, 22
-                  srai       t6, a4, 10
-                  auipc      s8, 699310
-4405:             or         s10, s1, t5
-                  c.addi     s9, 5
-                  c.addi     s9, -24
-                  c.addi     t4, -8
-                  c.mv       gp, s0
-                  c.lui      a5, 5
-                  c.nop
-                  auipc      s11, 30214
-                  auipc      s5, 280226
-4414:             auipc      t4, 851418
-                  auipc      t2, 744163
-                  lui        s5, 902376
-                  remu       a1, s7, t1
-                  fence
-                  c.slli     s4, 4
-                  auipc      s2, 734632
-                  slt        s6, t5, t5
-                  bltu       t4, zero, 4432f
-                  xor        zero, s7, zero
-                  slli       s2, s8, 5
-                  srl        s3, s9, zero
-                  c.addi     s5, 16
-                  lui        a0, 472024
-                  c.addi     t1, 8
-                  c.addi     t6, -31
-                  lui        s2, 724004
-                  slti       a5, s3, 272
-4432:             c.addi     s7, -26
-                  c.addi     t1, 7
-                  slt        a4, s1, t0
-                  slt        gp, t4, s9
-                  sll        gp, a7, s4
-                  divu       s10, a0, ra
-                  addi       s5, s11, 138
-                  lui        s2, 420567
-                  c.slli     a0, 24
-                  c.addi     a2, 18
-                  auipc      t3, 47286
-                  c.addi     s1, -7
-                  c.srli     a5, 28
-                  c.addi     s0, -13
-                  c.addi     t2, -32
-                  auipc      a0, 199552
-                  c.addi     gp, -12
-                  c.srai     a5, 11
-                  c.addi     t3, -7
-                  c.addi     s4, -32
-                  c.lui      t6, 11
-                  c.addi     a4, -14
-                  mul        a2, s11, s5
-                  auipc      a5, 636745
-                  c.addi     s6, 26
-                  lui        a1, 533414
-                  c.slli     a6, 20
-                  mulh       t3, sp, t5
-                  c.lui      s7, 2
-                  xori       s4, t5, 271
-                  mul        t6, s10, t1
-                  mulhu      gp, s10, a7
-                  c.addi     s9, -21
-                  c.addi     s0, 29
-                  c.srai     s0, 22
-                  c.addi     a7, -7
-                  c.slli     t3, 29
-                  c.lui      t4, 29
-                  c.srli     a5, 12
-                  c.srai     a2, 5
-                  lui        s6, 835969
-                  c.srli     a4, 23
-                  c.srli     a0, 7
-                  sll        s6, gp, s11
-                  c.srai     a5, 11
-                  auipc      a3, 652411
-                  auipc      t4, 930274
-                  srl        s0, s3, a2
-                  c.srai     a0, 3
-                  c.addi     s2, 4
-                  c.lui      a3, 9
-                  c.addi     gp, -15
-                  bge        a0, s5, 4494f
-                  c.srai     a0, 11
-                  bge        s8, t6, 4491f
-                  auipc      s8, 563934
-                  c.slli     t3, 5
-                  c.addi     s7, -22
-                  c.addi     s4, 1
-4491:             blt        t6, a2, 4507f
-                  c.addi     a2, 16
-                  c.addi     s10, -22
-4494:             c.slli     gp, 16
-                  c.addi     t4, 27
-                  lui        s6, 408265
-                  c.addi     s9, -25
-                  c.srli     a3, 21
-                  c.addi     a0, 24
-                  slti       a7, a0, -861
-                  c.addi     t6, 9
-                  c.and      a4, s0
-                  nop
-                  auipc      t1, 913741
-                  lui        a1, 648746
-                  lui        s11, 904945
-4507:             c.srai     a1, 22
-                  c.srai     a2, 25
-                  c.addi     s8, 6
-                  c.slli     a5, 28
-                  lui        a1, 756121
-                  auipc      s4, 136290
-                  slt        s5, a4, s7
-                  c.addi     a7, 14
-                  c.addi     t5, 21
-                  c.lui      t3, 7
-                  c.xor      s0, a4
-                  c.lui      s9, 4
-                  bne        s2, t5, 4530f
-                  xori       s9, t2, 595
-                  la         s11, data_page_6+2335 #start riscv_load_store_rand_instr_stream_66
-                  lb         s4, 628(s11)
-                  sh         s6, -365(s11)
-                  lb         a0, 1498(s11)
-                  sb         a7, 831(s11)
-                  c.nop
-                  sb         gp, 1284(s11)
-                  sb         t1, 998(s11)
-                  lhu        s9, 1747(s11)
-                  lbu        t3, 1299(s11)
-                  auipc      a5, 644480
-                  c.srai     s0, 20
-                  lb         s3, -1841(s11)
-                  lbu        t2, -274(s11)
-                  srl        s7, a0, sp
-                  c.addi     a5, 31
-                  sw         a1, 309(s11)
-                  remu       s2, a3, s7
-                  lbu        a3, 140(s11)
-                  sb         a3, -1328(s11)
-                  mul        s9, tp, s8
-                  lb         s1, -1846(s11)
-                  lhu        s7, -1657(s11)
-                  lh         s4, -1829(s11)
-                  addi       a5, s9, 166
-                  lui        s9, 82216
-                  sb         s10, -1246(s11)
-                  c.srai     a0, 23
-                  c.lui      a1, 26
-                  auipc      a2, 560078
-                  sh         a6, 941(s11)
-                  sb         s11, -341(s11)
-                  c.lui      s4, 5
-                  sb         t3, 1406(s11)
-                  sb         t2, 1749(s11)
-                  lb         s5, 1400(s11)
-                  lbu        a1, 1118(s11)
-                  c.slli     t3, 20
-                  lh         a3, 297(s11)
-                  lbu        a6, -1484(s11)
-                  lui        a4, 978621
-                  fence
-                  c.addi     t6, 28
-                  lb         a3, 1735(s11)
-                  auipc      a5, 277471
-                  sb         gp, -1166(s11) #end riscv_load_store_rand_instr_stream_66
-                  c.lui      a3, 21
-                  c.slli     t2, 12
-                  la         s7, data_page_18+1982 #start riscv_load_store_rand_instr_stream_68
-                  c.addi     a1, -13
-                  sb         s1, 1889(s7)
-                  c.addi     s11, -5
-                  lb         a4, -963(s7)
-                  auipc      a5, 599389
-                  c.or       a2, a2
-                  mul        t5, s5, t5
-                  fence
-                  lb         s1, -525(s7)
-                  c.and      a5, a2
-                  lbu        s6, -667(s7)
-                  c.srli     s1, 2
-                  c.addi     a3, 23
-                  auipc      t1, 168119
-                  lui        t1, 1043390
-                  c.slli     t1, 22
-                  lhu        s5, -364(s7)
-                  lb         s0, -1665(s7)
-                  div        a2, sp, a3
-                  sb         a6, -828(s7)
-                  c.lui      a6, 7
-                  c.addi     s5, -7
-                  c.addi     t5, -31
-                  add        a6, a6, sp
-                  c.add      a1, a5
-                  lhu        t6, -792(s7)
-                  c.slli     t2, 22
-                  lui        t5, 126243
-                  lbu        a6, -760(s7)
-                  lui        a0, 1043503
-                  c.slli     s3, 22
-                  auipc      t2, 571002
-                  lw         t2, 1586(s7)
-                  slt        t3, s9, zero
-                  auipc      s5, 96094
-                  auipc      s6, 255165
-                  lbu        s10, -403(s7)
-                  lui        s9, 970464
-                  c.lui      t3, 20
-                  c.addi     s1, 16
-                  sb         a5, 1220(s7)
-                  c.addi     t6, 17
-                  lbu        s2, 77(s7)
-                  sw         a1, 1950(s7) #end riscv_load_store_rand_instr_stream_68
-                  srli       s7, tp, 4
-                  c.addi     s9, 12
-                  sltu       t1, tp, s9
-                  c.addi     s1, -23
-                  c.srai     a1, 16
-                  sltiu      a0, s8, 610
-                  c.srli     a3, 2
-4530:             c.addi     s2, -23
-                  c.srli     a0, 21
-                  auipc      s8, 651943
-                  c.lui      a3, 14
-                  c.srli     a3, 20
-                  auipc      s7, 465333
-                  c.addi     a3, -11
-                  c.srai     a2, 12
-                  lui        t3, 982559
-                  c.addi     s4, 29
-                  xori       s8, zero, -493
-                  nop
-                  auipc      s8, 956215
-                  la         s11, data_page_15+1831 #start riscv_load_store_rand_instr_stream_58
-                  or         t4, a6, s10
-                  c.and      a2, a5
-                  c.addi     s1, -8
-                  sb         a6, 737(s11)
-                  lui        gp, 575660
-                  divu       t4, ra, a4
-                  lb         s9, 1414(s11)
-                  sb         t2, -1428(s11)
-                  lb         t3, 274(s11)
-                  mulhu      a0, t1, a7
-                  lb         s8, 90(s11)
-                  c.li       s9, 2
-                  sb         a2, 618(s11)
-                  sh         s7, 931(s11)
-                  lb         t2, 138(s11)
-                  lh         a4, 1011(s11)
-                  auipc      a2, 335282
-                  c.add      s1, a3
-                  c.addi     gp, -31
-                  c.addi     a6, 21
-                  auipc      zero, 923122
-                  lbu        a5, 231(s11)
-                  lhu        t2, 879(s11)
-                  sw         t6, -707(s11)
-                  c.slli     s0, 20
-                  mulhu      s4, t0, sp
-                  lui        s5, 511311
-                  lb         t6, 442(s11)
-                  lh         s0, -815(s11)
-                  c.li       t5, -9
-                  lbu        a6, -1313(s11)
-                  lhu        s10, 1963(s11)
-                  c.srai     a2, 30
-                  auipc      a7, 566302
-                  auipc      a5, 646040
-                  lw         a7, -1279(s11)
-                  fence.i
-                  c.li       s2, 30
-                  auipc      a0, 317318
-                  lh         s7, -1459(s11)
-                  lb         s0, 446(s11) #end riscv_load_store_rand_instr_stream_58
-                  auipc      s0, 325999
-                  c.addi     a5, 31
-                  lui        a3, 132916
-                  c.srai     s1, 9
-                  c.lui      s5, 5
-                  c.srli     a2, 31
-                  c.srli     a3, 29
-                  c.srai     a1, 8
-                  c.addi     a5, -12
-                  bne        ra, s3, 4554f
-                  c.addi     a5, -13
-4554:             c.addi     s3, -2
-                  lui        t2, 236932
-                  c.addi     a6, -31
-                  c.slli     a3, 28
-                  la         s10, data_page_11+1971 #start riscv_load_store_rand_instr_stream_6
-                  nop
-                  sb         t6, -629(s10)
-                  c.addi     s9, -32
-                  auipc      s3, 925628
-                  lbu        zero, -1817(s10)
-                  c.slli     s6, 3
-                  or         a7, t2, sp
-                  c.addi     s0, 28
-                  xor        a0, a4, s4
-                  lbu        a0, -1536(s10)
-                  lb         t1, -1182(s10)
-                  xori       a4, s11, 127
-                  lbu        s7, -338(s10)
-                  c.addi     s3, -22
-                  lbu        a5, -807(s10)
-                  c.mv       s2, a5
-                  c.srai     s0, 25
-                  lb         a3, 1420(s10)
-                  c.xor      a3, a1
-                  sb         a4, -638(s10)
-                  lui        a3, 360054
-                  c.addi     a6, -24
-                  lui        s1, 1025620
-                  c.sub      a1, a3
-                  lb         s2, -208(s10)
-                  sb         s2, -457(s10)
-                  lbu        s7, -816(s10)
-                  sb         s11, 1123(s10)
-                  lb         a2, 695(s10)
-                  c.addi     t3, 25
-                  lui        s2, 874784
-                  lhu        a5, 883(s10)
-                  sb         s4, 708(s10)
-                  lb         s6, -53(s10)
-                  lui        t6, 891818
-                  lh         s3, 1157(s10)
-                  c.addi     a5, 9
-                  c.addi     t6, 17
-                  c.lui      t6, 3
-                  lhu        t4, 571(s10)
-                  sb         zero, 814(s10)
-                  lui        s3, 557897
-                  lb         s6, 444(s10)
-                  c.addi     s6, -6
-                  lb         t6, -1412(s10)
-                  c.slli     s9, 14
-                  lb         a3, 1252(s10)
-                  c.srli     a3, 2
-                  lb         t5, -1753(s10) #end riscv_load_store_rand_instr_stream_6
-                  auipc      s5, 399855
-                  c.addi     s2, 11
-                  c.slli     s3, 8
-                  beq        s7, t0, 4575f
-                  c.lui      s11, 4
-                  c.addi     gp, -7
-                  c.addi     s0, 31
-                  c.addi     s3, -22
-                  c.slli     a1, 6
-                  auipc      a7, 660917
-                  auipc      a1, 28151
-                  auipc      s0, 110551
-                  c.andi     a2, 3
-                  c.addi     s7, -15
-                  lui        gp, 794557
-                  auipc      a3, 832147
-                  lui        s7, 348548
-4575:             c.addi     a0, -5
-                  c.srli     a2, 3
-                  bne        s3, a3, 4591f
-                  lui        a3, 313988
-                  lui        a4, 40263
-                  mul        t1, tp, zero
-                  nop
-                  c.addi     s11, 9
-                  c.andi     a4, -28
-                  c.addi     a2, -2
-                  c.addi     t5, -8
-                  mulhsu     zero, s8, t6
-                  auipc      a7, 140559
-                  c.lui      a5, 24
-                  slt        a7, s10, s6
-                  c.addi     s2, -12
-4591:             c.srli     a3, 1
-                  c.srli     a5, 7
-                  c.slli     t4, 29
-                  fence
-                  auipc      t3, 996736
-                  lui        t1, 890615
-                  c.or       a3, a5
-                  lui        s10, 188815
-                  fence.i
-                  c.slli     t4, 21
-                  c.addi     a6, -5
-                  c.xor      a1, s0
-                  lui        a7, 430332
-                  auipc      a7, 109331
-                  c.srli     a0, 4
-                  c.srai     s1, 28
-                  sll        a3, t2, sp
-                  c.lui      t1, 2
-                  c.addi     s5, 7
-                  lui        s0, 567848
-                  lui        s2, 329753
-                  div        a1, zero, sp
-                  c.srai     a1, 20
-                  c.slli     s4, 1
-                  lui        s2, 640068
-                  slt        a7, zero, ra
-                  auipc      s10, 371638
-                  lui        s10, 45665
-                  c.addi     s0, -2
-                  c.srai     a3, 25
-                  auipc      t3, 255572
-                  c.addi     t3, -23
-                  mulh       s9, s4, a2
-                  add        s7, t5, a6
-                  c.addi     t5, -13
-                  c.slli     a4, 16
-                  c.addi     t4, 22
-                  c.srli     a3, 13
-                  c.addi     s11, 12
-                  c.or       a2, a1
-                  c.sub      a0, a3
-                  addi       s9, t3, -249
-                  lui        a1, 238451
-                  lui        t6, 365134
-                  lui        a6, 887286
-                  c.lui      a0, 17
-                  c.mv       s8, a1
-                  lui        zero, 712323
-                  addi       s8, s0, -18
-                  c.lui      s5, 23
-                  srl        t5, a6, s1
-                  c.srli     s1, 20
-                  c.srai     a4, 24
-                  lui        a4, 165270
-                  lui        s5, 282653
-                  c.addi     s1, -18
-                  c.addi     s4, -8
-                  c.addi     t1, 28
-                  c.addi     a5, -30
-                  c.addi     s7, -20
-                  c.slli     s9, 17
-                  c.srai     s0, 4
-                  beq        ra, a3, 4661f
-                  add        t3, a1, s1
-                  c.srli     a1, 1
-                  c.addi     s9, -19
-                  c.lui      s11, 16
-                  c.addi     gp, -11
-                  c.srli     a3, 24
-                  bne        a5, t1, 4677f
-4661:             auipc      zero, 90440
-                  c.srai     s1, 27
-                  c.addi     a1, 9
-                  c.addi     a0, 11
-                  c.lui      s2, 13
-                  divu       a2, s2, t2
-                  c.addi     s6, -9
-                  c.srai     s0, 21
-                  c.srai     a5, 20
-                  c.addi     a5, -4
-                  c.addi     t1, -14
-                  c.addi     s10, 23
-                  c.addi     s1, 5
-                  c.srli     a2, 16
-                  nop
-                  c.srai     a3, 6
-4677:             c.addi     t2, 31
-                  auipc      s8, 504364
-                  c.srli     a2, 27
-                  c.addi     s4, 27
-                  c.or       a2, a4
-                  mulhsu     a1, s11, t5
-                  c.lui      a7, 23
-                  c.srai     a4, 14
-                  c.addi     a5, -27
-                  lui        s7, 937973
-                  c.slli     a2, 13
-                  c.xor      s1, a5
-                  rem        a1, t1, s0
-                  c.xor      a4, a0
-                  auipc      a7, 180322
-                  c.addi     s11, 20
-                  c.lui      s6, 31
-                  c.addi     t1, -13
-                  slt        a2, s4, t2
-                  lui        a4, 332318
-                  sltiu      a1, s2, 883
-                  auipc      t1, 860042
-                  c.and      a5, a3
-                  c.srai     a2, 7
-                  c.addi     t1, 3
-                  c.addi     s7, -12
-                  auipc      t6, 833854
-                  lui        a1, 5711
-                  auipc      gp, 1014400
-                  lui        s3, 999928
-                  c.addi     a7, -13
-                  mulh       a6, t6, s2
-                  fence.i
-                  auipc      s3, 465351
-                  c.addi     a7, 29
-                  c.addi     t6, -17
-                  lui        a5, 315945
-                  c.or       a5, a0
-                  lui        s1, 169703
-                  c.addi     s3, -7
-                  or         a7, gp, s10
-                  c.addi     a4, 26
-                  c.slli     s3, 23
-                  c.srli     a0, 24
-                  c.addi     a4, 16
-                  c.srai     a2, 26
-                  c.addi     t1, 29
-                  c.srai     a5, 5
-                  c.addi     gp, 20
-                  c.lui      s4, 23
-                  auipc      s11, 311221
-                  fence.i
-                  c.addi     a2, -28
-                  sll        t4, zero, t5
-                  sll        a0, gp, a4
-                  c.addi     t4, 25
-                  c.and      a2, a2
-                  c.srai     a2, 2
-                  c.addi     a4, -21
-                  c.addi     t4, -22
-                  c.addi     t6, -8
-                  c.addi     s0, 26
-                  c.addi     a7, -15
-                  c.srai     a1, 28
-                  c.srai     a3, 13
-                  slt        s6, tp, gp
-                  or         a3, s5, s8
-                  c.addi     a1, -17
-                  c.addi     a4, -10
-                  c.addi     s5, -29
-                  auipc      a1, 502577
-                  c.addi     a3, -17
-                  c.lui      t2, 21
-                  lui        a4, 304520
-                  c.addi     t3, 14
-                  lui        s7, 889348
-                  div        a0, ra, s9
-                  c.srai     a0, 8
-                  c.addi     s9, -9
-                  c.or       s0, s0
-                  c.srli     a4, 28
-                  lui        a5, 219914
-                  lui        a0, 316260
-                  c.lui      a0, 31
-                  auipc      t3, 859197
-                  c.mv       s1, s3
-                  c.addi     s9, 25
-                  c.addi     s10, -24
-                  fence.i
-                  c.addi     a0, -32
-                  nop
-                  lui        a7, 463008
-                  c.srai     a5, 22
-                  c.addi     s3, 7
-                  c.srai     a5, 19
-                  xori       t2, gp, -1009
-                  c.addi     s10, -8
-                  mulhu      s11, s0, ra
-                  c.addi     s9, -20
-                  c.slli     s7, 9
-                  c.srli     a0, 7
-                  c.slli     a3, 16
-                  and        a0, a5, t5
-                  c.srai     a4, 19
-                  lui        t2, 466581
-                  c.lui      s11, 15
-                  bge        a6, s6, 4792f
-                  c.slli     s3, 19
-                  c.slli     s11, 4
-                  c.addi     a6, -1
-                  srli       a4, a3, 22
-                  c.slli     t3, 11
-                  c.and      s0, a2
-                  c.lui      t2, 1
-                  c.addi     t1, -14
-4792:             c.addi     t2, -5
-                  sll        s6, t4, a4
-                  c.addi     s4, 24
-                  auipc      s6, 563201
-                  lui        a3, 292051
-                  c.slli     s10, 3
-                  bne        sp, s9, 4799f
-4799:             c.addi     s8, -14
-                  c.li       a1, 5
-                  or         s2, sp, s6
-                  lui        a1, 250240
-                  c.addi     s6, -14
-                  c.addi     t6, 26
-                  c.slli     s9, 19
-                  c.addi     s5, 13
-                  and        gp, t2, t1
-                  c.lui      t1, 7
-                  c.addi     s10, -15
-                  srli       t2, t4, 12
-                  c.lui      a3, 26
-                  c.addi     a2, 1
-                  lui        gp, 996606
-                  c.slli     t6, 20
-                  c.lui      a3, 14
-                  c.srli     a0, 30
-                  c.addi     t2, -21
-                  nop
-                  c.addi     t2, 29
-                  slli       t5, a6, 26
-                  c.addi     s6, 30
-                  lui        s4, 659953
-                  c.addi     gp, 29
-                  c.srli     a5, 18
-                  c.srai     a5, 7
-                  auipc      t5, 1033850
-                  lui        s5, 81019
-                  addi       s7, t0, -849
-                  c.slli     s5, 2
-                  c.or       a3, a3
-                  c.srai     a0, 3
-                  c.lui      t4, 19
-                  c.addi     a6, 17
-                  c.addi     s5, 16
-                  c.srli     a2, 10
-                  lui        s8, 766742
-                  c.addi     a6, 28
-                  c.nop
-                  lui        a4, 225744
-                  lui        t2, 190057
-                  c.srli     a4, 24
-                  mulh       s11, a6, t1
-                  c.srai     s1, 17
-                  auipc      a4, 816702
-                  c.addi     s3, 10
-                  auipc      a0, 68611
-                  c.mv       s2, ra
-                  fence
-                  beq        ra, sp, 4867f
-                  mul        s1, t3, a5
-                  auipc      s4, 869470
-                  c.slli     t5, 3
-                  c.addi     t3, 3
-                  lui        a4, 793230
-                  c.lui      s1, 12
-                  c.addi     a3, -2
-                  sra        a3, a5, a0
-                  c.addi     a0, 21
-                  beq        a6, a3, 4866f
-                  auipc      a2, 319873
-                  lui        a2, 304187
-                  c.lui      a4, 19
-                  c.addi     a3, -13
-                  c.addi     t3, 20
-                  c.addi     s5, 22
-4866:             c.addi     a6, -14
-4867:             c.srli     a1, 10
-                  auipc      zero, 551031
-                  fence
-                  c.addi     s1, -17
-                  lui        a2, 71385
-                  c.andi     a5, 3
-                  c.srai     s1, 18
-                  slti       s11, s6, 283
-                  c.addi     s2, 13
-                  lui        t6, 791507
-                  la         s3, data_page_9+1954 #start riscv_load_store_rand_instr_stream_9
-                  ori        s2, a2, -189
-                  lb         a6, 1579(s3)
-                  auipc      a7, 898302
-                  lb         a1, -681(s3)
-                  auipc      t3, 412787
-                  lhu        s4, 1612(s3)
-                  sb         t6, 29(s3)
-                  c.srai     a0, 26
-                  auipc      s1, 339851
-                  c.addi     t4, 13
-                  xori       a4, gp, -633
-                  divu       t4, a0, a5
-                  lbu        t5, 859(s3)
-                  c.slli     s5, 25
-                  c.mv       s1, s10
-                  lh         gp, -1560(s3)
-                  c.addi     a4, -7
-                  lb         s10, -1723(s3)
-                  srli       s1, s11, 10
-                  xor        s1, s8, s1
-                  sltiu      s4, s3, 491
-                  lw         t3, -470(s3)
-                  lbu        t2, 1121(s3)
-                  slli       a5, gp, 12
-                  c.slli     t4, 24
-                  c.addi     s9, 6
-                  sltiu      t4, s9, 646
-                  sb         s5, 579(s3)
-                  lbu        s11, 1208(s3)
-                  sb         s7, -296(s3)
-                  sb         a5, 921(s3)
-                  lbu        a2, -127(s3)
-                  sb         zero, 543(s3)
-                  c.addi     a2, -7
-                  lui        a6, 289915
-                  sb         s1, 977(s3)
-                  lw         t1, 598(s3)
-                  lb         s7, -968(s3)
-                  lb         s1, 1407(s3)
-                  mul        a7, t6, s11
-                  sh         tp, 440(s3)
-                  lbu        s11, -1945(s3)
-                  auipc      a1, 99547
-                  lb         s5, 241(s3)
-                  c.addi     s1, 10
-                  lui        a6, 1008720
-                  c.addi     a6, 23
-                  c.nop
-                  slt        s4, gp, t0
-                  lbu        s11, -107(s3)
-                  lui        s9, 665050
-                  sb         t1, 1053(s3)
-                  sb         s7, 243(s3)
-                  lh         a1, 128(s3) #end riscv_load_store_rand_instr_stream_9
-                  auipc      a3, 275463
-                  sub        s11, sp, t6
-                  srai       gp, a6, 22
-                  c.addi     a6, 15
-                  c.lui      t1, 20
-                  c.lui      s4, 26
-                  c.addi     t1, 30
-                  c.andi     a4, 17
-                  c.lui      a1, 22
-                  auipc      a0, 349323
-                  auipc      s3, 754968
-                  c.sub      a1, s1
-                  lui        s3, 1585
-                  lui        t2, 811924
-                  c.lui      a7, 5
-                  c.addi     s8, 8
-                  c.addi     t2, -17
-                  c.srai     a4, 29
-                  c.xor      s0, s0
-                  c.addi     s6, 22
-                  c.srli     a0, 2
-                  sltiu      a7, s2, -917
-                  c.lui      a7, 26
-                  c.addi     s8, 12
-                  c.mv       a4, ra
-                  lui        t2, 467925
-                  c.addi     s9, -23
-                  c.srai     a4, 16
-                  auipc      zero, 553705
-                  c.srli     a0, 9
-                  sll        s2, s1, a7
-                  c.addi     t1, 28
-                  c.addi     s6, 2
-                  lui        a7, 820104
-                  slti       s7, ra, -212
-                  c.andi     a1, -17
-                  auipc      a7, 99103
-                  auipc      s9, 567717
-                  lui        a1, 760470
-                  c.addi     a1, 9
-                  auipc      s8, 603303
-                  lui        t6, 781280
-                  c.srai     s0, 22
-                  lui        a7, 519407
-                  auipc      t1, 100859
-                  c.addi     a0, -2
-                  lui        s6, 172029
-                  c.addi     a2, -23
-                  c.addi     s6, 22
-                  c.addi     t2, 6
-                  c.addi     a1, 14
-                  auipc      t5, 706283
-                  auipc      s5, 343012
-                  c.slli     t5, 12
-                  c.lui      s0, 24
-                  auipc      s9, 950928
-                  c.and      a4, a3
-                  c.srli     s1, 19
-                  lui        a2, 447292
-                  auipc      t6, 28004
-                  auipc      zero, 37888
-                  auipc      t1, 566584
-                  c.srai     a3, 15
-                  c.addi     s4, 4
-                  auipc      s10, 920842
-                  xor        s6, t2, s0
-                  c.srai     s0, 18
-                  auipc      a4, 720670
-                  c.srai     a0, 15
-                  c.addi     s1, 13
-                  c.nop
-                  lui        s11, 65000
-                  lui        s8, 446185
-                  c.addi     a2, 15
-                  c.or       a2, a1
-                  mul        t4, s7, s4
-                  auipc      s5, 988581
-                  div        s0, a6, ra
-                  srl        t1, zero, s8
-                  lui        t4, 923755
-                  c.addi     s11, -5
-                  auipc      a3, 731520
-                  fence.i
-                  addi       gp, t5, 424
-                  c.addi     s8, -15
-                  c.slli     t5, 31
-                  lui        a7, 679813
-                  c.addi     s4, 15
-                  c.srai     a2, 29
-                  c.addi     t5, -15
-                  c.slli     a5, 24
-                  div        s9, s9, a7
-                  c.addi     a2, 24
-                  c.srai     a1, 22
-                  auipc      s6, 783877
-                  c.addi     t6, -12
-                  c.srli     s1, 2
-                  auipc      t1, 178850
-                  bne        t2, s0, 4980f
-                  c.addi     s11, 19
-                  c.lui      gp, 7
-                  lui        zero, 318426
-                  c.addi     s6, 23
-4980:             c.srli     a2, 3
-                  auipc      zero, 122050
-                  c.lui      t6, 5
-                  c.bnez     s1, 4998f
-                  c.srli     a5, 28
-                  c.addi     t3, 14
-                  or         a6, s5, t3
-                  addi       a7, a2, -645
-                  lui        t3, 624335
-                  c.srli     a3, 20
-                  lui        a7, 105917
-                  bge        s10, tp, 4997f
-                  fence
-                  c.srai     s1, 6
-                  c.lui      t2, 2
-                  c.addi     t6, 26
-                  lui        s1, 755816
-4997:             lui        a3, 395594
-4998:             lui        a3, 526044
-                  srai       s8, s4, 4
-                  c.sub      a3, a2
-                  c.lui      s4, 24
-                  sltiu      gp, s10, 442
-                  la         s11, data_page_2+2354 #start riscv_load_store_rand_instr_stream_18
-                  sb         t5, 1523(s11)
-                  lui        s0, 542801
-                  lbu        s6, -1360(s11)
-                  c.addi     a0, -28
-                  lui        a7, 453107
-                  lb         a5, -1858(s11)
-                  lb         s2, -1863(s11)
-                  c.slli     a1, 2
-                  sw         s3, 1410(s11)
-                  sh         zero, -1290(s11)
-                  c.addi     t2, 27
-                  sb         a2, -1927(s11)
-                  c.slli     s0, 1
-                  lb         s5, 1691(s11)
-                  sb         s4, 967(s11)
-                  lui        s10, 251240
-                  c.or       a4, s0
-                  lbu        s1, 1045(s11)
-                  c.addi     gp, 18
-                  sh         a5, -152(s11)
-                  c.li       t4, 6
-                  c.lui      t6, 3
-                  lb         a3, -489(s11)
-                  lhu        s8, -568(s11)
-                  sh         t0, -1480(s11)
-                  lhu        s7, 220(s11)
-                  sb         t4, 1553(s11)
-                  lhu        s10, -1004(s11)
-                  c.lui      a3, 19
-                  lbu        t4, -1159(s11)
-                  lb         a5, -745(s11)
-                  sb         a7, -1277(s11)
-                  c.slli     a7, 23
-                  lh         s8, -782(s11)
-                  lbu        s3, 263(s11)
-                  lb         s1, 739(s11)
-                  lbu        t4, -1347(s11)
-                  sw         gp, 574(s11)
-                  sw         zero, -242(s11)
-                  lbu        s5, -1339(s11) #end riscv_load_store_rand_instr_stream_18
-                  c.srai     a1, 12
-                  mul        a2, a0, t2
-                  nop
-                  c.srli     a4, 19
-                  mulhsu     a6, s11, s11
-                  c.srai     a2, 15
-                  c.addi     s7, -5
-                  lui        s4, 598921
-                  c.addi     s3, 1
-                  c.lui      s6, 21
-                  c.srli     a5, 17
-                  c.addi     s5, -14
-                  c.srli     s0, 15
-                  c.addi     a7, -5
-                  mulhsu     a4, s10, ra
-                  lui        s9, 907628
-                  lui        gp, 1042829
-                  c.addi     a5, -9
-                  lui        s5, 577314
-                  lui        s5, 524637
-                  lui        a6, 538829
-                  c.lui      t6, 15
-                  c.srli     a2, 3
-                  c.slli     a2, 24
-                  c.addi     a3, 12
-                  auipc      t5, 269684
-                  c.addi     t6, -27
-                  c.addi     s3, -13
-                  c.addi     a0, -26
-                  mulhu      s3, a6, s7
-                  c.slli     t3, 1
-                  lui        s7, 702027
-                  c.addi     t2, -7
-                  c.srai     s0, 18
-                  addi       s0, t3, -915
-                  andi       a3, s0, 587
-                  c.slli     a6, 15
-                  srli       t1, s3, 17
-                  auipc      a2, 227992
-                  c.srai     a5, 19
-                  c.addi     s10, -11
-                  auipc      gp, 333151
-                  sll        a4, s2, a4
-                  c.addi     a3, -9
-                  c.addi     a0, 19
-                  lui        a7, 720979
-                  auipc      s2, 529174
-                  c.addi     s11, 11
-                  c.addi     a4, 27
-                  c.srli     s0, 25
-                  c.lui      s9, 15
-                  auipc      s4, 401120
-                  c.srai     a1, 4
-                  c.beqz     a3, 5071f
-                  c.slli     t2, 11
-                  la         gp, data_page_4+1814 #start riscv_load_store_rand_instr_stream_27
-                  c.addi     s10, -12
-                  sh         t4, -272(gp)
-                  lb         a6, 1653(gp)
-                  c.addi     s10, -24
-                  c.addi     s0, 22
-                  c.addi     s5, 11
-                  ori        t6, s1, 1011
-                  auipc      t6, 563090
-                  lui        s1, 429013
-                  sb         t4, -1163(gp)
-                  c.addi     a1, 16
-                  lui        s2, 668978
-                  lbu        s10, -709(gp)
-                  lb         s8, -522(gp)
-                  c.srli     s1, 29
-                  c.addi     s11, -8
-                  lui        zero, 3671
-                  c.srli     s0, 17
-                  c.mv       s3, t0
-                  sb         a2, -56(gp)
-                  srai       t6, a0, 14
-                  fence
-                  sb         tp, -1531(gp)
-                  mulhu      t1, a0, sp
-                  remu       a7, s1, s1
-                  lbu        t2, 798(gp)
-                  auipc      t6, 229513
-                  c.lui      t5, 11
-                  lbu        s0, -1172(gp)
-                  lb         a2, 1032(gp) #end riscv_load_store_rand_instr_stream_27
-                  fence.i
-                  c.srli     a5, 13
-                  remu       gp, s9, s8
-                  c.addi     gp, -23
-                  lui        s10, 713972
-                  c.addi     s1, -7
-                  c.addi     s1, 2
-                  c.srli     a3, 24
-                  c.srli     a1, 1
-                  c.srli     a1, 9
-                  c.addi     s6, 22
-                  or         s9, s10, gp
-                  lui        t5, 754140
-5071:             c.srli     a2, 20
-                  sra        a2, t0, t0
-                  lui        s11, 122626
-                  c.addi     a4, 7
-                  mul        t6, a0, t0
-                  lui        t5, 798975
-                  fence.i
-                  c.addi     t5, -11
-                  c.add      a3, s1
-                  c.add      s0, a4
-                  bltu       tp, t5, 5091f
-                  lui        a1, 103973
-                  srli       a6, s6, 5
-                  auipc      t5, 813332
-                  lui        a4, 155722
-                  fence
-                  auipc      t4, 326660
-                  c.slli     s4, 18
-                  addi       s7, s5, -973
-                  auipc      s1, 1020772
-5091:             slti       s0, s2, -326
-                  bne        s2, a3, 5097f
-                  c.slli     s3, 8
-                  lui        s0, 1048015
-                  c.addi     s0, -5
-                  auipc      a6, 459818
-5097:             mulh       s0, a1, a4
-                  c.srai     s1, 25
-                  auipc      gp, 306262
-                  c.addi     s1, 10
-                  auipc      s5, 478931
-                  c.addi     t2, 25
-                  c.addi     s4, -24
-                  c.addi     s1, -20
-                  c.addi     gp, 30
-                  lui        s4, 365009
-                  andi       a1, t2, -33
-                  lui        a3, 318987
-                  lui        t5, 620716
-                  c.srli     a1, 27
-                  c.addi     a1, 9
-                  c.addi     a3, -32
-                  lui        a0, 303348
-                  c.slli     a7, 20
-                  c.addi     a0, 10
-                  auipc      s3, 137555
-                  c.addi     s2, 19
-                  auipc      a2, 709727
-                  remu       a2, a3, t1
-                  lui        s7, 484661
-                  lui        a5, 883040
-                  c.and      s0, a4
-                  c.addi     a2, -1
-                  fence.i
-                  lui        s9, 920008
-                  addi       s9, s2, 920
-                  divu       s4, a6, a6
-                  c.addi     s1, 16
-                  lui        a0, 922162
-                  c.addi     s0, -22
-                  bltu       a6, a6, 5133f
-                  c.srai     a5, 16
-5133:             c.addi     a7, 4
-                  srli       a0, a6, 11
-                  c.addi     a2, -2
-                  auipc      s7, 32546
-                  c.lui      a7, 9
-                  auipc      zero, 54333
-                  c.beqz     s1, 5146f
-                  c.addi     s11, -3
-                  auipc      s5, 862873
-                  c.lui      s3, 26
-                  c.beqz     a4, 5158f
-                  addi       s4, s3, -400
-                  auipc      a3, 922009
-5146:             bgeu       ra, a0, 5163f
-                  lui        t3, 508266
-                  c.addi     a7, -4
-                  bltu       a1, s8, 5159f
-                  c.srli     a5, 12
-                  c.or       s1, a1
-                  sub        a7, t1, t3
-                  auipc      gp, 246838
-                  mulhsu     t6, s6, s0
-                  c.andi     a5, 24
-                  c.addi     a2, -24
-                  slli       a1, a3, 21
-5158:             lui        a4, 851980
-5159:             lui        t6, 728960
-                  auipc      a2, 719883
-                  rem        t1, ra, sp
-                  sub        s10, t2, sp
-5163:             srai       a4, s8, 26
-                  lui        t1, 690351
-                  c.addi     s9, -12
-                  auipc      a3, 443749
-                  c.addi     s2, -28
-                  add        t4, a4, tp
-                  c.addi     s2, 22
-                  c.lui      s8, 12
-                  c.addi     a5, -5
-                  divu       zero, s1, gp
-                  c.addi     a1, 3
-                  c.addi     t4, 24
-                  c.addi     a0, -28
-                  auipc      a5, 730203
-                  auipc      s9, 107987
-                  c.addi     t2, 24
-                  c.lui      a0, 15
-                  beq        s3, s6, 5194f
-                  c.lui      a1, 12
-                  beq        t0, s9, 5202f
-                  c.srli     a2, 4
-                  lui        a1, 227759
-                  c.lui      a5, 18
-                  c.addi     a7, -23
-                  c.lui      s2, 11
-                  sltu       zero, t0, gp
-                  c.lui      t6, 22
-                  c.addi     a2, 10
-                  c.slli     a6, 19
-                  c.lui      s2, 23
-                  slli       s7, t5, 10
-5194:             addi       t4, s4, -143
-                  c.addi     t1, -14
-                  auipc      gp, 687633
-                  lui        s6, 631959
-                  srai       a6, s5, 26
-                  c.addi     t2, -21
-                  xor        t6, a1, a3
-                  lui        a7, 968854
-5202:             mulhu      s3, t0, a0
-                  auipc      a7, 286318
-                  srli       gp, s7, 30
-                  srl        t6, s7, t1
-                  xori       s4, a3, 332
-                  sub        t1, s2, t0
-                  c.addi     s10, -4
-                  c.slli     s4, 24
-                  divu       t5, a7, a2
-                  auipc      t1, 90801
-                  c.li       a5, 20
-                  c.xor      a4, a3
-                  auipc      s10, 358164
-                  c.lui      s1, 1
-                  c.xor      a5, a2
-                  c.addi     t4, 7
-                  c.srli     s1, 6
-                  auipc      t1, 467726
-                  c.mv       a5, t4
-                  lui        a6, 403960
-                  auipc      s11, 1021220
-                  c.addi     gp, -17
-                  c.srai     a1, 15
-                  bltu       s0, a7, 5232f
-                  bne        s4, s1, 5237f
-                  c.slli     s6, 18
-                  c.addi     s1, -17
-                  c.addi     s3, 3
-                  auipc      zero, 455709
-                  lui        a1, 354633
-5232:             c.addi     s6, 29
-                  auipc      s11, 570461
-                  lui        a7, 664342
-                  c.addi     s7, 29
-                  mul        s5, gp, a0
-5237:             c.addi     s1, -23
-                  xor        a0, s7, tp
-                  c.srai     s1, 27
-                  c.lui      a3, 1
-                  lui        t5, 132062
-                  c.addi     a3, 27
-                  c.addi     t6, -28
-                  c.srai     a3, 4
-                  c.slli     s11, 25
-                  c.addi     t1, 28
-                  rem        a4, zero, gp
-                  c.slli     s2, 2
-                  c.andi     a3, 28
-                  c.addi     s10, -25
-                  c.addi     s7, 11
-                  c.lui      t3, 10
-                  div        s2, s0, a3
-                  lui        s3, 591615
-                  c.srli     a4, 17
-                  lui        a0, 712408
-                  c.addi     s10, -8
-                  lui        s9, 234500
-                  c.addi     s0, 29
-                  c.slli     t3, 22
-                  c.addi     a4, -16
-                  c.and      a3, a3
-                  c.addi     t5, -14
-                  auipc      t3, 231942
-                  c.lui      a6, 3
-                  slti       a7, s1, 865
-                  c.addi     s6, -20
-                  rem        a1, a3, a2
-                  la         a7, data_page_9+2263 #start riscv_load_store_rand_instr_stream_65
-                  sb         s7, -1524(a7)
-                  lw         zero, -567(a7)
-                  auipc      s5, 713840
-                  c.addi     t5, -16
-                  sb         a4, -8(a7)
-                  c.srai     s1, 12
-                  c.srli     a5, 2
-                  lbu        s11, -466(a7)
-                  c.addi     s10, 24
-                  lb         a2, -2002(a7)
-                  auipc      a0, 320817
-                  sw         t4, -1935(a7)
-                  c.slli     a4, 13
-                  sb         t0, 1800(a7)
-                  lbu        s0, 3(a7)
-                  lb         s3, 320(a7)
-                  lb         t3, -766(a7)
-                  lh         t1, 1765(a7)
-                  auipc      t4, 117758
-                  lbu        t6, -1730(a7)
-                  lb         s4, -1284(a7)
-                  lbu        t5, 927(a7)
-                  lui        t2, 834018
-                  lhu        s9, -467(a7)
-                  lbu        s11, 738(a7)
-                  lw         s10, -247(a7)
-                  lb         t3, -593(a7)
-                  sb         zero, 1437(a7)
-                  c.addi     s9, 28
-                  lbu        t1, -178(a7)
-                  auipc      s3, 38290
-                  sb         a5, 1176(a7)
-                  lbu        gp, 1472(a7)
-                  sh         ra, -897(a7)
-                  addi       s1, t1, 853
-                  sb         t6, 170(a7)
-                  c.addi     s10, 16
-                  lb         t2, 1542(a7)
-                  lhu        gp, 1779(a7)
-                  sh         s4, 561(a7)
-                  lh         t3, 781(a7)
-                  lb         t3, 1679(a7) #end riscv_load_store_rand_instr_stream_65
-                  auipc      a2, 497299
-                  srai       t1, s0, 26
-                  c.slli     s7, 18
-                  sub        a0, t0, t5
-                  c.srli     s0, 2
-                  sra        a1, zero, s8
-                  slti       a1, s3, 196
-                  auipc      a5, 270955
-                  mulh       a0, t3, a4
-                  auipc      a0, 376150
-                  c.addi     s7, -24
-                  c.srli     a3, 18
-                  c.lui      t1, 14
-                  auipc      s5, 876885
-                  c.srli     a5, 23
-                  c.srli     a1, 17
-                  auipc      s7, 412135
-                  c.slli     a1, 9
-                  auipc      s6, 5210
-                  c.addi     s5, -18
-                  auipc      a0, 257487
-                  auipc      t5, 653900
-                  c.addi     s5, -30
-                  c.lui      s2, 25
-                  c.srai     s0, 12
-                  c.srai     s1, 2
-                  lui        s3, 736367
-                  c.addi     s8, 2
-                  c.srli     a0, 27
-                  c.srai     a4, 8
-                  and        s7, ra, gp
-                  add        a1, s5, s9
-                  c.srai     a4, 1
-                  c.addi     s10, 7
-                  or         t2, s5, t0
-                  c.slli     s6, 29
-                  c.addi     t5, -18
-                  fence.i
-                  c.srai     a1, 4
-                  c.srli     a3, 19
-                  c.srli     a5, 26
-                  c.and      a0, s0
-                  auipc      t3, 152265
-                  c.addi     t2, -31
-                  c.addi     a1, 25
-                  auipc      t2, 624278
-                  c.slli     s5, 28
-                  c.slli     a6, 28
-                  beq        sp, s0, 5333f
-                  auipc      s0, 819747
-                  slt        a4, sp, a6
-                  sub        s2, s7, a7
-                  c.sub      s0, s0
-                  lui        s10, 104624
-                  la         s11, data_page_8+1167 #start riscv_load_store_rand_instr_stream_29
-                  sb         s5, 46(s11)
-                  lb         s10, 428(s11)
-                  c.lui      s1, 9
-                  lb         s9, 999(s11)
-                  lb         s7, 683(s11)
-                  lbu        t5, 992(s11)
-                  lbu        zero, 260(s11)
-                  sh         a7, -1089(s11)
-                  srai       a3, t3, 0
-                  sb         ra, 27(s11)
-                  auipc      a3, 703150
-                  sb         s9, 367(s11)
-                  lh         a4, 1849(s11)
-                  sb         s10, 1700(s11)
-                  lb         s9, 362(s11)
-                  c.srai     a0, 26
-                  sb         a7, 1796(s11)
-                  c.andi     a0, -19
-                  c.srli     s0, 31
-                  rem        s4, t5, a7
-                  lui        gp, 786240
-                  lhu        t2, 1369(s11)
-                  lw         s0, 385(s11)
-                  lui        s4, 945939
-                  sb         s11, 913(s11)
-                  lui        s8, 853793
-                  lbu        a7, 1358(s11)
-                  lbu        a5, -406(s11) #end riscv_load_store_rand_instr_stream_29
-                  lui        gp, 112295
-                  c.mv       s6, t3
-                  c.srli     a0, 30
-                  c.slli     a3, 15
-                  c.addi     t3, 26
-                  c.slli     s2, 27
-                  c.addi     s3, -21
-                  c.addi     s5, 6
-                  c.addi     s0, -16
-                  c.bnez     a0, 5339f
-5333:             auipc      a1, 131317
-                  c.slli     a3, 12
-                  c.xor      a4, a0
-                  auipc      s11, 17861
-                  sub        s0, a1, a2
-                  c.slli     gp, 14
-5339:             lui        zero, 307184
-                  c.add      a1, a3
-                  c.srai     s1, 9
-                  auipc      t6, 754568
-                  and        a3, t3, s0
-                  c.lui      a2, 19
-                  c.or       a2, a2
-                  c.addi     s11, 5
-                  lui        s5, 454852
-                  auipc      zero, 1007352
-                  c.srai     a5, 26
-                  auipc      a3, 439487
-                  auipc      s8, 469339
-                  andi       zero, s2, -902
-                  c.lui      a2, 29
-                  c.lui      t5, 27
-                  auipc      s9, 145447
-                  c.sub      s0, s1
-                  c.xor      a2, a4
-                  c.addi     t1, -9
-                  sltu       t6, tp, s3
-                  c.addi     a0, -19
-                  lui        t1, 1037414
-                  c.mv       s4, t6
-                  c.lui      gp, 28
-                  lui        t3, 968328
-                  nop
-                  c.sub      a3, a1
-                  addi       t1, s2, 517
-                  c.addi     gp, -18
-                  c.srli     a5, 11
-                  auipc      s4, 254654
-                  c.lui      s0, 28
-                  auipc      t4, 777825
-                  c.slli     a0, 25
-                  c.addi     s9, -4
-                  mulhsu     a4, s6, s9
-                  auipc      a4, 1025193
-                  c.addi     t5, -1
-                  c.slli     a2, 29
-                  sltiu      t6, a2, -304
-                  slli       zero, t0, 27
-                  c.addi     s2, 16
-                  lui        t1, 1032707
-                  c.lui      s10, 25
-                  c.xor      s1, s0
-                  c.addi     t3, -28
-                  c.addi     a7, -20
-                  c.beqz     a4, 5390f
-                  auipc      a7, 567191
-                  lui        t1, 990121
-5390:             or         s6, tp, t5
-                  c.addi     s0, 10
-                  c.addi     a0, -20
-                  c.mv       gp, tp
-                  auipc      s3, 219421
-                  c.or       a5, a2
-                  c.addi     s1, 4
-                  bgeu       t3, s4, 5408f
-                  c.lui      t4, 9
-                  c.addi     a4, 20
-                  c.addi     a4, -30
-                  lui        t2, 194675
-                  c.srai     a2, 13
-                  auipc      a2, 1036905
-                  c.li       s4, 9
-                  c.lui      a4, 14
-                  sub        a2, s8, s2
-                  lui        s8, 876613
-5408:             mulhsu     s5, s3, tp
-                  c.srai     a5, 7
-                  c.addi     s6, -2
-                  slli       t1, gp, 27
-                  srai       s0, a4, 1
-                  lui        s6, 715539
-                  la         a3, data_page_19+1288 #start riscv_load_store_rand_instr_stream_32
-                  mul        a4, a4, t5
-                  c.addi     a0, -29
-                  lbu        a0, -519(a3)
-                  sb         s2, -530(a3)
-                  c.srai     a1, 30
-                  c.srai     a0, 25
-                  c.addi     s10, 30
-                  lui        a7, 955161
-                  sb         a1, 799(a3)
-                  c.addi     s9, 13
-                  auipc      t3, 174229
-                  sw         tp, 1712(a3)
-                  lhu        a0, 726(a3)
-                  slli       a2, t3, 15
-                  auipc      s4, 55303
-                  sh         t1, 1330(a3)
-                  add        t6, s8, sp
-                  c.addi     s1, -8
-                  auipc      a4, 786770
-                  ori        a2, sp, -961
-                  lui        zero, 806788
-                  c.addi     a5, -26
-                  lb         t4, 441(a3)
-                  c.addi     t6, -20
-                  auipc      t3, 26776
-                  c.slli     s0, 31
-                  sb         s1, -104(a3)
-                  lui        a6, 1011858
-                  sb         sp, -1043(a3)
-                  c.addi     s7, 18
-                  lui        t1, 600904
-                  lui        s10, 506360
-                  sltu       s0, a2, a6
-                  sb         a1, 347(a3)
-                  c.li       s1, 5
-                  divu       zero, t6, t4
-                  lui        s10, 944380
-                  c.slli     a1, 15
-                  slli       s11, zero, 30
-                  lbu        s4, -1125(a3) #end riscv_load_store_rand_instr_stream_32
-                  lui        a6, 506859
-                  c.srai     a4, 31
-                  lui        s0, 867586
-                  c.addi     a3, -28
-                  c.and      a3, a1
-                  c.or       a4, a3
-                  c.srai     a2, 21
-                  c.addi     gp, -25
-                  auipc      s0, 1007907
-                  c.slli     t1, 1
-                  c.lui      a6, 16
-                  lui        s6, 418377
-                  c.srli     s0, 19
-                  c.bnez     s1, 5439f
-                  c.addi     a2, 27
-                  c.addi     t2, -3
-                  auipc      s5, 152600
-                  c.lui      s4, 23
-                  sll        a3, a0, s10
-                  mulh       s11, s8, a6
-                  c.addi     s2, -16
-                  lui        s3, 634438
-                  c.srai     a2, 25
-                  slt        t5, t1, gp
-                  rem        s10, s4, zero
-5439:             c.lui      a4, 26
-                  xor        t4, t6, a0
-                  c.srai     a1, 31
-                  lui        t1, 1041849
-                  div        t2, s6, a0
-                  c.addi     t4, -25
-                  auipc      t3, 489540
-                  c.lui      t4, 3
-                  c.srai     s1, 4
-                  c.lui      s9, 3
-                  c.lui      s8, 13
-                  auipc      a6, 498061
-                  c.and      a0, a0
-                  mulh       s0, t0, a4
-                  slli       a2, s1, 3
-                  c.addi     s0, 29
-                  c.addi     s0, -11
-                  c.and      a1, a1
-                  mul        s6, s9, a0
-                  c.addi     a2, 25
-                  c.addi     s3, 7
-                  auipc      s3, 1002815
-                  c.bnez     s1, 5476f
-                  auipc      s4, 318027
-                  c.srli     a3, 5
-                  c.slli     t2, 23
-                  auipc      s10, 563174
-                  sra        t1, a3, s11
-                  sub        a2, t1, a0
-                  c.srli     a0, 2
-                  auipc      s9, 798693
-                  c.lui      s10, 13
-                  c.slli     a3, 4
-                  auipc      s11, 408224
-                  la         t6, data_page_18+1282 #start riscv_load_store_rand_instr_stream_17
-                  lb         gp, -362(t6)
-                  sra        s7, t2, s9
-                  c.addi     t3, -31
-                  auipc      s10, 62509
-                  c.addi     a2, -20
-                  sb         a6, -671(t6)
-                  slli       t3, t6, 5
-                  lw         s2, 2018(t6)
-                  lbu        s8, 554(t6)
-                  c.slli     s7, 27
-                  mulh       s6, tp, gp
-                  lhu        t3, 460(t6)
-                  c.addi     a4, -7
-                  c.addi     s4, 19
-                  lui        s4, 1041916
-                  lbu        a4, -1081(t6)
-                  sb         t5, -777(t6)
-                  sb         t5, 1928(t6)
-                  c.lui      s7, 28
-                  c.lui      s1, 19
-                  c.or       a4, a1
-                  lb         s8, -1121(t6)
-                  lbu        s10, -147(t6)
-                  lhu        s9, 630(t6)
-                  c.lui      s2, 10
-                  lb         a5, 1901(t6)
-                  lbu        a4, 557(t6)
-                  lhu        s3, -776(t6)
-                  auipc      a2, 390098
-                  sb         sp, -789(t6) #end riscv_load_store_rand_instr_stream_17
-                  c.srai     a3, 6
-                  c.addi     gp, -2
-                  c.addi     s10, 21
-5476:             auipc      a7, 777473
-                  auipc      t6, 956047
-                  ori        s9, a1, 1004
-                  c.addi     s8, 20
-                  c.srli     s1, 2
-                  c.addi     t5, -15
-                  c.lui      t4, 24
-                  mul        s11, sp, a7
-                  srl        a4, zero, t2
-                  c.addi     s8, 5
-                  sub        s3, s4, t3
-                  nop
-                  auipc      s4, 314242
-                  c.addi     s2, 19
-                  andi       t5, s5, -934
-                  sltiu      s9, t1, 251
-                  divu       s10, s8, t1
-                  c.or       a0, s0
-                  c.lui      s10, 7
-                  c.addi     s9, -14
-                  c.srli     s0, 1
-                  c.srai     a3, 15
-                  auipc      s5, 243733
-                  auipc      s8, 258131
-                  c.addi     s11, 26
-                  c.slli     t1, 28
-                  lui        t5, 802054
-                  auipc      zero, 29498
-                  c.srli     a4, 21
-                  c.addi     gp, -7
-                  lui        t3, 389699
-                  sltu       t2, a1, t0
-                  c.or       a5, a0
-                  c.slli     s10, 15
-                  bgeu       s1, t2, 5515f
-                  c.addi     a0, 26
-                  c.or       a3, a2
-                  c.addi     t4, 10
-                  c.addi     t6, 20
-5515:             c.slli     s9, 17
-                  auipc      a1, 573006
-                  lui        s0, 949563
-                  lui        s0, 59504
-                  c.srli     s0, 21
-                  c.slli     s4, 1
-                  c.srli     a5, 10
-                  xori       s7, a6, 887
-                  sub        s3, a5, sp
-                  c.addi     a1, -22
-                  c.lui      a6, 25
-                  c.addi     s10, -18
-                  c.lui      a2, 2
-                  c.srai     s1, 14
-                  slti       t2, t0, 693
-                  auipc      t5, 107648
-                  c.srli     a4, 3
-                  c.addi     s4, -2
-                  remu       s4, t1, a7
-                  c.srai     s0, 10
-                  c.lui      s1, 3
-                  c.addi     gp, 6
-                  c.slli     t6, 13
-                  and        a6, a0, t0
-                  c.addi     s10, 31
-                  c.srli     s1, 12
-                  c.addi     gp, -17
-                  c.addi     s7, -30
-                  lui        a4, 120062
-                  c.addi     t6, -3
-                  lui        s4, 959950
-                  c.slli     a5, 15
-                  c.addi     t1, 19
-                  and        s6, t4, a4
-                  la         a6, data_page_12+2330 #start riscv_load_store_rand_instr_stream_15
-                  lbu        a2, 1247(a6)
-                  c.addi     a5, -31
-                  lhu        s5, -288(a6)
-                  lbu        s3, 771(a6)
-                  sb         s3, 1407(a6)
-                  sh         s9, -1304(a6)
-                  fence.i
-                  lbu        t6, 245(a6)
-                  lh         t6, -204(a6)
-                  lbu        s4, -78(a6)
-                  c.or       a0, a3
-                  c.srli     a5, 17
-                  auipc      s5, 568869
-                  lbu        t1, -171(a6)
-                  lui        a5, 822434
-                  auipc      a0, 674677
-                  auipc      s0, 959320
-                  c.lui      t3, 15
-                  mul        gp, s2, a4
-                  sb         a6, 1560(a6)
-                  lhu        t4, -1178(a6)
-                  sb         s11, 351(a6)
-                  c.addi     a2, 3
-                  auipc      t4, 822590
-                  c.addi     t2, -16
-                  slli       s10, a2, 12
-                  lbu        t5, 744(a6)
-                  or         a3, s6, a5
-                  lb         a3, -599(a6)
-                  lb         s5, 1313(a6)
-                  divu       s8, s11, s0
-                  lbu        t5, -1582(a6)
-                  lui        s6, 337557
-                  div        s5, sp, t4
-                  sb         s3, 1721(a6)
-                  auipc      a5, 871182
-                  lb         a4, 7(a6)
-                  lbu        t5, 1056(a6)
-                  lb         s0, 715(a6)
-                  divu       s0, s2, ra
-                  lui        a4, 848897
-                  lui        a3, 45377
-                  sb         t2, -1659(a6)
-                  c.lui      t6, 16
-                  c.srai     a3, 5
-                  c.lui      s3, 28
-                  c.addi     a0, 8
-                  lb         a0, 1572(a6)
-                  sb         s9, 344(a6)
-                  remu       a1, t6, s11
-                  auipc      s2, 730598
-                  nop
-                  lhu        t3, -316(a6)
-                  sb         s5, -225(a6)
-                  sb         s7, -1336(a6)
-                  sb         t1, 1289(a6) #end riscv_load_store_rand_instr_stream_15
-                  c.addi     s4, 10
-                  c.addi     a1, -19
-                  c.addi     s9, -1
-                  c.lui      t1, 18
-                  la         s0, sub_2
-                  c.addi     a5, 15
-                  c.addi     a4, 8
-                  addi       s0, s0, -526
-                  c.addi     t1, -23
-                  c.srli     a2, 6
-                  blt        s7, t5, j__main_sub_2_3 #branch to jump instr
-                  c.addi     a3, -31
-                  c.slli     s7, 4
-                  c.slli     a1, 8
-                  c.addi     s11, -11
-j__main_sub_2_3:  jalr       ra, s0, 526
-                  xor        t4, a0, s6
-                  c.addi     s8, 26
-                  c.srli     a1, 15
-                  auipc      a3, 258425
-                  c.addi     s6, 14
-                  c.xor      a3, a4
-                  c.srli     a0, 1
-                  c.addi     a6, -6
-                  c.addi     t4, -9
-                  c.addi     s1, 16
-                  xor        s11, t5, s11
-                  c.lui      s6, 18
-                  auipc      a5, 66964
-                  c.sub      a2, a0
-                  slti       s2, sp, -653
-                  auipc      s7, 931678
-                  mulh       a2, s5, sp
-                  beq        gp, t0, 5585f
-                  c.addi     s10, -16
-                  c.addi     s10, 24
-                  auipc      t5, 942350
-                  c.lui      s7, 4
-                  lui        t4, 787529
-                  c.slli     s11, 27
-                  lui        s11, 707275
-                  c.addi     a5, -17
-                  c.lui      s1, 28
-                  c.addi     a0, -19
-                  c.srli     a0, 5
-                  c.addi     a3, -29
-                  c.addi     a5, -29
-                  c.addi     a3, -22
-5585:             c.slli     s10, 17
-                  c.addi     a1, 19
-                  c.srli     s0, 16
-                  remu       s9, tp, s6
-                  bge        a2, zero, 5603f
-                  auipc      s4, 211037
-                  c.addi     a2, 23
-                  c.addi     s9, 14
-                  mul        s6, s7, t3
-                  c.slli     a3, 29
-                  beq        s9, s5, 5598f
-                  c.srai     a3, 20
-                  auipc      a6, 919133
-5598:             c.addi     s7, 6
-                  auipc      t5, 963808
-                  c.addi     s0, 19
-                  nop
-                  slti       s3, a0, 181
-5603:             remu       s3, t5, t0
-                  c.srai     s1, 15
-                  sltu       t1, t3, t0
-                  sltu       t5, ra, s2
-                  or         t1, s4, a6
-                  c.addi     t4, 2
-                  auipc      t5, 445082
-                  c.srai     a2, 11
-                  lui        s2, 426795
-                  srl        s11, a5, t3
-                  c.addi     a2, -11
-                  c.xor      a3, s1
-                  c.addi     a4, 8
-                  c.addi     s0, 16
-                  slti       s8, t2, -903
-                  c.srli     s0, 16
-                  la         s8, data_page_17+1572 #start riscv_load_store_rand_instr_stream_24
-                  sb         s9, 362(s8)
-                  c.li       s10, -27
-                  lbu        s9, 1793(s8)
-                  or         a1, s8, s7
-                  sb         t4, -43(s8)
-                  c.li       t2, 4
-                  c.addi     s5, 31
-                  xor        s7, s11, sp
-                  auipc      t4, 669301
-                  auipc      s4, 679465
-                  slli       a5, a6, 23
-                  c.addi     a2, 24
-                  ori        a5, zero, -511
-                  remu       t5, a3, a1
-                  sh         a6, -960(s8)
-                  auipc      s9, 10545
-                  sb         s10, 1231(s8)
-                  auipc      s4, 211043
-                  lbu        a5, 829(s8)
-                  sb         a0, -1478(s8)
-                  auipc      a2, 786337
-                  sb         a0, -67(s8)
-                  lb         a2, -1505(s8)
-                  c.srai     s0, 2
-                  mulh       t1, s2, s5
-                  c.lui      a7, 3
-                  c.srli     a3, 19
-                  lh         s1, 1214(s8)
-                  auipc      a3, 358009
-                  nop
-                  divu       t4, s3, s7
-                  sb         a4, 961(s8)
-                  auipc      s3, 344860
-                  c.addi     t5, 20
-                  lbu        a6, 347(s8) #end riscv_load_store_rand_instr_stream_24
-                  sra        a1, t1, s0
-                  c.lui      s11, 30
-                  c.lui      s0, 28
-                  lui        t1, 730833
-                  c.lui      s8, 8
-                  lui        s11, 66787
-                  auipc      gp, 170666
-                  auipc      t1, 840659
-                  c.srai     a5, 7
-                  c.li       s3, 13
-                  lui        t4, 671924
-                  c.lui      t6, 19
-                  lui        a3, 614894
-                  auipc      t6, 928607
-                  lui        t2, 545579
-                  c.addi     t3, 20
-                  c.srli     a2, 29
-                  c.slli     t5, 22
-                  c.srai     a2, 23
-                  c.addi     s1, 1
-                  c.and      s0, a2
-                  c.addi     t1, 30
-                  auipc      s10, 350885
-                  add        s9, a0, a4
-                  c.lui      a1, 19
-                  auipc      s1, 371749
-                  auipc      a4, 674376
-                  c.slli     t4, 31
-                  c.slli     gp, 2
-                  ori        a5, t6, 359
-                  c.slli     t1, 1
-                  c.addi     s7, 1
-                  and        s0, sp, s0
-                  c.addi     gp, 12
-                  c.srai     a3, 17
-                  auipc      t4, 588827
-                  c.addi     a7, -8
-                  c.addi     s8, -25
-                  auipc      a4, 332898
-                  auipc      a0, 145691
-                  fence
-                  auipc      s10, 434817
-                  c.addi     a6, -32
-                  c.addi     s1, 30
-                  auipc      t6, 649745
-                  c.xor      a3, s1
-                  c.addi     t3, -30
-                  c.srai     a5, 15
-                  c.addi     s3, -5
-                  c.lui      s2, 23
-                  c.addi     t3, -13
-                  c.lui      s6, 10
-                  lui        a6, 337913
-                  c.slli     s5, 8
-                  auipc      s3, 120491
-                  c.srli     s1, 20
-                  auipc      a0, 246660
-                  c.addi     t5, 11
-                  auipc      s5, 279602
-                  c.lui      a1, 20
-                  c.slli     a1, 31
-                  auipc      t3, 729718
-                  c.addi     gp, 6
-                  c.addi     t1, -15
-                  c.sub      a4, a1
-                  c.srli     a0, 10
-                  c.addi     s7, -25
-                  c.addi     t1, -18
-                  c.srai     a1, 7
-                  c.slli     s4, 28
-                  andi       t5, a5, 106
-                  lui        t6, 762178
-                  bgeu       t3, s6, 5710f
-                  c.srli     a5, 16
-                  c.srli     a0, 4
-                  c.lui      s9, 22
-                  lui        s5, 311876
-                  lui        s1, 84674
-                  c.srli     s1, 10
-                  andi       zero, a0, -427
-                  auipc      s7, 269466
-                  c.addi     t4, 31
-                  nop
-                  andi       t5, a5, 999
-                  c.andi     a5, -18
-                  c.addi     t1, -4
-                  c.srli     a5, 3
-                  c.addi     t4, -29
-                  la         a1, data_page_11+2074 #start riscv_load_store_rand_instr_stream_59
-                  lb         s10, -1322(a1)
-                  lui        s9, 767422
-                  c.srai     a3, 27
-                  and        s1, s11, a1
-                  c.srli     a5, 6
-                  lb         t6, -1227(a1)
-                  lhu        t2, -1480(a1)
-                  sb         a5, 877(a1)
-                  fence
-                  lui        s5, 80513
-                  lbu        t2, -41(a1)
-                  rem        t2, t1, s3
-                  auipc      a7, 239104
-                  c.addi     a5, -3
-                  auipc      s8, 167409
-                  sb         s9, 1892(a1)
-                  auipc      s4, 114386
-                  auipc      s8, 764381
-                  lh         a7, 400(a1)
-                  c.lui      a2, 4
-                  lb         s0, 1501(a1)
-                  sb         s4, 1458(a1)
-                  auipc      s5, 724406
-                  lhu        t5, -1526(a1)
-                  c.srli     a3, 11
-                  lhu        a5, -1064(a1)
-                  c.addi     t4, 15
-                  sub        a3, a1, s3
-                  auipc      t5, 779984
-                  xor        s5, a4, s9
-                  lb         a5, 945(a1)
-                  lbu        zero, 1607(a1)
-                  c.addi     s0, 17
-                  sltu       t3, t0, s5
-                  lb         a7, -1097(a1)
-                  lbu        s0, 1493(a1)
-                  c.addi     a6, 3
-                  auipc      a6, 650770
-                  lui        s0, 227171
-                  c.addi     s4, -1
-                  sb         a0, -1085(a1) #end riscv_load_store_rand_instr_stream_59
-                  c.lui      a1, 29
-                  c.srai     a0, 25
-                  c.and      a0, a4
-5710:             c.addi     a1, 16
-                  auipc      s3, 1013246
-                  auipc      s10, 952274
-                  auipc      t1, 840655
-                  c.srai     s0, 6
-                  auipc      a2, 43269
-                  auipc      s4, 990482
-                  c.addi     a7, -14
-                  c.slli     s8, 7
-                  c.addi     a4, -2
-                  divu       t1, s5, s8
-                  lui        a4, 167303
-                  mul        t6, s10, t2
-                  c.srai     a2, 18
-                  c.addi     t4, -7
-                  lui        t3, 671375
-                  fence
-                  auipc      s11, 809159
-                  lui        s3, 31936
-                  c.srai     a0, 23
-                  c.addi     a6, -8
-                  c.addi     s1, -21
-                  mulhsu     t5, s0, ra
-                  c.srli     s1, 23
-                  c.addi     s5, 24
-                  c.addi     gp, -21
-                  c.srli     s0, 30
-                  c.slli     s3, 23
-                  c.slli     a1, 18
-                  c.addi     s10, 25
-                  slli       t4, s2, 9
-                  c.srai     a4, 25
-                  slt        s8, t5, a6
-                  nop
-                  or         s9, s8, t3
-                  lui        s1, 661577
-                  c.addi     t3, 17
-                  beq        a1, zero, 5756f
-                  auipc      s5, 217787
-                  lui        a0, 367270
-                  sub        s10, s7, s10
-                  lui        s4, 1000211
-                  c.addi     s0, 30
-                  lui        s0, 183158
-                  la         s3, data_page_9+2026 #start riscv_load_store_rand_instr_stream_40
-                  lbu        s8, 1346(s3)
-                  c.addi     s5, -28
-                  sb         a1, -1620(s3)
-                  c.srai     s1, 10
-                  c.addi     s7, -29
-                  fence
-                  fence
-                  lbu        t2, -264(s3)
-                  lhu        a7, -1098(s3)
-                  lb         a1, 1547(s3)
-                  lb         t3, 449(s3)
-                  auipc      t5, 662946
-                  sb         s1, 1195(s3)
-                  sb         a3, 289(s3)
-                  c.srli     a3, 18
-                  lbu        s4, -1757(s3)
-                  auipc      t1, 840751
-                  auipc      t4, 389335
-                  lbu        t1, -1439(s3)
-                  auipc      t4, 187582
-                  auipc      t1, 553096
-                  div        gp, a3, s11
-                  c.mv       t4, s10
-                  sb         a2, -783(s3)
-                  c.slli     s11, 23
-                  c.lui      s4, 29
-                  c.sub      s0, a1
-                  lhu        a1, 758(s3)
-                  xori       gp, s5, -191
-                  lh         s11, -1756(s3)
-                  sb         s9, -611(s3)
-                  sh         a1, -742(s3) #end riscv_load_store_rand_instr_stream_40
-                  lui        a1, 362042
-                  c.addi     t3, 19
-5756:             c.and      s1, a0
-                  c.addi     a4, 30
-                  c.srai     s1, 18
-                  auipc      s9, 965541
-                  c.srai     a0, 28
-                  fence.i
-                  c.addi     t5, -11
-                  andi       t2, t2, 579
-                  add        s11, a3, s4
-                  lui        s4, 330188
-                  c.bnez     s0, 5779f
-                  auipc      s1, 800655
-                  or         gp, a3, a5
-                  c.addi     gp, 7
-                  slti       a6, s1, 302
-                  c.addi     a4, -20
-                  c.srli     a0, 16
-                  c.addi     a4, -3
-                  bltu       gp, a2, 5794f
-                  div        s7, s2, t4
-                  bge        t6, s10, 5783f
-                  c.slli     a5, 12
-                  c.addi     a3, -30
-5779:             sra        s9, s6, a3
-                  c.addi     s11, 2
-                  sltu       t2, s4, s3
-                  auipc      s3, 477866
-5783:             c.slli     t4, 22
-                  c.addi     a6, 21
-                  c.beqz     a2, 5791f
-                  c.addi     s9, 8
-                  xori       a0, t5, 101
-                  c.addi     a5, -2
-                  auipc      s9, 425454
-                  lui        s8, 643372
-5791:             c.srli     s0, 28
-                  c.addi     t6, -26
-                  c.addi     s5, -10
-5794:             c.lui      s11, 5
-                  or         a5, s7, s11
-                  c.srli     a3, 7
-                  lui        s4, 25390
-                  c.addi     a3, -22
-                  la         t1, data_page_2+1854 #start riscv_load_store_rand_instr_stream_26
-                  c.slli     t2, 31
-                  sb         a1, 946(t1)
-                  c.slli     s0, 24
-                  c.addi     t3, -12
-                  c.addi     s2, 4
-                  c.srli     a5, 12
-                  lbu        s8, 750(t1)
-                  c.addi     s6, 5
-                  sb         a3, -1297(t1)
-                  add        t6, t3, s5
-                  lbu        s2, -263(t1)
-                  lh         zero, 812(t1)
-                  sub        t3, zero, gp
-                  lui        a1, 409392
-                  lb         a7, -517(t1)
-                  sb         s10, 1323(t1)
-                  c.addi     t3, 5
-                  lbu        s2, 529(t1)
-                  sb         s2, -243(t1)
-                  lb         a1, 1665(t1)
-                  add        a7, a2, zero
-                  lui        a5, 167586
-                  fence
-                  lb         s9, 1329(t1)
-                  lbu        a0, -1059(t1)
-                  sb         t0, 233(t1)
-                  lhu        a7, -1230(t1)
-                  c.lui      a6, 23
-                  sb         t5, 132(t1)
-                  c.addi     s7, 19
-                  c.addi     s5, -16
-                  lbu        t4, 533(t1)
-                  c.addi     s8, 13
-                  lui        zero, 561182
-                  mulhsu     s1, a3, tp
-                  lbu        a7, -1107(t1)
-                  lbu        s4, 1908(t1)
-                  lb         s4, -5(t1)
-                  lbu        s0, 2029(t1)
-                  c.srli     s0, 31
-                  sb         a3, 645(t1)
-                  c.li       a2, -22
-                  c.lui      gp, 7
-                  lb         s5, -87(t1)
-                  lbu        t3, -1568(t1)
-                  sh         s1, -552(t1)
-                  sb         s8, -1473(t1)
-                  lh         s9, -360(t1)
-                  ori        t5, a3, -293
-                  lb         t4, 1336(t1) #end riscv_load_store_rand_instr_stream_26
-                  c.addi     s10, -5
-                  auipc      a0, 810265
-                  c.slli     a5, 16
-                  c.li       s7, 1
-                  c.bnez     a4, 5805f
-                  c.addi     s7, 26
-5805:             lui        a0, 939771
-                  c.addi     t6, 31
-                  auipc      t3, 406221
-                  lui        a5, 177812
-                  lui        s8, 981863
-                  c.addi     gp, -13
-                  auipc      t4, 452180
-                  c.andi     a2, -28
-                  c.add      a5, a0
-                  c.addi     s2, 3
-                  c.lui      t2, 25
-                  c.addi     s0, -18
-                  c.srai     a5, 14
-                  lui        s2, 812202
-                  lui        s8, 483486
-                  auipc      a1, 419804
-                  c.addi     s5, 9
-                  la         a0, data_page_18+1989 #start riscv_load_store_rand_instr_stream_21
-                  c.slli     s10, 14
-                  mul        a4, t6, t0
-                  lui        gp, 76207
-                  lbu        a6, -1715(a0)
-                  srl        a3, t0, t3
-                  c.addi     s0, 20
-                  lb         a6, -850(a0)
-                  lb         a1, -1760(a0)
-                  lb         s3, -309(a0)
-                  sb         t3, -1946(a0)
-                  lhu        a5, 1557(a0)
-                  c.slli     a4, 14
-                  auipc      s8, 920092
-                  lh         a7, 311(a0)
-                  c.addi     t5, 8
-                  lbu        t6, 1200(a0)
-                  lh         a4, 869(a0)
-                  auipc      s10, 122501
-                  lb         s8, 196(a0)
-                  lui        s9, 721785
-                  c.addi     t1, 13
-                  mulhu      s0, t6, a4
-                  sb         t1, -1071(a0)
-                  c.addi     s9, 28
-                  lui        s1, 982955
-                  fence
-                  lh         a3, 697(a0)
-                  xori       s4, s4, -340
-                  lb         s9, 1850(a0)
-                  auipc      s6, 709197
-                  c.addi     s10, -17
-                  c.srai     s1, 27
-                  sb         a7, -302(a0)
-                  c.addi     gp, 4
-                  lb         s3, 826(a0)
-                  c.srli     a3, 20
-                  c.lui      a2, 4
-                  lh         a5, 597(a0)
-                  c.addi     t6, 16
-                  sb         a0, 1911(a0)
-                  lbu        s9, -1987(a0)
-                  c.addi     t5, -7
-                  lh         s11, 25(a0)
-                  srli       gp, a4, 29
-                  lui        a1, 870066
-                  sb         a6, -420(a0)
-                  auipc      a7, 756681
-                  lb         s10, 244(a0)
-                  sb         a0, 457(a0)
-                  lbu        s3, -1612(a0)
-                  lbu        a3, 961(a0) #end riscv_load_store_rand_instr_stream_21
-                  beq        ra, tp, 5841f
-                  auipc      t4, 471453
-                  c.srli     s0, 11
-                  sra        s11, a7, gp
-                  c.lui      s2, 26
-                  lui        s8, 497376
-                  c.addi     t4, -20
-                  c.slli     a7, 2
-                  c.slli     a3, 12
-                  c.slli     t1, 8
-                  lui        a0, 814999
-                  c.srai     a0, 10
-                  slt        zero, s5, a4
-                  c.addi     t4, -9
-                  lui        s9, 212593
-                  c.srai     a2, 31
-                  slt        gp, t0, s8
-                  blt        a3, t2, 5841f
-                  lui        t1, 261873
-5841:             c.srli     a4, 4
-                  c.lui      s8, 11
-                  c.addi     s11, -4
-                  lui        a4, 702999
-                  lui        s3, 191860
-                  lui        a2, 826480
-                  auipc      s4, 915644
-                  auipc      s3, 549994
-                  auipc      s5, 458374
-                  c.addi     s4, -30
-                  c.slli     t3, 23
-                  lui        s9, 647471
-                  auipc      a5, 650168
-                  c.srli     s1, 13
-                  c.addi     t5, 21
-                  auipc      a3, 561378
-                  c.addi     s6, -7
-                  c.sub      a5, s1
-                  mulh       a3, a2, ra
-                  lui        s3, 309145
-                  auipc      s9, 480706
-                  sub        s9, a2, s6
-                  c.addi     a5, -17
-                  c.addi     s2, 24
-                  auipc      s10, 612945
-                  slti       a0, a4, -872
-                  c.addi     a6, 7
-                  c.srai     a1, 23
-                  c.addi     a1, -5
-                  c.addi     s6, 17
-                  auipc      a4, 330597
-                  auipc      t4, 74354
-                  lui        s7, 584591
-                  c.srai     s1, 23
-                  c.srai     a5, 26
-                  c.lui      a7, 16
-                  auipc      s1, 1022375
-                  auipc      t1, 391773
-                  lui        t4, 342087
-                  lui        zero, 57046
-                  c.srli     a2, 26
-                  c.addi     s7, 10
-                  la         s8, data_page_3+1834 #start riscv_load_store_rand_instr_stream_5
-                  lh         t5, -412(s8)
-                  sb         t1, 1052(s8)
-                  c.addi     s1, 10
-                  sh         s11, 1594(s8)
-                  lb         a3, 1682(s8)
-                  remu       s11, t3, s0
-                  c.lui      s0, 25
-                  lhu        s6, -1712(s8)
-                  lbu        s11, 896(s8)
-                  lh         a2, -676(s8)
-                  c.slli     a7, 4
-                  c.srai     a4, 24
-                  sb         a6, 1697(s8)
-                  auipc      a3, 620417
-                  lhu        s6, -742(s8)
-                  lbu        a1, 1607(s8)
-                  c.addi     a6, 31
-                  c.nop
-                  sb         a0, 869(s8)
-                  c.addi     s10, -10
-                  auipc      t5, 495807
-                  c.addi     a4, -27
-                  lbu        t3, 428(s8)
-                  sw         gp, 1006(s8)
-                  lb         s7, 1326(s8)
-                  c.addi     t3, 28
-                  lbu        s7, -1523(s8)
-                  sb         s4, 1130(s8)
-                  srl        a2, tp, s1
-                  auipc      t2, 509289
-                  lb         t6, 1899(s8)
-                  c.lui      gp, 16
-                  auipc      s1, 627362
-                  sh         a3, -506(s8)
-                  sb         tp, -385(s8)
-                  lh         t6, 486(s8)
-                  lb         t5, 501(s8) #end riscv_load_store_rand_instr_stream_5
-                  lui        s7, 151835
-                  c.addi     s7, -10
-                  c.addi     a4, 5
-                  c.mv       s2, t3
-                  c.addi     a3, -3
-5888:             fence
-                  slti       t6, t6, -887
-                  mulhsu     t1, tp, t6
-                  c.lui      a4, 11
-                  auipc      a6, 213263
-                  c.addi     a4, 25
-                  c.sub      a3, a0
-                  lui        s8, 381917
-                  c.lui      s8, 14
-                  mulhsu     t1, s9, s2
-                  c.slli     t1, 26
-                  bge        a2, sp, 5901f
-                  c.srai     a0, 28
-5901:             c.lui      s8, 17
-                  auipc      a6, 468042
-                  sll        a7, s10, a2
-                  srai       t6, a4, 9
-                  c.addi     s5, -19
-                  c.addi     t4, 6
-                  c.addi     gp, 15
-                  lui        a3, 757358
-                  c.and      a1, s1
-                  c.addi     t2, -26
-                  lui        s11, 987299
-                  c.lui      t5, 14
-                  c.srli     a5, 29
-                  c.slli     s4, 17
-                  c.and      a5, a2
-                  c.lui      s1, 2
-                  lui        gp, 210423
-                  auipc      t1, 9379
-                  remu       s10, t4, s11
-                  auipc      s10, 855532
-                  lui        s11, 72716
-                  auipc      t3, 698568
-                  c.addi     s5, -30
-                  c.srli     a4, 29
-                  auipc      s4, 612073
-                  nop
-                  auipc      t1, 592327
-                  c.srli     a4, 19
-                  c.addi     a7, -12
-                  c.addi     a5, 20
-                  c.addi     t4, -11
-                  lui        s6, 102983
-                  sll        s11, a2, s0
-                  c.lui      t3, 10
-                  c.addi     s7, -30
-                  lui        a1, 78852
-                  c.addi     s9, -28
-                  sub        s1, t3, s2
-                  c.srli     a5, 9
-                  divu       t1, s6, gp
-                  div        a4, sp, sp
-                  c.addi     gp, 27
-                  c.addi     t6, -31
-                  c.mv       t5, t6
-                  c.beqz     a1, 5947f
-                  lui        t4, 747707
-5947:             c.xor      a0, a5
-                  auipc      a7, 219579
-                  srl        a0, s9, s8
-                  c.addi     t6, 31
-                  c.addi     s5, -14
-                  mulh       s1, s0, s0
-                  lui        s2, 563521
-                  c.addi     s7, -7
-                  c.slli     t4, 11
-                  c.addi     s0, 27
-                  c.addi     s9, -3
-                  c.srai     a4, 11
-                  c.addi     gp, 31
-                  xor        a5, s5, a2
-                  c.bnez     a0, 5965f
-                  c.addi     t2, 6
-                  c.mv       s1, s5
-                  c.slli     s7, 7
-5965:             lui        s4, 555740
-                  c.andi     a4, -7
-                  c.lui      t1, 7
-                  c.sub      s0, a3
-                  c.srli     a4, 10
-                  c.add      a3, a2
-                  lui        s3, 405666
-                  c.srai     s1, 4
-                  c.srli     a4, 4
-                  c.addi     a1, -30
-                  lui        s0, 918418
-                  c.addi     a4, -28
-                  sra        s10, a7, s6
-                  add        a5, s11, a6
-                  c.sub      a4, a2
-                  div        s9, t3, a0
-                  lui        s4, 1017366
-                  add        t3, a1, s2
-                  c.srli     a3, 5
-                  c.addi     s7, 28
-                  c.addi     t2, -17
-                  c.addi     a7, 5
-                  auipc      t6, 923611
-                  c.beqz     a3, 6004f
-                  lui        a7, 814659
-                  c.addi     t5, 1
-                  div        a7, a5, zero
-                  add        zero, s11, s2
-                  la         t4, data_page_8+2089 #start riscv_load_store_rand_instr_stream_43
-                  mulh       a7, s5, s9
-                  lh         t5, 29(t4)
-                  lhu        a6, 1047(t4)
-                  sb         s10, -1659(t4)
-                  lh         s2, 589(t4)
-                  sb         t2, -1075(t4)
-                  lui        s2, 968660
-                  lui        t2, 874617
-                  c.addi     s4, -22
-                  mulhu      s1, s2, s3
-                  nop
-                  lui        s7, 636578
-                  sb         s9, -762(t4)
-                  c.sub      a3, a4
-                  c.addi     s0, 8
-                  lb         s7, 979(t4)
-                  c.slli     t5, 30
-                  lb         t1, 1042(t4)
-                  lh         a7, 567(t4)
-                  lui        zero, 132591
-                  auipc      s3, 643553
-                  lui        s2, 354559
-                  lb         a0, 172(t4)
-                  divu       s4, t2, a1
-                  auipc      s7, 4127
-                  lb         a1, 1667(t4)
-                  lui        s9, 286921
-                  xori       t6, a2, -654
-                  c.slli     a3, 4
-                  lbu        a7, 154(t4)
-                  mulhsu     s9, zero, s8
-                  lb         s3, -314(t4)
-                  sh         tp, -1887(t4)
-                  c.srai     a3, 12
-                  c.addi     s10, 24
-                  sb         a7, -357(t4)
-                  c.lui      s5, 16
-                  c.slli     s11, 3
-                  c.addi     a1, -32
-                  sb         a2, -1407(t4)
-                  lb         s7, 1256(t4)
-                  lbu        t1, -512(t4)
-                  lui        a1, 430464
-                  lbu        a2, -1105(t4)
-                  auipc      s3, 942294
-                  c.addi     gp, -14
-                  sh         a6, -2043(t4)
-                  lb         a1, -1955(t4)
-                  lb         s7, 589(t4)
-                  lbu        a2, -1076(t4)
-                  lui        t1, 880230
-                  c.addi     gp, -23
-                  sb         t3, -277(t4)
-                  lbu        a7, -1739(t4)
-                  lh         a3, -1687(t4)
-                  lb         s10, -1948(t4)
-                  sb         s5, 84(t4)
-                  lh         s2, -423(t4)
-                  auipc      a1, 674691
-                  lb         zero, -834(t4) #end riscv_load_store_rand_instr_stream_43
-                  c.srli     a0, 15
-                  sltiu      a0, s0, -95
-                  lui        s0, 774614
-                  srli       s2, t4, 7
-                  addi       t1, s7, 325
-                  add        s10, a5, ra
-                  c.slli     t4, 24
-                  xor        a4, s11, a2
-                  lui        t4, 56405
-                  c.lui      gp, 25
-                  c.addi     s4, -32
-6004:             c.slli     a7, 13
-                  c.srai     a3, 22
-                  c.slli     a0, 4
-                  auipc      s3, 897699
-                  lui        a0, 85458
-                  divu       t3, t3, tp
-                  lui        a3, 460354
-                  bne        t5, a6, 6020f
-                  c.addi     a5, -4
-                  c.srai     a3, 18
-                  lui        s7, 575426
-                  c.slli     s6, 10
-                  c.sub      a4, a4
-                  c.srli     a3, 24
-                  lui        a2, 713058
-                  div        zero, a1, s3
-6020:             c.addi     s2, -22
-                  lui        s1, 336786
-                  sra        t1, t6, s0
-                  c.addi     t3, -9
-                  c.xor      a5, s1
-                  lui        s1, 384743
-                  c.addi     a6, 6
-                  c.slli     s0, 16
-                  c.addi     t3, 24
-                  ori        s5, s3, -241
-                  auipc      a4, 897622
-                  c.addi     a1, -30
-                  c.addi     a3, 5
-                  c.addi     t5, 12
-                  lui        zero, 648550
-                  srli       t4, t5, 19
-                  la         s2, data_page_4+1758 #start riscv_load_store_rand_instr_stream_33
-                  lb         zero, -81(s2)
-                  c.lui      a0, 13
-                  lbu        a7, -281(s2)
-                  lb         s9, -1221(s2)
-                  lhu        zero, 618(s2)
-                  c.srai     a0, 15
-                  sw         t4, 134(s2)
-                  lb         s9, 582(s2)
-                  sh         s5, 362(s2)
-                  lh         t5, 442(s2)
-                  c.lui      s9, 13
-                  c.addi     s5, 18
-                  sb         s6, -113(s2)
-                  sb         tp, -182(s2)
-                  lbu        s11, 1539(s2)
-                  sb         t6, 1872(s2)
-                  lb         t5, 1591(s2)
-                  lh         a1, 926(s2)
-                  sb         a1, 252(s2)
-                  auipc      s8, 677348
-                  lui        a4, 148047
-                  c.sub      a2, a0
-                  xor        t6, t6, s8
-                  c.srai     a1, 23
-                  lb         a1, 1538(s2)
-                  lbu        a6, 211(s2)
-                  c.li       s9, 9
-                  c.lui      gp, 22
-                  c.srli     a5, 9
-                  lbu        t3, 1666(s2)
-                  c.slli     s3, 24
-                  sb         a4, 952(s2)
-                  lbu        t4, -175(s2)
-                  c.addi     a7, -27
-                  sb         tp, -1279(s2)
-                  c.lui      t1, 2
-                  lhu        s8, -256(s2)
-                  sw         ra, 630(s2)
-                  c.lui      t5, 18
-                  sh         a5, 826(s2)
-                  lb         a4, 567(s2) #end riscv_load_store_rand_instr_stream_33
-                  c.addi     s9, 12
-                  auipc      s8, 890975
-                  srai       s11, t4, 8
-                  c.addi     a7, 21
-                  lui        a2, 974554
-                  c.addi     t5, -6
-                  slli       a4, s9, 13
-                  c.srli     a3, 20
-                  and        s4, t5, t3
-                  lui        t3, 903160
-                  c.srai     a5, 19
-                  c.addi     a7, -28
-                  slli       a1, s5, 18
-                  auipc      s8, 645900
-                  c.xor      s0, s1
-                  c.srai     a4, 9
-                  lui        s8, 768480
-                  mul        s0, tp, s11
-                  lui        s9, 598218
-                  mul        a4, a5, s5
-                  c.addi     t6, -19
-                  c.addi     s6, 2
-                  c.slli     s11, 27
-                  c.nop
-                  c.srli     a5, 27
-                  c.addi     s5, 8
-                  c.addi     t4, 27
-                  auipc      zero, 508603
-                  c.xor      s0, a5
-                  c.lui      s3, 13
-                  c.addi     s5, -6
-                  c.lui      a7, 25
-                  ori        a2, gp, -443
-                  c.slli     a6, 19
-                  srli       t6, a3, 6
-                  c.srai     a0, 2
-                  c.addi     t6, 29
-                  c.addi     a0, -26
-                  xori       a4, zero, 264
-                  c.addi     a2, 26
-                  c.addi     s1, -5
-                  lui        t5, 808417
-                  c.addi     a1, -16
-                  auipc      a2, 852965
-                  ori        gp, zero, -304
-                  c.srli     a0, 21
-                  auipc      t6, 685089
-                  c.lui      a2, 30
-                  lui        s10, 744503
-                  lui        s6, 898879
-                  c.addi     gp, 11
-                  auipc      s3, 73157
-                  mulhsu     t2, s5, a0
-                  c.addi     s5, -18
-                  nop
-                  c.slli     a1, 12
-                  c.lui      gp, 13
-                  mulhu      s5, a0, s1
-                  c.srli     a1, 20
-                  c.lui      t3, 29
-                  c.srai     a0, 18
-                  c.srli     s1, 1
-                  andi       gp, s9, 198
-                  c.lui      t5, 13
-                  c.addi     s4, -9
-                  c.srli     a0, 24
-                  c.addi     s9, 15
-                  c.lui      t3, 12
-                  c.srli     a1, 24
-                  auipc      s5, 726446
-                  c.and      a1, a3
-                  remu       a2, s11, s4
-                  c.andi     a0, -2
-                  c.srli     a4, 1
-                  c.addi     t5, -2
-                  auipc      s7, 570581
-                  c.addi     a7, 15
-                  auipc      t1, 903463
-                  c.slli     s7, 31
-                  lui        t4, 237561
-                  c.lui      t5, 4
-                  c.li       s1, 23
-                  mul        s10, s8, tp
-                  c.addi     a5, -11
-                  c.addi     s9, -18
-                  c.andi     s0, -20
-                  c.srai     a0, 22
-                  auipc      s9, 549229
-                  lui        s3, 775720
-                  lui        s1, 211642
-                  c.addi     t6, -10
-                  c.xor      a1, s0
-                  c.li       s11, -30
-                  c.srli     a5, 15
-                  addi       t1, tp, -81
-                  c.srai     a4, 27
-                  auipc      a1, 150357
-                  sra        gp, s9, a2
-                  divu       s10, a3, s10
-                  c.addi     t2, 23
-                  c.srli     s1, 4
-                  c.slli     t2, 8
-                  c.lui      s7, 17
-                  la         s1, data_page_14+2749 #start riscv_load_store_rand_instr_stream_54
-                  lui        a5, 560312
-                  c.addi     s6, 6
-                  c.addi     t3, -12
-                  auipc      a2, 630373
-                  rem        a7, t2, a1
-                  c.addi     t4, -9
-                  c.slli     t3, 10
-                  lbu        zero, -868(s1)
-                  lbu        s3, -270(s1)
-                  lhu        t1, 505(s1)
-                  lb         gp, -1395(s1)
-                  c.srli     s0, 20
-                  c.srli     a2, 13
-                  sb         s6, -1964(s1)
-                  lb         t2, -881(s1)
-                  lbu        s5, 856(s1)
-                  c.srai     s0, 1
-                  and        s6, s8, a4
-                  lbu        a4, 1132(s1)
-                  c.lui      gp, 10
-                  lbu        a1, 1044(s1)
-                  c.addi     t3, 22
-                  lb         s9, 614(s1)
-                  sb         a0, 237(s1)
-                  sb         t3, -561(s1)
-                  sb         t6, -1188(s1)
-                  lbu        t3, 230(s1)
-                  c.mv       s11, s1
-                  lbu        gp, 665(s1)
-                  lbu        a3, -1332(s1)
-                  lui        s5, 194324
-                  sra        s10, t1, s0
-                  c.addi     a1, 11
-                  sb         tp, -1128(s1)
-                  c.addi     s11, 14
-                  lb         a2, 245(s1)
-                  lb         a1, -80(s1)
-                  sh         s4, 1189(s1)
-                  lb         t4, 778(s1)
-                  nop
-                  lbu        a2, -1976(s1)
-                  sw         a3, -717(s1)
-                  lb         s11, 1220(s1)
-                  auipc      zero, 960622
-                  sh         a3, 1003(s1)
-                  auipc      a3, 996092
-                  auipc      a2, 740825
-                  c.addi     a2, 2
-                  sb         s7, -782(s1)
-                  c.and      a3, s0
-                  c.addi     s3, -5
-                  lui        t1, 741759
-                  lb         a7, -8(s1)
-                  lbu        a0, -1739(s1)
-                  c.addi     s7, -13
-                  c.srli     a1, 31
-                  lui        s11, 1027909
-                  rem        a1, tp, t5
-                  lbu        s7, 1052(s1) #end riscv_load_store_rand_instr_stream_54
-                  lui        t2, 346099
-                  c.or       a4, s1
-                  c.addi     t3, 25
-                  nop
-                  lui        gp, 215211
-                  c.addi     s10, -3
-                  lui        a3, 288166
-                  c.beqz     s0, 6158f
-                  c.srli     s0, 29
-                  lui        a2, 697203
-                  lui        s3, 449582
-                  c.addi     a0, 3
-                  xori       s6, a0, -647
-                  lui        a4, 812365
-                  c.srli     a5, 16
-                  c.srai     s1, 27
-                  c.bnez     a5, 6170f
-                  c.addi     a2, -12
-                  c.srli     a2, 18
-6158:             lui        t4, 587724
-                  c.addi     s11, -30
-                  auipc      s8, 830759
-                  c.addi     s2, -2
-                  mulhsu     s10, gp, a6
-                  auipc      t3, 611486
-                  c.srai     s0, 23
-                  c.addi     s9, 16
-                  auipc      s11, 648359
-                  c.srai     a4, 31
-                  c.srai     a2, 26
-                  slli       s10, sp, 10
-6170:             auipc      s4, 352247
-                  ori        a1, s0, -565
-                  c.slli     s2, 16
-                  lui        s0, 91260
-                  sll        s2, a4, s3
-                  c.addi     a2, -3
-                  auipc      t4, 930413
-                  c.slli     s6, 24
-                  auipc      t3, 918857
-                  c.andi     a4, -2
-                  auipc      a5, 521883
-                  c.addi     s1, 31
-                  auipc      a4, 929475
-                  add        s5, s11, t0
-                  c.addi     a1, 28
-                  c.addi     s2, 27
-                  c.slli     a7, 22
-                  c.srli     s0, 17
-                  c.addi     a7, -14
-                  c.addi     s8, 11
-                  auipc      s4, 374343
-                  c.srai     a2, 4
-                  mulhsu     s7, s7, t5
-                  c.addi     s2, -23
-                  c.addi     t3, 23
-                  c.bnez     a4, 6206f
-                  c.lui      s11, 8
-                  c.addi     a3, 23
-                  slt        s9, a6, a1
-                  auipc      s3, 223168
-                  srl        t2, ra, s0
-                  lui        t1, 189886
-                  c.addi     s11, 24
-                  c.addi     s10, 8
-                  c.addi     gp, -20
-                  auipc      s0, 719847
-6206:             c.beqz     a2, 6207f
-6207:             c.addi     s8, -15
-                  ori        s11, ra, 631
-                  lui        t2, 915472
-                  c.addi     s2, 29
-                  c.addi     a5, 13
-                  lui        t5, 392494
-                  c.addi     t4, 12
-                  c.addi     t5, 19
-                  c.addi     s10, -32
-                  auipc      a2, 390536
-                  lui        s0, 64511
-                  lui        a4, 665591
-                  bne        gp, s3, 6233f
-                  c.addi     s3, -28
-                  c.srli     a4, 28
-                  c.addi     t2, 9
-                  c.addi     t3, -27
-                  c.addi     t6, -22
-                  fence
-                  auipc      s4, 914059
-                  slli       a6, a3, 0
-                  c.addi     t4, -1
-                  c.addi     a7, -10
-                  c.addi     s6, 28
-                  srl        s3, a6, s1
-                  lui        t2, 756220
-6233:             remu       s2, t6, ra
-                  c.srli     a3, 12
-                  auipc      a3, 25933
-                  la         s1, data_page_15+1360 #start riscv_load_store_rand_instr_stream_8
-                  lh         t6, -102(s1)
-                  slli       gp, a3, 16
-                  c.addi     a2, -5
-                  c.slli     s4, 21
-                  c.srai     a2, 26
-                  c.srli     a4, 20
-                  c.srli     a0, 31
-                  sb         s10, 2030(s1)
-                  lui        s5, 480856
-                  lui        t4, 786976
-                  c.srli     a0, 17
-                  auipc      s8, 957605
-                  c.and      s0, a2
-                  sh         s11, -436(s1)
-                  lb         a5, -1213(s1)
-                  sb         s2, 1559(s1)
-                  lh         s10, 444(s1)
-                  sb         a3, 12(s1)
-                  lui        a5, 464908
-                  lbu        t6, 949(s1)
-                  c.srli     a5, 7
-                  sh         s10, 252(s1)
-                  c.addi     t5, 26
-                  auipc      s10, 36453
-                  c.srli     s0, 29
-                  c.addi     s4, -31
-                  srl        s0, a5, t6
-                  lui        t4, 658143
-                  lui        a4, 780050
-                  lbu        t1, -143(s1)
-                  c.addi     a2, -31
-                  sll        a6, a5, s4
-                  lb         a7, -94(s1)
-                  lb         a2, 1854(s1)
-                  lh         s3, 156(s1)
-                  c.addi     s6, -30
-                  lbu        t6, -145(s1)
-                  lbu        s8, -93(s1)
-                  lhu        a2, -10(s1) #end riscv_load_store_rand_instr_stream_8
-                  auipc      s0, 117747
-                  lui        s3, 759405
-                  c.addi     s10, -29
-                  c.lui      t2, 31
-                  c.srli     a4, 13
-                  c.addi     s7, 3
-                  c.addi     t4, -1
-                  lui        s9, 499270
-                  lui        t1, 207199
-                  c.addi     gp, -25
-                  c.srli     a2, 10
-                  divu       a1, t4, s11
-                  c.nop
-                  auipc      s4, 357441
-                  c.addi     s7, -26
-                  c.slli     a7, 26
-                  c.addi     t6, -20
-                  c.li       t1, 5
-                  c.addi     s9, 13
-                  auipc      a6, 699841
-                  auipc      t4, 10917
-                  c.add      a5, a2
-                  auipc      t2, 443800
-                  c.sub      a5, a2
-                  bltu       t0, s1, 6277f
-                  c.addi     t1, 27
-                  c.srli     a5, 7
-                  lui        a3, 461561
-                  c.addi     s11, -24
-                  sltu       t4, s1, s3
-                  c.srli     a4, 31
-                  lui        a3, 829387
-                  c.srai     s0, 10
-                  c.srai     a2, 11
-                  c.addi     s8, 26
-                  c.lui      a3, 12
-                  c.addi     s6, 2
-                  auipc      s3, 1013522
-                  c.srli     a0, 3
-                  auipc      s1, 960682
-                  auipc      s0, 755759
-6277:             lui        zero, 902527
-                  c.srli     a1, 17
-                  rem        s7, s5, ra
-                  c.addi     s9, -25
-                  c.slli     s9, 24
-                  c.addi     t4, -31
-                  xori       a4, s3, 541
-                  blt        s3, s6, 6288f
-                  c.addi     t2, -28
-                  bge        a5, zero, 6298f
-                  c.addi     t5, -20
-6288:             c.addi     s0, -10
-                  auipc      s3, 782574
-                  sll        a7, t3, s0
-                  c.addi     s1, -14
-                  c.addi     a7, 1
-                  c.addi     a3, -9
-                  c.addi     t5, -10
-                  c.addi     s11, -1
-                  divu       a6, s11, s4
-                  div        a4, a0, zero
-6298:             c.addi     s9, 7
-                  c.addi     a2, 18
-                  c.addi     s10, 28
-                  auipc      a4, 789256
-                  srli       s2, s4, 14
-                  c.srli     s0, 5
-                  auipc      s3, 270620
-                  lui        s10, 52244
-                  c.addi     a6, 31
-                  c.slli     a4, 5
-                  c.addi     s9, -19
-                  rem        t4, s2, a2
-                  lui        a4, 77149
-                  c.slli     a7, 17
-                  c.and      a5, a2
-                  c.addi     s3, -26
-                  c.slli     a5, 9
-                  lui        s11, 826012
-                  c.addi     a4, 6
-                  lui        s9, 706772
-                  c.slli     s7, 19
-                  c.slli     s1, 13
-                  sll        s9, s7, s4
-                  c.srai     s1, 27
-                  c.srli     a0, 2
-                  auipc      s3, 855020
-                  c.addi     s5, -32
-                  lui        zero, 265981
-                  c.slli     t4, 27
-                  srli       t5, ra, 12
-                  c.addi     s11, 9
-                  c.srai     a5, 10
-                  srli       s3, s8, 19
-                  and        t3, s7, s10
-                  auipc      s8, 795375
-                  c.lui      s7, 3
-                  c.and      a4, a0
-                  blt        t0, s10, 6338f
-                  c.addi     s4, 20
-                  c.slli     t3, 26
-6338:             auipc      t1, 918674
-                  c.srli     s1, 4
-                  c.srli     a3, 23
-                  lui        zero, 777047
-                  c.addi     s10, -1
-                  c.beqz     a3, 6351f
-                  lui        s0, 75992
-                  c.srli     a1, 29
-                  c.srli     a0, 2
-                  auipc      t5, 776612
-                  srli       s9, t4, 27
-                  c.lui      a4, 13
-                  c.slli     s4, 21
-6351:             auipc      s5, 237098
-                  c.lui      s3, 23
-                  c.addi     s4, 17
-                  la         a7, data_page_4+2287 #start riscv_load_store_rand_instr_stream_36
-                  lui        s4, 410336
-                  lui        a5, 563446
-                  lh         s7, -917(a7)
-                  c.li       s10, -23
-                  c.addi     a2, 13
-                  lui        s6, 460563
-                  c.addi     s6, -16
-                  c.slli     s6, 15
-                  c.addi     t2, 18
-                  fence.i
-                  auipc      s5, 389991
-                  c.add      a4, s1
-                  auipc      s5, 354794
-                  sb         a0, -1840(a7)
-                  lh         a4, -969(a7)
-                  c.addi     s8, 18
-                  fence
-                  c.and      s1, s1
-                  c.slli     s5, 26
-                  lbu        t3, -1362(a7)
-                  lb         a5, -2015(a7)
-                  sb         a6, 432(a7)
-                  c.or       a4, a4
-                  lbu        s11, 430(a7)
-                  lb         s7, 1567(a7)
-                  lb         a5, 78(a7)
-                  c.addi     s10, -16
-                  c.lui      a5, 30
-                  c.lui      s11, 17
-                  lbu        a6, -1214(a7)
-                  lbu        s9, -1954(a7)
-                  lb         s9, -822(a7)
-                  lui        s7, 948747
-                  c.srli     a4, 14
-                  c.addi     t5, 17
-                  lui        t1, 177905
-                  c.addi     gp, 19
-                  lbu        t1, 1135(a7)
-                  lbu        s10, -1401(a7)
-                  c.mv       s3, gp
-                  lbu        s10, 1794(a7)
-                  lb         t1, -1125(a7)
-                  auipc      t4, 605809
-                  lb         s8, 795(a7)
-                  sh         t4, 1047(a7) #end riscv_load_store_rand_instr_stream_36
-                  c.addi     a5, 21
-                  lui        gp, 278634
-                  c.lui      t1, 27
-                  c.lui      t5, 23
-                  lui        gp, 126356
-                  c.srli     a4, 11
-                  c.lui      s4, 17
-                  slt        s1, s0, t5
-                  c.addi     a4, -30
-                  sra        a6, zero, a5
-                  c.srli     a2, 7
-                  c.addi     t4, 19
-                  sltu       a7, s0, ra
-                  lui        s4, 243425
-                  bltu       gp, t2, 6385f
-                  lui        s11, 188299
-                  c.addi     t4, -25
-                  auipc      s9, 539523
-                  c.addi     a4, 14
-                  lui        a4, 918573
-                  slli       a1, s2, 12
-                  c.srai     a1, 23
-                  c.addi     t3, 2
-                  c.addi     t6, -30
-                  auipc      a0, 963886
-                  c.addi     s7, 12
-                  srli       a6, t3, 4
-                  lui        a2, 143805
-                  c.addi     t5, 29
-                  lui        a0, 612640
-                  auipc      s9, 656308
-6385:             ori        s4, gp, -59
-                  lui        s11, 671180
-                  c.addi     s3, -3
-                  sra        a6, a4, s6
-                  c.addi     a5, 10
-                  c.slli     s0, 11
-                  c.slli     t3, 5
-                  c.addi     a3, 20
-                  c.addi     s7, 20
-                  c.addi     a0, -1
-                  auipc      s4, 504249
-                  c.addi     s7, -32
-                  c.srli     a4, 28
-                  c.addi     t2, -22
-                  c.lui      t6, 10
-                  c.addi     a2, -23
-                  sll        s0, s8, ra
-                  c.addi     a4, 9
-                  c.srai     a1, 8
-                  c.addi     a2, 25
-                  c.srai     s0, 13
-                  srl        a5, s1, a1
-                  addi       a7, s8, 340
-                  lui        s0, 916839
-                  lui        s1, 387801
-                  fence.i
-                  c.srli     a0, 12
-                  c.slli     t5, 9
-                  auipc      a2, 221369
-                  c.srai     a1, 13
-                  lui        s9, 206789
-                  c.and      a3, a2
-                  auipc      a4, 112845
-                  auipc      a7, 401433
-                  auipc      a5, 413878
-                  c.slli     a3, 11
-                  sltiu      t1, s11, 219
-                  auipc      gp, 553781
-                  c.lui      a6, 10
-                  lui        t3, 65924
-                  c.srli     a1, 11
-                  c.addi     gp, 25
-                  c.addi     s6, -8
-                  c.addi     s10, -27
-                  srli       zero, s3, 13
-                  c.addi     a7, -24
-                  c.addi     a2, 10
-                  c.slli     s4, 23
-                  c.lui      s9, 14
-                  add        s3, s9, tp
-                  lui        s2, 347828
-                  c.lui      t4, 24
-                  c.lui      t1, 10
-                  c.addi     a3, -26
-                  divu       a5, s3, s2
-                  c.slli     s10, 1
-                  nop
-                  c.srai     a2, 20
-                  c.srai     a0, 18
-                  mulhu      a5, ra, t4
-                  lui        s3, 490290
-                  c.addi     a3, 22
-                  c.addi     s2, -15
-                  c.and      a4, a2
-                  c.srli     a2, 28
-                  c.addi     s0, -3
-                  lui        t6, 989791
-                  c.srli     a2, 21
-                  c.lui      t6, 6
-                  c.srai     a4, 15
-                  c.addi     s4, 11
-                  auipc      a5, 948832
-                  xori       s1, s1, 358
-                  div        a0, s5, a7
-                  c.addi     a7, -12
-                  blt        s7, t5, 6470f
-                  lui        a4, 125563
-                  fence
-                  lui        s9, 562727
-                  lui        t5, 965326
-                  bge        a3, a7, 6470f
-                  c.srai     a1, 30
-                  c.addi     s5, -21
-                  auipc      s10, 443833
-                  c.sub      a4, a1
-6470:             c.addi     s7, -7
-                  c.srai     a5, 25
-                  c.srai     a5, 10
-                  c.slli     s4, 2
-                  auipc      s8, 878981
-                  c.srai     s0, 30
-                  bltu       a1, t4, 6487f
-                  auipc      gp, 751552
-                  lui        t5, 509728
-                  c.srai     s0, 13
-                  lui        s9, 476439
-                  c.andi     a4, -1
-                  lui        a5, 727366
-                  c.lui      s2, 23
-                  c.addi     s11, 7
-                  c.xor      a2, a1
-                  c.srli     s0, 6
-6487:             or         s7, s6, gp
-                  c.lui      a1, 26
-                  divu       t3, t5, sp
-                  c.addi     s0, -13
-                  c.srli     a2, 10
-                  auipc      a2, 694835
-                  c.srai     a4, 5
-                  auipc      s1, 347525
-                  auipc      s10, 61218
-                  c.lui      s8, 4
-                  divu       t6, s2, t6
-                  c.addi     t3, 4
-                  auipc      a3, 594521
-                  c.slli     a2, 3
-                  auipc      s6, 219875
-                  auipc      s6, 1034821
-                  auipc      a3, 645720
-                  auipc      t1, 314746
-                  c.slli     s1, 16
-                  auipc      s11, 752181
-                  auipc      s6, 828692
-                  c.addi     t4, 20
-                  c.addi     s2, 14
-                  lui        zero, 808619
-                  c.addi     a5, 12
-                  c.addi     s6, 27
-                  slli       zero, t6, 8
-                  auipc      s2, 787267
-                  c.and      a1, a2
-                  c.addi     s7, 17
-                  c.slli     a2, 19
-                  auipc      t2, 422411
-                  c.slli     s1, 9
-                  lui        s7, 893668
-                  c.addi     s0, 31
-                  c.lui      s6, 6
-                  c.lui      s8, 1
-                  c.srli     a5, 14
-                  auipc      a4, 399760
-                  srl        a0, t1, t0
-                  auipc      s11, 381110
-                  c.addi     t5, -20
-                  sltu       t2, t6, s10
-                  ori        s3, s0, -904
-                  div        s0, s7, a6
-                  xori       a7, s11, 994
-                  mulhu      a0, s11, a7
-                  c.addi     t6, -19
-                  c.addi     s0, -16
-                  c.srai     a1, 27
-                  c.srli     a4, 30
-                  bgeu       s9, s11, 6554f
-                  auipc      t4, 519384
-                  auipc      zero, 259606
-                  xori       s8, tp, 707
-                  auipc      gp, 615253
-                  auipc      a5, 754678
-                  c.addi     s3, -3
-                  c.addi     t5, 27
-                  lui        a1, 193002
-                  c.srai     a4, 18
-                  c.addi     s0, 2
-                  sra        zero, s7, s4
-                  auipc      a4, 556123
-                  c.slli     s0, 21
-                  c.slli     s10, 22
-                  c.addi     t5, 30
-6554:             c.addi     a6, 3
-                  bltu       t3, tp, 6558f
-                  auipc      a7, 619025
-                  auipc      s3, 930885
-6558:             c.slli     s9, 27
-                  auipc      s5, 515770
-                  c.srai     a1, 30
-                  c.addi     a3, 6
-                  c.addi     a4, -12
-                  c.addi     t5, 21
-                  c.addi     gp, -22
-                  lui        a3, 393990
-                  c.lui      t5, 22
-                  auipc      s6, 749999
-                  c.slli     s5, 22
-                  c.addi     s10, -4
-                  c.nop
-                  c.addi     s0, 5
-                  c.addi     a0, -26
-                  c.addi     gp, 3
-                  auipc      a1, 814881
-                  srl        s0, t6, t3
-                  auipc      a3, 837850
-                  lui        a1, 463851
-                  c.addi     s4, -29
-                  lui        a1, 71125
-                  c.addi     s11, -1
-                  c.addi     s2, 15
-                  auipc      s4, 727713
-                  c.add      s0, s1
-                  lui        s0, 927011
-                  c.slli     s0, 11
-                  c.addi     a2, -9
-                  lui        s10, 651736
-                  c.slli     a7, 2
-                  auipc      a0, 68537
-                  auipc      s9, 883371
-                  c.addi     s9, 3
-                  c.srli     a2, 15
-                  auipc      s3, 104888
-                  lui        s9, 9050
-                  c.mv       t6, a2
-                  lui        zero, 595255
-                  div        t6, s11, zero
-                  c.srli     a5, 19
-                  c.addi     a2, -27
-                  c.slli     a7, 18
-                  c.lui      s3, 30
-                  div        a6, a5, a7
-                  c.andi     s1, 26
-                  fence
-                  sltu       s6, s1, a2
-                  sub        s5, s6, a3
-                  bgeu       t6, t4, 6609f
-                  c.addi     t5, 13
-6609:             auipc      a6, 765252
-                  c.srli     a4, 30
-                  divu       a0, t6, s4
-                  c.addi     s10, -12
-                  mulh       a5, s4, t3
-                  c.addi     s8, -5
-                  c.and      a5, s1
-                  bne        a1, t2, 6633f
-                  c.lui      s1, 1
-                  c.srai     a0, 23
-                  c.srli     a3, 17
-                  c.addi     a5, 23
-                  sltu       zero, t6, t1
-                  c.addi     s1, 22
-                  lui        s8, 780771
-                  c.srai     a3, 9
-                  c.addi     s2, 4
-                  srai       gp, a1, 11
-                  remu       a5, a2, s5
-                  c.srli     s0, 12
-                  fence
-                  lui        t3, 325857
-                  c.slli     s8, 17
-                  c.srai     a4, 15
-6633:             c.addi     a2, 6
-                  c.srli     a5, 17
-                  c.srai     a5, 24
-                  auipc      s9, 162595
-                  c.addi     t2, 23
-                  lui        s0, 526464
-                  c.slli     t1, 28
-                  c.srli     a3, 12
-                  c.addi     t4, 20
-                  mul        t1, a2, s4
-                  auipc      a3, 345515
-                  sll        t4, s1, a3
-                  lui        s10, 271386
-                  remu       a3, s0, s10
-                  c.andi     a5, 24
-                  c.slli     s9, 14
-                  auipc      zero, 169251
-                  c.li       t1, 0
-                  lui        s6, 409164
-                  c.addi     s9, -16
-                  lui        a7, 68534
-                  c.addi     a2, 11
-                  c.li       s9, 22
-                  c.beqz     s0, 6670f
-                  c.xor      a1, a2
-                  c.srli     a1, 26
-                  c.srai     a4, 11
-                  c.and      a2, s1
-                  c.srli     a2, 7
-                  auipc      s0, 354797
-                  c.srai     a3, 16
-                  lui        t1, 495745
-                  c.addi     a1, 25
-                  lui        a5, 545164
-                  bgeu       t5, s8, 6675f
-                  bge        gp, s8, 6678f
-                  mulh       t5, t5, t4
-6670:             c.addi     s4, 2
-                  c.srli     a3, 28
-                  c.slli     t2, 28
-                  c.nop
-                  c.addi     a5, 2
-6675:             auipc      a5, 664441
-                  c.srli     a3, 8
-                  c.addi     s2, -27
-6678:             c.addi     a6, -13
-                  c.slli     t3, 23
-                  auipc      s11, 511041
-                  auipc      s2, 705944
-                  mulhsu     t4, s10, s0
-                  auipc      s11, 207047
-                  fence
-                  c.addi     s4, 24
-                  c.addi     s7, -11
-                  lui        t5, 401823
-                  c.addi     a4, -1
-                  c.srli     a5, 8
-                  div        s10, ra, a1
-                  c.lui      s8, 17
-                  lui        s7, 728956
-                  lui        t3, 116194
-                  sub        s3, t3, sp
-                  c.lui      s2, 29
-                  mul        s9, s5, t1
-                  c.slli     s5, 9
-                  c.addi     t1, 13
-                  la         s4, data_page_19+1981 #start riscv_load_store_rand_instr_stream_57
-                  lb         a2, 1853(s4)
-                  c.lui      s6, 13
-                  lui        s11, 616694
-                  c.lui      s10, 21
-                  lui        s1, 697315
-                  auipc      zero, 855873
-                  c.addi     a7, 21
-                  c.addi     s5, -28
-                  c.lui      s9, 19
-                  lui        s6, 267524
-                  lb         t2, -1946(s4)
-                  andi       t4, s2, 820
-                  c.addi     s11, 13
-                  lui        s8, 255685
-                  sub        t1, t0, zero
-                  sb         a7, 222(s4)
-                  lui        s8, 571896
-                  auipc      zero, 391782
-                  c.srai     s1, 26
-                  auipc      s6, 582603
-                  c.addi     a4, -24
-                  lb         a6, -1105(s4)
-                  nop
-                  c.lui      a7, 22
-                  lb         gp, 1374(s4)
-                  auipc      t5, 656594
-                  addi       s7, sp, 687
-                  lw         a1, -673(s4)
-                  lui        s2, 734286
-                  c.addi     s0, -2
-                  lbu        s11, 1241(s4)
-                  addi       s7, tp, -960
-                  c.srli     a5, 25
-                  lb         s8, -1880(s4)
-                  lbu        a7, 1461(s4)
-                  sb         t1, 1728(s4)
-                  c.slli     s11, 3
-                  c.addi     s8, -9
-                  auipc      a4, 281091
-                  c.srai     a2, 1
-                  lb         a5, 1050(s4) #end riscv_load_store_rand_instr_stream_57
-                  c.slli     a1, 22
-                  lui        s5, 750051
-                  lui        t3, 667394
-                  c.srai     s1, 27
-                  nop
-                  auipc      s9, 145590
-                  c.srli     s1, 13
-                  c.addi     a6, 10
-                  bne        s5, s0, 6718f
-                  c.addi     s5, -12
-                  auipc      s0, 981512
-                  c.lui      a7, 8
-                  andi       s7, t1, -820
-                  bgeu       t2, s5, 6725f
-                  c.addi     s10, -8
-                  c.srli     a3, 20
-                  c.srli     a1, 24
-                  c.addi     t4, -17
-                  c.lui      s7, 20
-6718:             c.srli     a3, 2
-                  lui        s0, 43313
-                  c.srai     a5, 22
-                  auipc      s2, 698113
-                  lui        s1, 328023
-                  auipc      s2, 90995
-                  c.andi     s0, 8
-6725:             c.addi     a4, -4
-                  c.slli     t2, 1
-                  c.srai     a0, 6
-                  sltiu      s10, s10, 227
-                  c.slli     s3, 11
-                  add        s6, a3, s4
-                  c.srai     a0, 5
-                  auipc      s0, 992855
-                  lui        s10, 945794
-                  auipc      s3, 429783
-                  c.addi     s0, -16
-                  c.addi     s8, -16
-                  c.addi     a1, -23
-                  c.srai     a2, 11
-                  c.srli     a3, 27
-                  c.addi     s0, -11
-                  c.addi     s5, 11
-                  c.mv       t4, t0
-                  sltu       s11, s2, s4
-                  c.addi     t1, -31
-                  c.addi     s0, -19
-                  auipc      s1, 277246
-                  slti       t1, s9, -180
-                  auipc      t6, 510911
-                  auipc      t1, 384561
-                  c.beqz     s1, 6751f
-6751:             auipc      gp, 496610
-                  auipc      a2, 1006210
-                  lui        zero, 46450
-                  slt        t4, s0, gp
-                  lui        a0, 934581
-                  c.addi     t2, 3
-                  mul        s7, s5, gp
-                  sll        s1, gp, gp
-                  and        s3, s5, a3
-                  lui        s7, 795203
-                  auipc      a4, 886156
-                  auipc      t1, 921354
-                  c.slli     s1, 3
-                  c.addi     s5, -11
-                  c.addi     a5, 6
-                  lui        t1, 619901
-                  bltu       t5, a2, 6774f
-                  sltiu      t4, a2, 838
-                  c.srli     a0, 3
-                  c.lui      a1, 9
-                  auipc      a2, 109991
-                  slt        s9, gp, s2
-                  c.srai     s0, 26
-6774:             c.srai     s1, 16
-                  sub        zero, a4, a0
-                  sltu       a3, t6, t1
-                  lui        a2, 413123
-                  lui        s0, 407415
-                  c.addi     t1, 8
-                  mulh       s1, s6, s8
-                  c.srai     a0, 24
-                  c.addi     s11, -30
-                  lui        a1, 963883
-                  lui        s3, 708306
-                  c.addi     a7, -20
-                  c.addi     t6, 23
-                  c.srli     a2, 24
-                  fence
-                  c.addi     a7, 1
-                  c.srli     a0, 8
-                  lui        t2, 51333
-                  auipc      s5, 780314
-                  c.srai     s0, 9
-                  c.addi     a4, 9
-                  auipc      s9, 232642
-                  c.lui      s11, 21
-                  auipc      s8, 654592
-                  lui        s1, 631525
-                  sltiu      zero, s8, -613
-                  c.addi     s0, 8
-                  c.lui      a5, 27
-                  c.slli     a7, 23
-                  auipc      gp, 568692
-                  c.srli     s0, 6
-                  auipc      t5, 769667
-                  c.addi     a7, -5
-                  c.slli     t2, 29
-                  c.mv       a0, s3
-                  blt        s11, t0, 6812f
-                  c.addi     s5, 11
-                  lui        a2, 88060
-6812:             c.lui      a7, 30
-                  c.slli     s7, 15
-                  sltu       t4, s9, s10
-                  c.nop
-                  c.srai     s0, 13
-                  auipc      s9, 848226
-                  andi       s9, s5, 43
-                  c.lui      s1, 2
-                  slli       s3, zero, 9
-                  lui        s8, 476540
-                  auipc      a0, 370801
-                  c.or       a5, s0
-                  and        a7, ra, s8
-                  c.addi     s11, 21
-                  auipc      s1, 250742
-                  auipc      s2, 56165
-                  c.srli     a5, 7
-                  c.addi     a0, 6
-                  auipc      t4, 708790
-                  fence.i
-                  c.add      a1, a5
-                  c.srli     s1, 17
-                  c.lui      s9, 13
-                  lui        a5, 786705
-                  lui        t6, 386647
-                  bgeu       a4, a0, 6841f
-                  c.addi     a2, 24
-                  c.addi     s0, 13
-                  c.and      a4, a4
-6841:             c.slli     s8, 20
-                  c.lui      a3, 30
-                  c.or       s1, a2
-                  c.lui      t2, 9
-                  c.srli     a1, 19
-                  lui        t1, 350127
-                  c.lui      s10, 4
-                  c.lui      gp, 15
-                  c.addi     a1, -32
-                  c.addi     s11, 3
-                  c.lui      s11, 26
-                  addi       t2, s0, -566
-                  auipc      s9, 719525
-                  slli       s1, t5, 19
-                  c.or       a5, a2
-                  lui        s2, 953895
-                  auipc      t2, 496041
-                  c.srli     s1, 26
-                  auipc      a4, 999116
-                  c.srli     a3, 26
-                  c.li       s10, -12
-                  remu       gp, s4, t1
-                  divu       s11, s9, s10
-                  add        a6, s7, a6
-                  fence.i
-                  c.slli     s4, 16
-                  auipc      t5, 916819
-                  c.slli     s8, 4
-                  c.addi     t2, -23
-                  lui        zero, 733504
-                  c.srli     s1, 26
-                  c.srai     a0, 21
-                  c.srai     a0, 2
-                  c.addi     s10, 17
-                  auipc      a6, 70677
-                  blt        t5, t5, 6893f
-                  c.addi     s8, 21
-                  c.addi     s8, -23
-                  la         t2, data_page_5+2156 #start riscv_load_store_rand_instr_stream_42
-                  c.addi     s6, -14
-                  c.addi     a4, -4
-                  lh         s10, -1828(t2)
-                  lui        t1, 490007
-                  lb         a2, -1811(t2)
-                  sb         ra, 1129(t2)
-                  lb         s8, -1883(t2)
-                  sh         s9, 1508(t2)
-                  c.addi     t5, 25
-                  lb         s2, 1693(t2)
-                  c.addi     s3, -18
-                  lb         t3, 1211(t2)
-                  lui        a3, 1044530
-                  lb         s3, -625(t2)
-                  lw         s3, 688(t2)
-                  lui        a5, 220733
-                  slt        a6, a4, a4
-                  lh         a3, -616(t2)
-                  c.addi     s8, -9
-                  c.slli     a6, 12
-                  lb         s9, -1607(t2)
-                  sb         t4, -146(t2)
-                  auipc      t5, 676926
-                  lh         s11, 290(t2)
-                  sb         s1, 190(t2)
-                  lw         a1, 728(t2)
-                  lb         a6, 391(t2)
-                  c.lui      t1, 23
-                  c.srai     a1, 24
-                  sh         t5, 282(t2)
-                  sb         a2, 560(t2)
-                  sb         s2, -909(t2)
-                  lb         t1, 357(t2)
-                  c.slli     a3, 27
-                  lhu        s4, -1124(t2)
-                  c.addi     t4, 19
-                  lbu        t5, -1459(t2)
-                  c.mv       s0, a3
-                  sw         t2, 1196(t2)
-                  sb         a0, 682(t2)
-                  mulhsu     s3, t6, s3
-                  sh         s9, 114(t2)
-                  lui        s3, 8626
-                  sb         a7, -1738(t2)
-                  lb         s5, -950(t2) #end riscv_load_store_rand_instr_stream_42
-                  auipc      a6, 239478
-                  c.addi     s6, 5
-                  c.or       s0, a0
-                  srli       t2, a0, 14
-                  srai       zero, s3, 22
-                  c.addi     a3, -2
-                  lui        a3, 361689
-                  div        t4, s3, a7
-                  c.srai     a2, 29
-                  lui        t4, 673941
-                  mulhsu     a3, a7, s1
-                  sltiu      a5, s6, -374
-                  c.addi     s4, -14
-                  lui        s4, 855682
-6893:             c.beqz     s0, 6909f
-                  slti       t6, a6, -497
-                  c.addi     t2, 2
-                  c.srli     a4, 19
-                  and        a5, s8, s10
-                  mulhu      s3, s7, s6
-                  c.addi     a0, -10
-                  c.lui      t3, 17
-                  lui        a3, 556874
-                  mulhu      a6, a4, a7
-                  c.and      a4, a4
-                  c.srli     s1, 30
-                  c.slli     s11, 10
-                  c.slli     s6, 13
-                  c.addi     t5, -14
-                  xori       gp, a3, -827
-6909:             c.addi     s8, -31
-                  lui        t1, 140682
-                  c.addi     s2, 9
-                  c.lui      s10, 6
-                  and        s0, s10, t2
-                  bltu       s11, s7, 6927f
-                  c.srai     s0, 27
-                  c.srli     a1, 21
-                  auipc      t1, 314973
-                  c.lui      gp, 4
-                  c.addi     a3, 7
-                  auipc      s11, 204743
-                  c.addi     s11, 1
-                  slli       s3, t3, 20
-                  or         a5, s0, sp
-                  lui        a4, 14004
-                  remu       s4, s0, s5
-                  c.addi     t2, 10
-6927:             c.addi     t6, 22
-                  auipc      a2, 156291
-                  lui        zero, 2766
-                  c.srai     a3, 19
-                  fence
-                  c.addi     gp, -26
-                  c.addi     gp, -4
-                  c.addi     s3, 18
-                  lui        zero, 712721
-                  c.addi     a4, 24
-                  lui        t2, 539046
-                  auipc      s11, 758209
-                  auipc      a6, 61953
-                  c.mv       a5, ra
-                  c.srli     a2, 7
-                  auipc      a1, 350503
-                  c.addi     a7, 4
-                  c.or       a3, a3
-                  c.sub      a5, a1
-                  c.srai     a1, 14
-                  c.mv       s2, t1
-                  c.addi     a1, -31
-                  auipc      s0, 785830
-                  auipc      t6, 511908
-                  c.srli     a1, 30
-                  c.lui      s1, 23
-                  sltiu      t6, zero, -876
-                  lui        a3, 485980
-                  c.addi     a2, -15
-                  c.srli     s1, 26
-                  bne        gp, a1, 6960f
-                  c.slli     s4, 22
-                  c.slli     s9, 15
-6960:             auipc      s8, 569155
-                  sll        s3, t2, s0
-                  auipc      t6, 290377
-                  c.addi     s0, 18
-                  auipc      a3, 1027553
-                  sll        t4, a4, sp
-                  c.srli     s0, 24
-                  c.addi     s2, 4
-                  auipc      t3, 568089
-                  c.lui      s6, 22
-                  lui        s9, 182889
-                  remu       t2, t4, s11
-                  c.addi     s6, 28
-                  c.addi     t4, -26
-                  nop
-                  lui        s3, 648922
-                  c.addi     a3, 15
-                  lui        a1, 641513
-                  lui        t6, 648216
-                  c.srli     a4, 25
-                  c.srai     a5, 17
-                  c.addi     t2, -16
-                  mulhu      s9, a2, s0
-                  c.addi     a5, -9
-                  auipc      t2, 859625
-                  c.srli     a5, 2
-                  ori        a5, t6, -471
-                  c.srai     s0, 8
-                  c.srai     a0, 21
-                  bne        a6, s4, 6997f
-                  sub        a7, s11, s2
-                  slti       s9, s5, 616
-                  c.add      s1, a0
-                  c.addi     t1, 22
-                  and        t1, a2, sp
-                  lui        a2, 727256
-                  auipc      s0, 660299
-6997:             c.srai     a0, 3
-                  remu       a2, sp, t1
-                  c.addi     s2, 18
-                  c.slli     t4, 12
-                  c.srai     a1, 18
-                  mulh       t4, s2, s10
-                  lui        s9, 248523
-                  c.addi     s9, -10
-                  c.addi     a4, 26
-                  c.srai     a4, 28
-                  c.addi     s7, 28
-                  c.addi     t3, 26
-                  la         s11, data_page_11+2699 #start riscv_load_store_rand_instr_stream_10
-                  sb         a6, -1753(s11)
-                  auipc      a2, 329432
-                  c.addi     a4, 21
-                  sh         a7, -183(s11)
-                  andi       t4, s8, 643
-                  c.addi     t6, 14
-                  sb         ra, 1351(s11)
-                  c.srai     s1, 1
-                  auipc      s0, 349524
-                  c.lui      s10, 4
-                  srai       s10, ra, 1
-                  c.addi     t1, 19
-                  sb         t5, -157(s11)
-                  divu       s6, a3, a2
-                  lhu        s1, 1267(s11)
-                  fence.i
-                  lb         a3, -784(s11)
-                  lui        zero, 729020
-                  sh         ra, 1137(s11)
-                  sw         a0, -1499(s11)
-                  sb         s2, -733(s11)
-                  c.addi     t3, -5
-                  lui        s10, 78802
-                  c.slli     s2, 15
-                  sb         s10, -265(s11)
-                  auipc      s2, 189427
-                  sra        t5, s7, ra
-                  c.li       t4, 24
-                  auipc      t3, 591440
-                  sw         t0, 617(s11)
-                  sb         s10, -688(s11)
-                  sltu       s9, a6, s4
-                  lbu        t4, -805(s11)
-                  sb         a4, -1123(s11)
-                  sh         a7, 275(s11)
-                  c.addi     s1, -29
-                  lbu        a4, -1272(s11)
-                  lb         a0, -1784(s11)
-                  lbu        s1, 75(s11)
-                  sb         t4, -830(s11)
-                  c.li       s8, 11
-                  c.addi     a5, -6
-                  c.addi     s3, 29
-                  c.lui      t5, 23
-                  c.srai     a5, 13
-                  sh         ra, -1561(s11) #end riscv_load_store_rand_instr_stream_10
-                  c.addi     t3, -2
-                  auipc      a7, 758696
-                  c.slli     s7, 3
-                  c.lui      s10, 9
-                  c.addi     a3, -24
-                  c.slli     gp, 24
-                  c.addi     a5, 4
-                  sltiu      s4, s10, 849
-                  c.srli     a0, 8
-                  xori       s10, zero, -532
-                  c.slli     a4, 3
-                  c.slli     s4, 13
-                  c.addi     s0, -32
-                  c.addi     s11, -30
-                  remu       a3, a1, sp
-                  c.beqz     s1, 7031f
-                  c.srai     a2, 3
-                  lui        gp, 100307
-                  auipc      t6, 42229
-                  c.srai     s0, 22
-                  c.slli     t3, 22
-                  c.slli     a2, 8
-7031:             auipc      t4, 1037428
-                  lui        s3, 570292
-                  c.addi     s0, 31
-                  c.lui      s0, 20
-                  c.add      a3, a0
-                  lui        a0, 851689
-                  c.srai     a5, 2
-                  c.addi     t1, -6
-                  c.addi     s6, 10
-                  auipc      s0, 161487
-                  lui        t1, 998134
-                  c.srai     s1, 19
-                  auipc      a5, 1029193
-                  c.lui      a2, 7
-                  lui        s0, 292016
-                  lui        s7, 280008
-                  auipc      gp, 494215
-                  c.addi     t4, -16
-                  xor        a6, a6, a3
-                  c.addi     s4, 9
-                  c.lui      s4, 24
-                  auipc      t5, 267098
-                  c.srli     a1, 2
-                  c.srli     s1, 24
-                  c.srli     a5, 25
-                  c.addi     t3, 28
-                  c.addi     s10, -17
-                  auipc      t6, 800865
-                  lui        s0, 532183
-                  c.addi     a3, 27
-                  c.srli     s1, 18
-test_done:        
-                  li gp, 1
-                  ecall
-sub_1:            bge        s4, t1, sub_1_stack_p
-sub_1_stack_p:    addi       sp, sp, -32
-                  sw         ra, 4(sp)
-                  c.addi     t1, 4
-                  srai       t6, a3, 9
-                  sw         t0, 8(sp)
-                  auipc      s8, 599512
-                  c.addi     a4, 21
-                  c.lui      t6, 23
-                  c.and      a5, s0
-                  mulh       a2, t4, t4
-                  c.srli     a0, 26
-                  c.addi     t5, 11
-                  c.addi     s5, -15
-                  c.lui      t6, 28
-                  c.addi     s7, -11
-                  c.li       a6, 8
-                  fence
-                  c.addi     a0, -30
-                  c.addi     t1, -14
-                  c.addi     s4, 21
-                  nop
-                  c.addi     t4, 29
-                  srli       s8, a1, 1
-                  c.addi     a6, 24
-                  c.srli     s1, 30
-                  c.slli     a6, 11
-                  auipc      s10, 392995
-                  c.slli     a1, 16
-                  c.srai     s1, 8
-                  c.lui      s7, 8
-                  c.addi     a1, 8
-                  c.srli     a1, 27
-                  c.addi     s4, -20
-                  nop
-                  lui        s11, 430337
-                  c.addi     a5, 14
-                  c.xor      a4, a5
-                  c.addi     s7, -17
-                  lui        t1, 200003
-                  remu       s7, zero, a2
-                  auipc      s3, 181959
-                  c.addi     s10, -25
-                  auipc      s6, 58417
-                  mulh       t3, s4, t5
-                  auipc      s10, 526315
-                  c.addi     s9, -31
-                  c.srai     a1, 26
-                  bltu       t2, s4, 41f
-41:               c.lui      a2, 12
-                  c.srai     a3, 16
-                  c.srai     a3, 22
-                  c.addi     s9, 6
-                  c.srli     a4, 9
-                  c.srli     a0, 7
-                  c.addi     a2, 18
-                  c.srli     a3, 16
-                  c.addi     a0, -1
-                  c.or       s1, a1
-                  add        a4, gp, t6
-                  c.srai     s1, 8
-                  c.addi     gp, 7
-                  srai       a4, s11, 27
-                  c.addi     t4, 10
-                  c.addi     a4, -12
-                  lui        t3, 557311
-                  c.xor      a5, a2
-                  auipc      s2, 840535
-                  srl        s5, a4, s8
-                  srli       s8, t0, 29
-                  c.srli     s1, 10
-                  c.beqz     a1, 67f
-                  ori        a5, s2, 901
-                  c.addi     s4, 1
-                  c.slli     s2, 19
-67:               auipc      a4, 297044
-                  c.lui      a2, 12
-                  lui        t4, 249957
-                  c.lui      s9, 26
-                  c.srai     s0, 31
-                  c.lui      a1, 14
-                  c.and      a1, a5
-                  c.slli     a4, 1
-                  c.srli     a4, 4
-                  c.lui      s4, 4
-                  lui        a0, 332598
-                  c.add      s0, a4
-                  xor        s6, s1, ra
-                  lui        s8, 572853
-                  auipc      t3, 515534
-                  auipc      a2, 8152
-                  lw         ra, 4(sp)
-                  lw         t0, 8(sp)
-                  addi       sp, sp, 32
-                  and        zero, s1, s0
-95:               ret
-sub_3:            bge        a4, s7, sub_3_stack_p
-                  c.addi     gp, 8
-sub_3_stack_p:    addi       sp, sp, -8
-                  sw         ra, 4(sp)
-                  sw         t0, 8(sp)
-                  c.addi     a1, -22
-                  srai       t5, a0, 4
-                  c.lui      t2, 27
-                  c.li       s7, 30
-                  auipc      s9, 101509
-                  c.sub      s1, a2
-                  auipc      s2, 231216
-                  c.addi     s1, 22
-                  lui        s1, 575378
-                  ori        s10, a3, -15
-                  c.lui      s3, 11
-                  auipc      t5, 1041768
-                  la         t2, data_page_0+1379 #start riscv_load_store_rand_instr_stream_1
-                  lb         t6, 1622(t2)
-                  sb         a7, 1328(t2)
-                  c.addi     a0, -5
-                  auipc      s8, 328032
-                  and        t5, a4, s5
-                  ori        s11, t6, -718
-                  c.addi     s4, -6
-                  sb         a7, 1990(t2)
-                  lb         s4, 1124(t2)
-                  c.addi     s0, 3
-                  lb         a6, -46(t2)
-                  lbu        t1, 935(t2)
-                  lh         zero, -1253(t2)
-                  sh         s6, 877(t2)
-                  lb         s7, -1374(t2)
-                  c.srai     a2, 28
-                  lb         s3, -1144(t2)
-                  lbu        t5, -12(t2)
-                  lb         a3, 128(t2)
-                  c.addi     s8, -9
-                  sw         sp, 1645(t2)
-                  lui        t4, 696624
-                  sw         ra, 773(t2)
-                  sb         s8, -778(t2)
-                  lbu        zero, 1627(t2)
-                  lbu        a3, -190(t2)
-                  lb         a1, -371(t2)
-                  lb         s11, -950(t2)
-                  lb         s6, 1823(t2)
-                  lw         t6, 81(t2)
-                  mul        zero, s2, s11
-                  sub        gp, s9, s11
-                  c.srai     a4, 1
-                  c.srai     a4, 24
-                  lui        s9, 83037
-                  lh         gp, -723(t2)
-                  c.lui      s1, 25
-                  sh         a5, -1019(t2)
-                  lbu        s1, 1033(t2)
-                  lb         s9, 1102(t2)
-                  lbu        gp, -84(t2)
-                  c.addi     a7, -3
-                  lb         s1, -77(t2) #end riscv_load_store_rand_instr_stream_1
-                  ori        a4, tp, -246
-                  blt        a2, a3, j_sub_3_sub_5_6 #branch to jump instr
-                  c.andi     s0, -28
-                  c.slli     s4, 21
-                  c.addi     a6, 8
-                  c.srai     a5, 2
-                  lui        t4, 951737
-                  lui        a6, 820046
-                  auipc      s4, 334962
-                  lui        s4, 143866
-                  add        s0, a1, s1
-                  c.srai     a3, 26
-j_sub_3_sub_5_6:  jal        ra, sub_5
-                  c.srli     s0, 11
-                  c.addi     s4, 6
-                  c.addi     s7, 8
-                  auipc      a5, 645482
-                  c.addi     s5, -29
-                  sltu       t2, sp, a5
-                  divu       a6, t5, s4
-                  auipc      s8, 526093
-                  c.addi     a5, 19
-                  auipc      s7, 381776
-                  c.addi     s1, -23
-                  bltu       zero, a7, 37f
-                  lui        s2, 1004920
-                  lui        a2, 48561
-                  lui        t4, 633592
-                  lui        s6, 732041
-                  c.lui      gp, 25
-                  c.lui      a0, 9
-                  c.addi     s6, 4
-                  c.lui      a6, 17
-                  auipc      a3, 746543
-                  auipc      s2, 656075
-                  c.lui      s8, 15
-                  c.addi     s11, -22
-                  auipc      a1, 155999
-                  c.addi     a4, 9
-37:               lui        t3, 969968
-                  c.srli     s1, 3
-                  c.srai     s0, 26
-                  c.srli     a2, 6
-                  c.lui      t5, 1
-                  c.slli     s5, 12
-                  lui        s5, 587403
-                  auipc      s2, 99719
-                  c.addi     a7, 18
-                  fence.i
-                  c.slli     a0, 14
-                  c.addi     a4, 9
-                  c.srli     a3, 2
-                  c.addi     a5, -20
-                  c.or       a3, a2
-                  auipc      s10, 72271
-                  sra        a5, a0, s10
-                  c.addi     s9, 28
-                  lui        t6, 901922
-                  c.srli     s0, 11
-                  c.srli     a3, 4
-                  lui        s10, 906039
-                  c.srai     a0, 9
-                  bltu       zero, s2, 79f
-                  lui        a6, 355663
-                  c.addi     t3, 24
-                  c.addi     a4, 18
-                  beq        s0, s9, 70f
-                  lui        s0, 831429
-                  c.srai     s1, 12
-                  auipc      a6, 406575
-                  andi       s9, a7, 725
-                  c.addi     s3, 28
-70:               c.srai     a5, 24
-                  lui        s8, 584434
-                  c.srai     a3, 13
-                  la         a4, data_page_19+1880 #start riscv_load_store_rand_instr_stream_5
-                  sh         sp, 1858(a4)
-                  lb         a5, 1180(a4)
-                  lui        s8, 250105
-                  lui        s9, 360161
-                  c.addi     s10, 9
-                  auipc      zero, 760437
-                  c.addi     s6, 3
-                  lbu        t5, -27(a4)
-                  lbu        s8, 593(a4)
-                  c.addi     s10, -3
-                  lb         a1, -1467(a4)
-                  sb         t1, -283(a4)
-                  c.addi     s0, -13
-                  lbu        t4, -1215(a4)
-                  lb         s11, -1475(a4)
-                  slti       s0, t0, 1009
-                  lb         a6, 445(a4)
-                  sb         s10, -1519(a4)
-                  sb         s10, -1325(a4)
-                  sh         s0, 176(a4)
-                  auipc      s10, 322745
-                  lb         a6, 425(a4)
-                  sra        s1, gp, a2
-                  c.addi     s6, 8
-                  lh         a7, 236(a4)
-                  lb         a0, -1638(a4)
-                  sh         s1, -848(a4)
-                  lh         s4, -1154(a4)
-                  c.srli     s0, 22
-                  lbu        t4, -76(a4)
-                  c.srai     s1, 14
-                  sb         a1, -265(a4)
-                  lui        s5, 2893
-                  lui        s10, 551903
-                  sb         s6, 1673(a4)
-                  sb         s9, -1272(a4) #end riscv_load_store_rand_instr_stream_5
-                  sra        gp, gp, a4
-                  c.addi     s2, -15
-                  c.slli     a3, 11
-                  c.addi     s0, 31
-                  c.addi     s3, 5
-                  auipc      a4, 220373
-79:               c.slli     t2, 12
-                  c.lui      s2, 31
-                  lui        zero, 1012934
-                  c.addi     s5, -21
-                  c.addi     a6, -22
-                  c.li       s3, 17
-                  mul        a6, s2, a4
-                  c.srli     a1, 3
-                  lui        t6, 405270
-                  xor        s10, s8, s11
-                  auipc      t3, 488855
-                  c.addi     s8, 12
-                  c.andi     a3, 25
-                  c.addi     s7, 6
-                  c.addi     s11, -25
-                  bne        t0, a6, 97f
-                  c.slli     a7, 5
-                  c.addi     t3, 17
-97:               auipc      t6, 245455
-                  c.slli     s2, 26
-                  c.lui      a2, 10
-                  c.addi     s8, -5
-                  c.addi     s7, 6
-                  auipc      a2, 43698
-                  auipc      t4, 260786
-                  c.addi     s7, -20
-                  lui        s3, 865718
-                  sltu       a4, s5, s9
-                  mulhu      s4, s8, t1
-                  and        t1, a3, zero
-                  auipc      t3, 754564
-                  c.addi     a7, -31
-                  lui        a1, 281010
-                  c.lui      s6, 4
-                  lui        a1, 293452
-                  c.addi     s2, -10
-                  c.slli     a5, 30
-                  lui        a1, 556719
-                  c.addi     s9, -16
-                  c.srli     a0, 12
-                  c.addi     s3, -28
-                  auipc      t4, 928387
-                  c.srli     s1, 8
-                  xor        a0, a6, a1
-                  c.lui      a1, 5
-                  c.sub      a0, a0
-                  c.add      a4, a4
-                  c.addi     a5, -10
-                  bltu       gp, s3, 141f
-                  c.addi     a2, -11
-                  remu       a5, t1, s9
-                  slti       s7, s6, -955
-                  slli       s1, t0, 22
-                  slt        s8, a3, s5
-                  c.li       t5, 10
-                  auipc      t5, 874042
-                  c.slli     s4, 25
-                  c.lui      a1, 19
-                  lui        s1, 804289
-                  auipc      t4, 725054
-                  c.sub      a2, s1
-                  lui        t4, 470429
-141:              c.addi     t3, 26
-                  c.srai     s0, 1
-                  c.lui      s2, 14
-                  remu       t3, t4, s4
-                  c.addi     t1, 17
-                  lui        t3, 104081
-                  c.addi     t6, 1
-                  c.srai     a5, 20
-                  c.beqz     a0, 154f
-                  or         s6, t4, s0
-                  c.lui      a6, 5
-                  sra        a1, ra, a5
-                  c.addi     a7, -12
-154:              c.srai     s0, 24
-                  addi       s10, t2, 388
-                  bgeu       t4, t6, 171f
-                  c.addi     gp, 2
-                  la         t4, data_page_15+1572 #start riscv_load_store_rand_instr_stream_6
-                  c.lui      s9, 28
-                  c.addi     a5, 10
-                  fence
-                  lhu        s4, 1990(t4)
-                  lbu        a5, 546(t4)
-                  c.slli     s3, 28
-                  lb         t2, 719(t4)
-                  lb         s0, -161(t4)
-                  sh         t3, -32(t4)
-                  lb         t5, -201(t4)
-                  auipc      s6, 734144
-                  ori        t6, s3, -644
-                  lhu        zero, -758(t4)
-                  c.and      s1, a5
-                  lb         a3, -305(t4)
-                  c.lui      a3, 13
-                  lui        s5, 918336
-                  lb         t5, -513(t4)
-                  slli       s9, s0, 20
-                  sb         s6, -1009(t4) #end riscv_load_store_rand_instr_stream_6
-                  c.addi     s10, -24
-                  lui        zero, 287927
-                  c.nop
-                  bltu       a5, t3, 175f
-                  c.addi     s7, -4
-                  c.lui      t3, 29
-                  lui        a6, 923072
-                  c.addi     a4, 25
-                  auipc      s3, 328394
-                  c.slli     a2, 11
-                  c.addi     t4, -29
-                  c.sub      a0, a2
-                  c.addi     gp, 26
-171:              c.srli     a4, 26
-                  c.addi     s2, 15
-                  c.lui      a6, 21
-                  c.bnez     a0, 190f
-175:              auipc      a1, 262661
-                  la         s5, data_page_13+1761 #start riscv_load_store_rand_instr_stream_3
-                  sb         t3, -1544(s5)
-                  lbu        a5, -1287(s5)
-                  lbu        a7, 1496(s5)
-                  lbu        s0, -1474(s5)
-                  lb         t5, 533(s5)
-                  sb         a1, 390(s5)
-                  c.addi     a2, -5
-                  lb         t6, -623(s5)
-                  c.slli     a7, 19
-                  sb         t1, 869(s5)
-                  c.slli     s9, 6
-                  lhu        gp, -1539(s5)
-                  lui        s7, 717549
-                  lbu        a5, 850(s5)
-                  lb         a7, -70(s5)
-                  srai       t4, s3, 11
-                  c.addi     a6, -30
-                  auipc      t2, 494813
-                  lhu        s3, 1943(s5)
-                  lh         s1, -823(s5)
-                  auipc      a5, 991481
-                  or         t6, s1, a4
-                  lb         a5, -234(s5)
-                  lb         gp, 1514(s5)
-                  lb         s1, 889(s5)
-                  sh         a5, 1549(s5)
-                  sb         a5, -619(s5)
-                  lb         s7, 1528(s5)
-                  xori       s10, a1, -419
-                  sb         a0, -887(s5)
-                  c.addi     s6, 7
-                  sb         s11, -824(s5)
-                  lb         s7, -91(s5) #end riscv_load_store_rand_instr_stream_3
-                  c.srli     a5, 23
-                  c.srai     s0, 25
-                  c.srli     s0, 7
-                  c.srli     a2, 24
-                  c.addi     s11, -5
-                  c.addi     t6, 4
-                  c.addi     t2, 22
-                  c.addi     t4, 16
-                  slti       s6, s10, -273
-                  c.addi     gp, -26
-                  c.addi     s8, 29
-                  auipc      t4, 964108
-                  slli       s9, zero, 1
-                  lui        a0, 278493
-190:              lui        s8, 383759
-                  c.srli     a4, 17
-                  c.addi     t4, 10
-                  auipc      s4, 662058
-                  fence
-                  c.xor      s1, s0
-                  lui        s11, 361583
-                  fence.i
-                  auipc      a7, 364570
-                  auipc      s7, 233272
-                  c.lui      t1, 9
-                  lui        t5, 672259
-                  c.addi     s11, -27
-                  c.srai     a0, 7
-                  c.addi     gp, -5
-                  c.li       t6, -16
-                  c.nop
-                  auipc      s0, 519828
-                  c.and      a3, a2
-                  c.addi     t3, -14
-                  c.mv       a4, s8
-                  c.addi     s3, 25
-                  c.addi     a1, 25
-                  and        s1, t1, s8
-                  c.addi     a3, -13
-                  sltu       a3, s8, t4
-                  c.slli     gp, 30
-                  c.addi     s9, 4
-                  c.lui      t3, 4
-                  auipc      t1, 739270
-                  c.addi     s6, -19
-                  c.addi     s1, 20
-                  auipc      s3, 731421
-                  c.slli     s5, 21
-                  lui        gp, 523605
-                  lui        a0, 756905
-                  c.addi     s8, 13
-                  c.lui      t6, 6
-                  divu       s10, a7, sp
-                  c.srai     a2, 13
-                  c.addi     t3, -13
-                  c.addi     a1, -17
-                  lui        s3, 681602
-                  auipc      s8, 329123
-                  c.li       s11, 4
-                  lui        s1, 771795
-                  c.addi     a0, -4
-                  c.addi     t2, 22
-                  c.srli     a4, 26
-                  auipc      s10, 131571
-                  la         a1, sub_4
-                  c.addi     s1, 18
-                  addi       a1, a1, 315
-                  auipc      a0, 555967
-                  c.and      s0, a0
-j_sub_3_sub_4_5:  jalr       ra, a1, -315
-                  slt        s7, t3, a4
-                  auipc      a7, 775849
-                  c.addi     t4, 6
-                  bgeu       t3, a4, 240f
-                  auipc      t3, 519968
-                  c.addi     t2, 11
-                  or         s7, a5, a5
-240:              c.srai     a2, 17
-                  c.slli     t4, 3
-                  c.lui      s10, 1
-                  lui        a7, 797985
-                  c.srli     a2, 30
-                  c.srai     a2, 5
-                  auipc      t6, 227102
-                  c.lui      s2, 31
-                  lui        s11, 688608
-                  c.addi     s4, -27
-                  c.andi     a4, -16
-                  lui        a4, 33670
-                  c.slli     s7, 18
-                  c.addi     a1, 1
-                  c.addi     t1, 5
-                  lui        s7, 736706
-                  c.addi     s7, -29
-                  c.srli     a3, 10
-                  c.addi     s7, -8
-                  c.slli     s7, 30
-                  bltu       t0, s10, 264f
-                  lui        s1, 232064
-                  c.or       a5, a0
-                  c.addi     s5, -14
-264:              c.lui      t4, 14
-                  c.addi     s8, 9
-                  c.addi     t5, -3
-                  c.srli     s0, 28
-                  c.addi     s7, -21
-                  lui        a7, 164039
-                  c.lui      a0, 12
-                  c.srai     a3, 20
-                  c.addi     t4, 25
-                  c.srai     a1, 27
-                  c.srli     s1, 10
-                  c.slli     s7, 31
-                  c.addi     t6, -20
-                  c.slli     a1, 8
-                  c.addi     t4, 24
-                  slti       s11, s10, 412
-                  c.lui      a3, 2
-                  c.addi     s10, -10
-                  bltu       a7, a6, 287f
-                  sltiu      a7, s8, -284
-                  lui        s3, 456025
-                  mul        t1, t2, a0
-                  c.srai     a4, 31
-287:              nop
-                  c.srli     a5, 22
-                  c.addi     t1, -22
-                  lui        s4, 322073
-                  c.add      s0, s0
-                  c.slli     t5, 13
-                  mul        s0, a5, a3
-                  auipc      s0, 502688
-                  auipc      s1, 432453
-                  c.srli     a5, 13
-                  lui        t5, 296095
-                  auipc      a5, 941318
-                  bgeu       s10, s0, 306f
-                  c.addi     s10, -29
-                  lui        s2, 937496
-                  auipc      t3, 959272
-                  c.addi     t6, 4
-                  srli       t5, s0, 29
-                  c.addi     s6, 19
-306:              auipc      t1, 293799
-                  c.addi     a2, 21
-                  c.xor      a1, s0
-                  lui        s5, 189574
-                  auipc      s3, 429591
-                  lui        gp, 599774
-                  c.and      a4, a2
-                  c.slli     a3, 2
-                  mul        a5, t1, zero
-                  c.srai     a3, 25
-                  c.addi     s2, 2
-                  c.slli     s1, 6
-                  c.addi     s6, 15
-                  lui        s10, 311608
-                  c.slli     t5, 7
-                  and        t5, zero, a4
-                  c.addi     s3, -31
-                  rem        t6, s4, a2
-                  c.lui      s6, 6
-                  c.addi     a5, -2
-                  c.addi     a2, 14
-                  beq        s3, a1, 344f
-                  c.addi     s10, 16
-                  lui        s9, 389868
-                  c.addi     t4, 1
-                  c.addi     a2, 23
-                  lui        s3, 120087
-                  c.mv       a7, a3
-                  slt        s0, a2, s1
-                  c.xor      s0, s1
-                  c.addi     s9, 28
-                  lui        t5, 372966
-                  lui        gp, 244150
-                  c.andi     a4, -6
-                  addi       a7, zero, -277
-                  c.xor      s1, a0
-                  c.srli     a5, 19
-                  lui        a4, 332212
-344:              c.lui      t3, 14
-                  auipc      s10, 148952
-                  divu       gp, s10, s5
-                  c.addi     s4, 25
-                  auipc      a1, 525981
-                  add        zero, a1, s3
-                  c.addi     a5, -26
-                  c.srai     a3, 30
-                  bgeu       s1, a6, j_sub_3_sub_5_7 #branch to jump instr
-                  c.srai     s1, 16
-                  ori        t4, t3, -820
-                  c.srli     s0, 14
-j_sub_3_sub_5_7:  jal        ra, sub_5
-                  c.addi     s9, 9
-                  auipc      a2, 106145
-                  c.addi     t3, -18
-                  slli       s10, s3, 16
-                  auipc      a6, 817856
-                  auipc      s1, 72706
-                  slt        t3, ra, a1
-                  lui        s10, 630859
-                  c.srli     a3, 22
-                  c.addi     a2, -14
-                  c.addi     a5, 2
-                  bltu       a5, t0, 373f
-                  lui        a6, 353448
-                  c.srai     a4, 22
-                  c.srai     s0, 20
-                  c.srli     a2, 4
-                  auipc      gp, 555318
-                  c.addi     s9, 27
-                  xor        a3, sp, s9
-                  c.srli     a3, 14
-                  c.slli     t6, 5
-                  auipc      t1, 38402
-                  lui        a2, 182163
-                  c.addi     a1, 5
-                  c.addi     s3, 15
-                  bltu       a6, t0, 385f
-373:              c.srli     a3, 6
-                  c.addi     s0, 4
-                  c.lui      s11, 8
-                  c.addi     t4, -1
-                  andi       a3, a5, 929
-                  mulhsu     gp, s2, s4
-                  c.addi     s3, 28
-                  lui        s1, 307114
-                  c.addi     a7, 15
-                  c.addi     s7, 4
-                  auipc      zero, 5983
-                  lui        s11, 862047
-385:              c.srai     a4, 22
-                  c.addi     s5, 11
-                  lui        t1, 456943
-                  c.lui      a5, 3
-                  div        t3, t4, s6
-                  lui        s3, 814637
-                  c.lui      a5, 23
-                  sltu       t6, s0, t4
-                  lui        gp, 673130
-                  c.slli     s3, 28
-                  c.srli     a5, 4
-                  la         t3, data_page_19+1583 #start riscv_load_store_rand_instr_stream_4
-                  c.srli     a3, 29
-                  lb         s2, 1914(t3)
-                  c.srli     a4, 26
-                  c.srai     a1, 27
-                  lb         t2, -924(t3)
-                  sb         a7, -1060(t3)
-                  lb         t4, 1179(t3)
-                  lb         s11, 616(t3)
-                  lui        t6, 333627
-                  c.addi     a3, 28
-                  mul        a1, t2, a1
-                  lbu        a0, 1264(t3)
-                  auipc      a0, 3046
-                  lw         s11, 1169(t3)
-                  lbu        t4, 876(t3)
-                  c.slli     t6, 22
-                  c.srai     s1, 10
-                  lbu        t2, 1047(t3)
-                  or         s6, a0, s5
-                  sb         gp, 36(t3)
-                  lhu        s1, 1471(t3)
-                  lbu        a7, 1196(t3)
-                  c.andi     a5, -11
-                  sub        t6, a1, a0
-                  and        t5, s11, a1
-                  lhu        t5, -875(t3) #end riscv_load_store_rand_instr_stream_4
-                  slt        a5, a4, a5
-                  lui        s8, 642772
-                  c.addi     s2, -15
-                  auipc      s8, 133081
-                  c.sub      a4, a2
-                  c.addi     s6, -18
-                  auipc      a4, 167112
-                  c.nop
-                  c.lui      s2, 27
-                  lui        a1, 716408
-                  c.srai     a0, 19
-                  c.addi     a5, 31
-                  auipc      a5, 129719
-                  c.add      a5, a5
-                  c.addi     s6, -2
-                  slti       s3, tp, -569
-                  bge        t4, zero, 415f
-                  auipc      t4, 373355
-                  c.srai     a3, 1
-415:              c.and      s1, s0
-                  auipc      s3, 1008224
-                  auipc      s10, 371102
-                  c.srai     s0, 12
-                  lui        a6, 16284
-                  nop
-                  sltiu      t4, s2, -501
-                  c.addi     s1, -29
-                  sltu       a6, t1, t6
-                  c.addi     s9, 5
-                  lui        s8, 87848
-                  auipc      gp, 782480
-                  c.lui      s2, 13
-                  c.addi     gp, 22
-                  c.slli     s7, 5
-                  mulh       a5, s7, s9
-                  c.addi     a0, 19
-                  bge        s6, sp, 447f
-                  c.addi     s6, -18
-                  c.srai     a3, 6
-                  lui        a6, 625541
-                  c.addi     a2, -18
-                  c.slli     t3, 18
-                  c.srli     s1, 21
-                  sra        a3, s5, zero
-                  c.addi     s1, 22
-                  c.addi     a2, -3
-                  lui        a5, 489344
-                  auipc      t4, 561433
-                  c.addi     s11, 16
-                  sub        s9, t1, t5
-                  c.addi     a4, 19
-447:              c.addi     s5, -5
-                  c.addi     s1, -26
-                  c.addi     a4, 30
-                  lui        a1, 412691
-                  c.slli     t4, 24
-                  lui        zero, 512415
-                  sltu       a6, ra, a6
-                  mulhu      s0, sp, t1
-                  c.addi     a4, 4
-                  lui        t1, 1019163
-                  c.addi     a5, 1
-                  c.slli     a1, 12
-                  c.srai     a4, 5
-                  c.addi     a5, -11
-                  andi       t6, a7, -243
-                  c.addi     s1, 18
-                  auipc      a7, 147155
-                  lui        s5, 454912
-                  c.slli     t1, 10
-                  c.srai     a0, 26
-                  c.slli     s0, 25
-                  auipc      t2, 566273
-                  c.lui      a4, 26
-                  slti       s5, s11, 296
-                  c.slli     s3, 10
-                  auipc      gp, 217267
-                  c.srai     s1, 28
-                  lui        s6, 61789
-                  c.srli     a3, 1
-                  srli       t1, s0, 27
-                  c.srai     s1, 19
-                  lui        t3, 191696
-                  c.addi     t5, 4
-                  lui        a3, 331330
-                  bge        t3, a7, 496f
-                  c.addi     t3, -7
-                  c.addi     t3, -8
-                  add        t4, zero, s7
-                  lui        s10, 285355
-                  c.addi     s7, -23
-                  c.srai     a5, 13
-                  auipc      s1, 735056
-                  lui        a5, 461008
-                  c.lui      a1, 10
-                  c.xor      a5, a4
-                  auipc      t4, 801316
-                  auipc      t4, 814477
-                  c.slli     s7, 16
-                  c.addi     t5, -16
-496:              c.addi     a6, -8
-                  c.srai     s1, 5
-                  c.addi     s11, -13
-                  c.slli     t3, 18
-                  c.addi     a6, 14
-                  c.addi     t5, -28
-                  c.mv       s7, a2
-                  c.srli     a5, 17
-                  remu       t3, gp, s10
-                  c.addi     a1, -6
-                  c.srai     a5, 24
-                  c.srai     s1, 18
-                  c.lui      t6, 16
-                  auipc      s2, 367622
-                  c.srai     a5, 8
-                  and        t2, a7, s11
-                  c.slli     s8, 27
-                  c.mv       a7, gp
-                  auipc      s10, 1040772
-                  c.addi     t6, -28
-                  c.addi     t5, -18
-                  auipc      t6, 742965
-                  srli       s5, s0, 8
-                  c.addi     s0, -14
-                  c.addi     t5, 14
-                  c.addi     t6, 18
-                  c.srli     a2, 11
-                  c.sub      a0, a0
-                  sltiu      t3, s1, -556
-                  lui        zero, 300560
-                  c.slli     t3, 17
-                  la         t3, data_page_8+1564 #start riscv_load_store_rand_instr_stream_0
-                  c.slli     s8, 25
-                  c.addi     s3, -17
-                  c.addi     s10, -13
-                  slli       s0, t2, 1
-                  sb         zero, 823(t3)
-                  lb         a5, -1399(t3)
-                  xor        zero, a2, s9
-                  addi       a2, s10, 96
-                  c.srai     a4, 11
-                  sh         t1, -1214(t3)
-                  lb         a6, 1505(t3)
-                  lb         s8, -1339(t3)
-                  c.srli     a2, 21
-                  lui        a7, 935374
-                  sw         s4, 268(t3)
-                  auipc      zero, 725819
-                  lb         s7, 222(t3)
-                  c.addi     s10, 9
-                  sb         a5, 623(t3)
-                  lh         a2, 96(t3)
-                  c.srli     a2, 7
-                  c.xor      a3, a0
-                  lui        t6, 513208
-                  lh         a4, -906(t3)
-                  lhu        s3, 1648(t3)
-                  auipc      t6, 54593
-                  lb         a5, -1229(t3)
-                  lhu        s4, 1784(t3)
-                  lbu        t6, 1483(t3)
-                  c.slli     s9, 6
-                  sb         ra, 1991(t3)
-                  sb         s7, 1280(t3)
-                  lbu        s6, 268(t3)
-                  mulh       t4, t4, a0
-                  lb         s6, 1241(t3)
-                  slli       s8, gp, 4
-                  lui        t2, 794686
-                  lhu        t2, -130(t3)
-                  c.addi     gp, 2
-                  lb         a7, -413(t3)
-                  lbu        s10, 1570(t3)
-                  sb         t5, -211(t3)
-                  lbu        a3, 1757(t3)
-                  lui        zero, 713784
-                  lbu        t1, 1289(t3)
-                  c.lui      s5, 30
-                  lw         a3, -332(t3)
-                  xori       s1, gp, -291
-                  lbu        s4, 1945(t3) #end riscv_load_store_rand_instr_stream_0
-                  c.addi     s0, -1
-                  c.srai     s1, 28
-                  c.addi     t5, 26
-                  lui        a4, 113149
-                  auipc      t2, 1004973
-                  c.addi     a0, 20
-                  c.and      s1, a0
-                  c.addi     t6, 22
-                  auipc      t1, 386324
-                  srl        a4, s2, t6
-                  c.addi     t1, -29
-                  c.addi     s0, -10
-                  c.addi     s7, -1
-                  c.mv       a6, a2
-                  ori        s2, t2, -84
-                  blt        a2, t4, 557f
-                  auipc      s5, 343868
-                  rem        s3, a0, ra
-                  c.srli     s0, 22
-                  c.slli     s3, 6
-                  c.addi     t2, 3
-                  slt        s1, t6, s11
-                  auipc      s5, 474997
-                  auipc      a1, 793680
-                  c.addi     s9, 31
-                  c.addi     t4, 23
-                  srli       s3, s5, 27
-                  c.addi     a5, 3
-                  c.addi     s0, -18
-                  c.slli     s5, 16
-557:              bltu       s1, s5, 560f
-                  c.addi     t3, 18
-                  c.addi     t2, -17
-560:              c.sub      s1, s1
-                  fence
-                  auipc      a7, 373758
-                  c.slli     t4, 26
-                  auipc      t3, 393135
-                  srli       a3, s10, 22
-                  sll        s1, a1, s5
-                  c.xor      a0, s1
-                  c.srli     a2, 6
-                  c.lui      t4, 16
-                  srli       s0, s4, 18
-                  slli       a1, a7, 23
-                  c.addi     gp, 11
-                  auipc      s2, 546700
-                  sra        a0, t4, s11
-                  auipc      s4, 973706
-                  c.srli     s1, 2
-                  lui        a0, 220242
-                  c.addi     s0, -15
-                  beq        a7, t1, 599f
-                  auipc      s10, 797465
-                  auipc      s11, 45570
-                  mulhsu     s11, s9, s4
-                  auipc      s5, 426877
-                  sltu       s5, gp, a6
-                  c.lui      s7, 2
-                  c.addi     a0, -31
-                  auipc      a4, 896143
-                  c.slli     s6, 3
-                  c.srai     s1, 12
-                  sra        gp, s10, s2
-                  c.slli     s0, 12
-                  auipc      s0, 329959
-                  sltiu      s8, ra, -513
-                  c.srai     a4, 24
-                  c.lui      s1, 8
-                  srli       s5, s0, 2
-                  c.srli     a3, 28
-                  auipc      gp, 303955
-599:              xor        t1, s0, a7
-                  c.slli     t1, 5
-                  c.lui      t4, 9
-                  c.addi     a7, 16
-                  sll        s3, s10, a4
-                  beq        t4, t5, 619f
-                  ori        s6, s2, 434
-                  slt        s10, t3, t0
-                  c.srai     a2, 13
-                  slt        s9, tp, a2
-                  auipc      t5, 867259
-                  c.slli     a1, 8
-                  c.lui      a6, 13
-                  c.slli     s5, 18
-                  slti       s7, s9, -321
-                  c.addi     s4, -24
-                  c.slli     a1, 26
-                  auipc      t3, 731496
-                  lui        s0, 273146
-                  c.slli     t2, 14
-619:              c.sub      a5, a5
-                  slti       s2, s11, -402
-                  bge        s7, t1, 626f
-                  c.lui      s6, 14
-                  c.addi     s4, -22
-                  la         gp, data_page_10+2057 #start riscv_load_store_rand_instr_stream_2
-                  c.xor      s0, s0
-                  auipc      a4, 664178
-                  lb         zero, -791(gp)
-                  mulhu      s6, s4, a0
-                  c.addi     a2, 26
-                  lbu        s10, -1906(gp)
-                  lb         s4, -158(gp)
-                  c.srai     a5, 3
-                  sltu       a1, t6, s1
-                  c.lui      a2, 30
-                  c.addi     s9, -21
-                  sh         a7, -1985(gp)
-                  sb         a6, 1866(gp)
-                  c.addi     s7, 20
-                  lhu        a5, -963(gp)
-                  sb         s6, -478(gp)
-                  auipc      s0, 322921
-                  lbu        a3, -1450(gp)
-                  lb         a0, 346(gp)
-                  c.addi     s7, -18
-                  lbu        s7, 1940(gp)
-                  lbu        t2, 1470(gp)
-                  c.addi     a3, 13
-                  divu       t3, a1, a5
-                  sh         s9, -1215(gp)
-                  lb         s1, 520(gp)
-                  lb         a4, -24(gp)
-                  lb         t5, -978(gp)
-                  lb         a4, -1380(gp)
-                  auipc      s10, 612374
-                  lb         s8, 956(gp)
-                  c.addi     t4, -10
-                  lbu        zero, 275(gp)
-                  c.addi     s1, 23
-                  sb         s4, 1887(gp)
-                  lbu        s6, 356(gp)
-                  slti       a6, a0, -201
-                  srl        t2, s8, t3
-                  c.srli     s0, 16
-                  c.lui      s0, 21
-                  c.lui      t6, 12
-                  lui        zero, 327133
-                  and        a3, t4, a1
-                  c.srai     a2, 17
-                  lbu        zero, -324(gp)
-                  c.addi     s2, -31
-                  lbu        s4, -1456(gp)
-                  c.lui      s2, 24
-                  sb         t3, 1500(gp)
-                  c.addi     s3, 6
-                  rem        a7, a1, s7
-                  lhu        s8, 991(gp)
-                  c.addi     s0, 15
-                  xori       zero, a7, 899
-                  lb         a0, -1370(gp)
-                  lbu        t5, -1922(gp)
-                  sb         a5, -1128(gp)
-                  lbu        s3, 1755(gp) #end riscv_load_store_rand_instr_stream_2
-                  auipc      a6, 1031447
-                  c.addi     s1, 10
-626:              lui        a7, 727377
-                  lui        a5, 831510
-                  c.xor      s0, a0
-                  c.addi     a0, 4
-                  c.srli     a0, 2
-                  c.mv       a2, s9
-                  lui        a0, 625227
-                  c.slli     s7, 20
-                  lui        s2, 1036134
-                  bgeu       t1, t4, 638f
-                  c.srai     a3, 29
-                  c.addi     t2, -22
-638:              auipc      a2, 1009391
-                  c.slli     s8, 12
-                  auipc      s6, 1016218
-                  auipc      t5, 863999
-                  c.slli     a5, 4
-                  c.lui      a0, 15
-                  c.srai     a1, 23
-                  c.or       a2, a4
-                  c.addi     t2, -11
-                  c.addi     a5, 23
-                  c.addi     gp, 21
-                  c.addi     a4, 14
-                  slti       a6, t3, 870
-                  c.addi     a7, -15
-                  c.lui      a6, 20
-                  sltiu      t2, t0, -448
-                  c.addi     t1, 9
-                  divu       s11, s11, a1
-                  bltu       t4, t1, 662f
-                  lui        t2, 43998
-                  c.slli     a7, 15
-                  c.srli     s0, 4
-                  c.slli     a1, 17
-                  auipc      t2, 607634
-662:              c.srai     a0, 15
-                  lui        s2, 678585
-                  c.srai     a2, 21
-                  c.slli     a0, 31
-                  lui        s10, 353964
-                  c.addi     a4, -20
-                  c.addi     a4, -18
-                  auipc      t3, 480520
-                  c.or       a1, a4
-                  c.addi     t6, 10
-                  c.addi     a3, 13
-                  c.slli     s6, 27
-                  c.slli     s11, 13
-                  c.srli     a2, 28
-                  nop
-                  c.andi     a2, 10
-                  c.addi     t1, 14
-                  c.addi     t3, -5
-                  mul        t2, s1, sp
-                  mulhsu     a7, s5, t0
-                  lui        zero, 93029
-                  lui        a3, 968242
-                  auipc      s9, 943104
-                  auipc      t2, 226656
-                  lui        s3, 1040578
-                  lui        t2, 677108
-                  lui        a5, 207614
-                  c.slli     a3, 19
-                  c.srli     a2, 30
-                  xori       a2, s11, -323
-                  c.addi     a6, 23
-                  ori        t6, s11, -22
-                  c.addi     a6, -29
-                  sra        s10, a2, a6
-                  c.srai     a0, 13
-                  auipc      t2, 700284
-                  c.addi     a2, -10
-                  c.lui      s1, 12
-                  auipc      a5, 672877
-                  lui        t6, 49380
-                  c.addi     a0, -8
-                  c.srai     a0, 2
-                  c.mv       a7, s6
-                  mulh       a5, s7, a5
-                  lui        s10, 184018
-                  c.addi     s3, -9
-                  lui        t2, 953562
-                  c.addi     t1, -22
-                  c.lui      gp, 15
-                  rem        s7, a7, a4
-                  auipc      s6, 216542
-                  lui        s5, 72950
-                  sltu       s3, s3, sp
-                  lui        s3, 43960
-                  auipc      zero, 649148
-                  c.lui      s6, 9
-                  c.addi     s5, -30
-                  lui        zero, 179333
-                  fence
-                  auipc      t5, 660296
-                  bne        zero, a5, 726f
-                  c.addi     a5, 22
-                  c.addi     a6, -1
-                  lui        s3, 615047
-726:              c.srai     a3, 16
-                  lui        t6, 603049
-                  c.addi     t4, -21
-                  c.addi     s1, 25
-                  c.srli     a4, 8
-                  c.addi     a4, -3
-                  c.slli     s2, 20
-                  c.addi     t5, -23
-                  divu       s8, s7, s3
-                  auipc      s4, 129635
-                  auipc      t1, 796248
-                  sra        t2, s7, a6
-                  fence.i
-                  c.srli     a4, 9
-                  c.lui      s0, 10
-                  c.beqz     a0, 742f
-742:              lui        s9, 733657
-                  auipc      s9, 116464
-                  lui        s8, 857005
-                  c.slli     s4, 7
-                  c.srai     a4, 24
-                  lw         ra, 4(sp)
-                  c.addi     t2, -10
-                  lw         t0, 8(sp)
-                  auipc      t5, 887765
-                  addi       sp, sp, 8
-                  c.slli     s11, 6
-                  lui        a6, 52278
-                  c.addi     t2, 12
-                  c.srli     s0, 10
-1070:             ret
-sub_4:            blt        t0, s2, sub_4_stack_p
-                  lui        s9, 1003359
-                  c.addi     s2, -30
-sub_4_stack_p:    addi       sp, sp, -12
-                  sw         ra, 4(sp)
-                  c.addi     s0, -27
-                  sw         t0, 8(sp)
-                  c.andi     a4, 18
-                  mulhsu     t3, s0, s7
-                  lui        s6, 869071
-                  addi       t1, s10, -280
-                  c.slli     s3, 15
-                  c.addi     a4, -1
-                  or         zero, s2, a3
-                  c.addi     s0, -2
-                  lui        t4, 786330
-                  mul        a1, t3, a4
-                  bne        s3, s4, 22f
-                  lui        a2, 141835
-                  c.slli     a0, 8
-                  c.addi     gp, 7
-                  sra        s8, t4, s5
-                  c.addi     t3, 22
-                  c.addi     s5, -12
-                  xori       s8, s0, -170
-                  c.addi     a5, -20
-                  c.addi     a4, 24
-                  fence.i
-                  c.addi     t4, 5
-                  c.srai     a2, 19
-22:               c.addi     t5, -5
-                  bge        t3, zero, 37f
-                  ori        zero, t1, -500
-                  c.addi     t4, -11
-                  c.addi     t4, -14
-                  mulhu      t4, s1, zero
-                  c.srai     a2, 25
-                  c.addi     s7, 30
-                  auipc      a2, 862859
-                  c.addi     a3, 12
-                  and        a5, s8, gp
-                  c.addi     a2, 14
-                  c.addi     s5, 8
-                  c.addi     s5, -25
-                  lui        t3, 909957
-37:               bge        s9, s0, 51f
-                  c.addi     a2, -3
-                  c.addi     t2, 20
-                  c.addi     t5, 5
-                  c.addi     a4, -7
-                  c.addi     a3, -3
-                  auipc      a3, 633683
-                  c.addi     a5, 13
-                  lui        s10, 739741
-                  c.addi     a1, -26
-                  and        s11, a4, a7
-                  srl        a7, s7, ra
-                  c.slli     s4, 9
-                  c.addi     t3, -15
-51:               lui        s6, 335992
-                  lui        a7, 283967
-                  lui        s1, 383868
-                  c.srai     a4, 7
-                  c.slli     s1, 25
-                  c.addi     t2, -30
-                  c.srai     a4, 3
-                  div        s1, sp, a5
-                  c.addi     t3, -16
-                  auipc      t2, 332004
-                  c.srli     a2, 6
-                  divu       a5, s6, s4
-                  c.srai     a5, 26
-                  auipc      t2, 392645
-                  ori        t3, a5, 387
-                  lui        zero, 583380
-                  c.addi     s11, 27
-                  divu       a7, a4, s4
-                  auipc      s1, 510298
-                  c.addi     s5, -27
-                  c.addi     a2, 30
-                  lui        a7, 130859
-                  lui        a2, 853013
-                  lui        gp, 689685
-                  c.lui      a3, 16
-                  c.slli     s6, 1
-                  c.addi     a3, -13
-                  c.lui      s4, 20
-                  srai       s4, s1, 27
-                  bgeu       t2, t2, 95f
-                  c.addi     s4, -5
-                  auipc      s11, 474474
-                  c.lui      s8, 12
-                  lui        a4, 567697
-                  divu       t3, ra, s4
-                  rem        gp, s6, s6
-                  c.andi     s1, -12
-                  blt        s8, s0, 103f
-                  c.lui      s6, 18
-                  lui        t5, 80039
-                  c.slli     s5, 19
-                  fence
-                  fence.i
-                  c.xor      a3, s0
-95:               c.lui      s11, 9
-                  c.srai     a1, 2
-                  auipc      zero, 967291
-                  lui        a4, 882532
-                  auipc      s5, 827466
-                  c.srai     a0, 10
-                  c.lui      a2, 27
-                  sltiu      s1, s10, 172
-103:              c.srli     a0, 2
-                  c.srli     a1, 9
-                  lui        s9, 119899
-                  c.srli     a4, 1
-                  xor        s1, s11, s0
-                  c.slli     t1, 29
-                  lui        a7, 715840
-                  c.srli     a5, 16
-                  auipc      a4, 952235
-                  auipc      a6, 433720
-                  lui        t5, 471272
-                  c.lui      s7, 29
-                  c.bnez     a2, 123f
-                  c.addi     s11, -26
-                  c.addi     a3, -23
-                  c.addi     a0, -2
-                  andi       t1, tp, -261
-                  divu       s3, a5, a5
-                  fence
-                  c.addi     s2, -31
-123:              c.addi     s2, 8
-                  c.addi     s7, 8
-                  c.srli     s0, 19
-                  c.srai     a2, 9
-                  auipc      s5, 105190
-                  divu       s7, a5, s9
-                  lui        a2, 640192
-                  c.addi     a3, 17
-                  auipc      a7, 593147
-                  lui        t4, 675580
-                  lui        s6, 897409
-                  c.srai     a3, 23
-                  c.addi     a6, 23
-                  lui        t4, 229395
-                  c.andi     a3, 9
-                  c.srai     a1, 26
-                  c.srli     a0, 13
-                  auipc      a7, 727283
-                  c.srai     s1, 2
-                  mulhu      s1, s6, ra
-                  c.lui      s2, 10
-                  c.addi     t1, 6
-                  c.addi     t6, -17
-                  lui        a6, 161595
-                  fence
-                  c.addi     t2, -7
-                  lui        t2, 315581
-                  c.slli     s11, 5
-                  auipc      zero, 737983
-                  lui        t1, 417967
-                  c.addi     a6, -13
-                  c.lui      a0, 31
-                  auipc      s7, 219164
-                  c.addi     a5, -30
-                  c.slli     s5, 17
-                  nop
-                  c.addi     a0, 13
-                  c.addi     s7, 30
-                  divu       a5, a5, s5
-                  nop
-                  c.addi     s8, -12
-                  c.addi     s6, 13
-                  auipc      s2, 365609
-                  c.addi     s2, 6
-                  c.addi     a0, -26
-                  lui        s11, 704705
-                  c.addi     s2, 10
-                  lui        t1, 628287
-                  sra        a6, t1, s5
-                  srl        s8, s2, s6
-                  srl        a7, t2, t1
-                  auipc      s1, 741630
-                  slti       s9, s7, -360
-                  c.addi     a7, 3
-                  mul        a5, s7, s8
-                  remu       s10, s4, tp
-                  c.lui      a7, 7
-                  c.srai     s0, 22
-                  c.addi     a4, 4
-                  c.addi     t4, 24
-                  c.addi     a7, 23
-                  c.slli     s1, 29
-                  c.addi     t4, -5
-                  c.addi     s7, -23
-                  c.addi     t1, -29
-                  auipc      s8, 459137
-                  lui        s11, 263425
-                  c.srai     a2, 31
-                  c.addi     s11, -7
-                  lui        t3, 502942
-                  lui        s2, 962844
-                  beq        a5, t1, 195f
-195:              c.mv       a1, s11
-                  ori        s11, s11, -622
-                  c.lui      a6, 17
-                  lui        a5, 475373
-                  nop
-                  c.slli     t1, 30
-                  sltu       t4, a6, s0
-                  sub        s3, s10, zero
-                  c.addi     s3, 19
-                  c.slli     s6, 21
-                  c.add      a4, a1
-                  lui        s11, 858139
-                  lui        a5, 75817
-                  c.srli     s0, 14
-                  mul        a0, t1, a7
-                  remu       zero, a2, a0
-                  c.srli     a2, 22
-                  bge        s9, s11, 222f
-                  c.addi     a1, -17
-                  sltiu      s1, t6, 62
-                  c.srli     a4, 29
-                  c.addi     s0, 20
-                  c.srai     a4, 31
-                  nop
-                  c.and      a5, a0
-                  c.srai     a3, 2
-                  c.addi     s9, 7
-222:              auipc      a5, 446636
-                  c.srai     s1, 25
-                  c.srai     a1, 24
-                  c.addi     gp, -24
-                  sub        s5, t0, s4
-                  lui        s7, 418689
-                  c.addi     t1, -32
-                  srai       gp, s11, 6
-                  c.addi     s6, -14
-                  bgeu       gp, a6, 232f
-232:              lui        s1, 382145
-                  c.addi     s10, 7
-                  c.lui      s4, 31
-                  sra        t4, a1, tp
-                  c.or       a1, a3
-                  auipc      t4, 363029
-                  c.srai     a1, 23
-                  c.addi     s4, -9
-                  c.addi     a3, 3
-                  c.lui      s9, 15
-                  beq        t1, t0, 250f
-                  add        t6, t2, a6
-                  beq        a1, t4, 262f
-                  c.srli     s1, 6
-                  c.lui      gp, 28
-                  la         t3, data_page_18+1722 #start riscv_load_store_rand_instr_stream_5
-                  c.add      a1, a0
-                  sb         sp, 119(t3)
-                  c.srai     a4, 21
-                  c.slli     gp, 13
-                  lui        t2, 291962
-                  sb         s5, -947(t3)
-                  c.addi     s5, 14
-                  lhu        t5, 1740(t3)
-                  sh         t3, 616(t3)
-                  lui        a5, 489599
-                  lb         s10, -1043(t3)
-                  c.addi     a0, 29
-                  lbu        s0, -599(t3)
-                  lbu        t6, -247(t3)
-                  lw         s4, 674(t3)
-                  c.addi     a4, -4
-                  lhu        s7, 1662(t3)
-                  lb         s8, 1891(t3)
-                  auipc      t5, 91677
-                  lhu        a0, -1642(t3)
-                  lb         gp, 927(t3)
-                  auipc      a6, 746671
-                  sltiu      s11, s3, -951
-                  lbu        s9, -387(t3)
-                  lb         s3, -1285(t3)
-                  mulhu      t5, s5, s5
-                  c.slli     a0, 7
-                  c.xor      s1, s1
-                  lb         t5, -407(t3)
-                  c.srai     s0, 23
-                  lui        a7, 885291
-                  mul        a7, t5, s6
-                  lbu        t5, -821(t3)
-                  c.lui      a5, 20
-                  lui        t4, 151297
-                  c.srai     a4, 13
-                  and        s9, sp, t4
-                  c.srli     a0, 7
-                  c.lui      a2, 16
-                  c.slli     a3, 10
-                  c.addi     t6, 29
-                  andi       s10, s4, -41
-                  sh         s1, -1076(t3)
-                  c.lui      s2, 12
-                  lui        t2, 955927
-                  lui        s3, 294016
-                  lbu        s11, 740(t3)
-                  lb         s0, 179(t3)
-                  lb         s0, 1966(t3) #end riscv_load_store_rand_instr_stream_5
-                  sltiu      a4, t5, -39
-                  c.srai     a2, 16
-                  c.addi     s11, -1
-250:              lui        t2, 432808
-                  beq        s6, s3, 267f
-                  c.slli     a3, 19
-                  auipc      gp, 113656
-                  lui        s1, 130430
-                  c.srai     a3, 19
-                  c.addi     gp, 20
-                  c.addi     t1, -17
-                  c.srai     a1, 3
-                  ori        t4, s9, 837
-                  c.srli     a1, 15
-                  c.addi     s6, -27
-262:              lui        a6, 519567
-                  c.slli     s6, 3
-                  xori       s8, s3, -87
-                  c.srai     s0, 18
-                  c.lui      s9, 29
-267:              lui        gp, 724988
-                  c.srli     a2, 31
-                  andi       a0, s9, -298
-                  mulhsu     s6, a7, a4
-                  auipc      a6, 1005681
-                  c.addi     s8, 5
-                  c.addi     s6, -16
-                  c.srli     a0, 13
-                  lui        s2, 463491
-                  lui        t1, 1034333
-                  auipc      s2, 362489
-                  c.srli     a0, 29
-                  auipc      gp, 754792
-                  sub        t6, t2, a3
-                  auipc      t3, 701162
-                  c.and      s1, a2
-                  xor        s7, s3, s3
-                  c.srai     a0, 28
-                  c.xor      a1, a5
-                  c.addi     a3, 11
-                  c.sub      a4, a2
-                  auipc      zero, 803641
-                  auipc      a6, 461791
-                  c.addi     a7, 14
-                  c.addi     t1, 13
-                  c.addi     a1, -15
-                  c.lui      t2, 15
-                  c.lui      gp, 10
-                  mul        a0, t6, a2
-                  auipc      s10, 639140
-                  c.beqz     a0, 301f
-                  c.srai     a1, 7
-                  sltu       s9, s3, a6
-                  lui        s11, 67310
-301:              lui        s4, 817080
-                  lui        a1, 390754
-                  c.slli     s7, 25
-                  bgeu       tp, s8, 312f
-                  c.addi     s3, 14
-                  c.addi     t3, 22
-                  c.lui      t5, 9
-                  c.addi     s1, -17
-                  mulhu      s8, a0, s7
-                  c.slli     t4, 12
-                  c.srli     a4, 14
-312:              sltu       a6, a5, s4
-                  c.addi     s1, 16
-                  auipc      t6, 78105
-                  c.addi     s0, 16
-                  c.addi     t1, -15
-                  fence
-                  lui        s10, 279619
-                  c.srai     a2, 13
-                  c.lui      s7, 21
-                  c.srli     s1, 18
-                  c.srli     s1, 16
-                  c.addi     a3, -5
-                  auipc      s7, 785024
-                  add        t2, s4, a2
-                  c.addi     s3, -5
-                  c.addi     s0, -3
-                  srl        t4, s9, a5
-                  c.addi     a0, -22
-                  c.addi     a7, 25
-                  srl        s4, sp, a0
-                  c.addi     a4, -26
-                  add        a0, s6, t6
-                  fence
-                  lui        a5, 545023
-                  lui        a6, 228307
-                  lui        s4, 196452
-                  addi       s2, s2, 290
-                  c.srai     a0, 11
-                  c.srai     s0, 7
-                  ori        s7, s0, -471
-                  mulh       s0, s11, t5
-                  auipc      t2, 21876
-                  lui        s9, 550489
-                  c.addi     s9, -24
-                  c.addi     s9, -6
-                  div        a2, t0, s10
-                  c.addi     s7, -23
-                  c.addi     t5, 12
-                  lui        zero, 372433
-                  bgeu       s1, tp, 365f
-                  c.li       a4, -17
-                  c.slli     a3, 5
-                  c.addi     s9, 27
-                  c.addi     s11, -21
-                  c.addi     a1, -11
-                  lui        s8, 469798
-                  fence
-                  c.lui      s3, 13
-                  lui        s4, 50781
-                  c.addi     t5, -23
-                  auipc      s5, 676469
-                  mulhu      a2, s4, t3
-                  c.beqz     a1, 380f
-365:              c.srai     s0, 18
-                  lui        s7, 296428
-                  nop
-                  auipc      s2, 88947
-                  auipc      t1, 850417
-                  lui        a6, 422862
-                  c.addi     t4, 30
-                  c.addi     t2, 16
-                  lui        s1, 917071
-                  c.addi     s11, 5
-                  c.lui      s0, 13
-                  c.srai     a4, 28
-                  auipc      t3, 429069
-                  c.slli     a7, 30
-                  la         a1, data_page_16+2685 #start riscv_load_store_rand_instr_stream_0
-                  slti       a0, s7, 862
-                  c.addi     s4, -30
-                  lb         a6, 313(a1)
-                  c.srli     a0, 5
-                  sh         s3, 993(a1)
-                  lhu        a5, 693(a1)
-                  fence
-                  lbu        s11, 1386(a1)
-                  lbu        t3, 1198(a1)
-                  rem        t1, s1, zero
-                  lb         s6, -358(a1)
-                  sb         t6, -854(a1)
-                  lhu        s6, -1081(a1)
-                  sw         s6, 167(a1)
-                  c.srai     a5, 26
-                  lb         s9, -1924(a1)
-                  lbu        s7, -370(a1)
-                  lbu        t4, -411(a1)
-                  c.slli     a0, 25
-                  lbu        t2, -626(a1)
-                  sb         t5, -310(a1)
-                  lbu        zero, -1392(a1)
-                  c.slli     a3, 9
-                  auipc      s11, 657471
-                  srai       t1, a0, 30
-                  divu       t3, s9, tp
-                  auipc      a3, 536494
-                  lui        zero, 481417
-                  c.slli     s8, 7
-                  c.addi     a7, 19
-                  sb         t6, 1052(a1)
-                  lh         s7, -1055(a1)
-                  c.addi     s0, 25
-                  lb         a2, 524(a1)
-                  c.srli     a2, 30
-                  lhu        t3, 93(a1) #end riscv_load_store_rand_instr_stream_0
-                  c.addi     a4, 5
-380:              bgeu       a1, t3, 389f
-                  c.addi     t5, -1
-                  c.lui      s7, 23
-                  add        a0, t0, a2
-                  c.addi     s7, -22
-                  bgeu       s3, ra, 397f
-                  c.srai     a3, 4
-                  lui        t3, 16927
-                  auipc      t6, 983309
-389:              c.or       a0, a0
-                  c.lui      t2, 10
-                  lui        t2, 647244
-                  c.slli     gp, 26
-                  c.slli     gp, 19
-                  mulh       t3, a3, t3
-                  or         t2, s9, t6
-                  xor        s7, s1, s2
-397:              c.lui      t4, 28
-                  c.slli     a1, 13
-                  remu       s8, a1, ra
-                  rem        a4, t4, s1
-                  c.andi     s0, 11
-                  auipc      s2, 229898
-                  ori        t2, s1, 711
-                  c.addi     a5, -6
-                  auipc      s8, 909537
-                  srli       s6, a6, 27
-                  c.lui      a0, 5
-                  auipc      t5, 340650
-                  c.addi     a5, -29
-                  lui        t3, 711905
-                  auipc      s0, 361591
-                  lui        t6, 484083
-                  lui        s8, 208235
-                  c.addi     s3, -1
-                  c.slli     a4, 11
-                  lui        a6, 120297
-                  c.addi     s11, -16
-                  lui        s10, 53779
-                  c.addi     s4, -10
-                  div        s4, s8, a2
-                  sub        t4, s8, s1
-                  c.lui      gp, 30
-                  lui        s0, 807970
-                  c.add      a4, s0
-                  c.srli     a2, 25
-                  lui        s3, 347440
-                  c.addi     s8, -3
-                  divu       s10, a7, a0
-                  c.addi     t1, -15
-                  c.addi     s2, -1
-                  c.addi     s8, -22
-                  c.addi     t3, 25
-                  xori       t1, ra, 444
-                  c.addi     s1, 18
-                  blt        a2, s1, 438f
-                  c.sub      a2, a0
-                  lui        s7, 401662
-438:              c.lui      a4, 26
-                  add        s0, t1, a3
-                  remu       t1, t2, a5
-                  c.bnez     a4, 449f
-                  c.srli     a4, 18
-                  sltiu      t5, t2, -521
-                  c.mv       t2, s10
-                  c.addi     s3, 9
-                  c.addi     s8, -7
-                  c.addi     s5, -11
-                  rem        s1, t3, gp
-449:              c.lui      a1, 6
-                  lui        t4, 7983
-                  srai       a4, sp, 0
-                  la         s3, data_page_14+1564 #start riscv_load_store_rand_instr_stream_7
-                  mulh       s4, a6, s5
-                  lb         a7, -315(s3)
-                  sw         sp, 1740(s3)
-                  c.add      a4, a0
-                  sh         s10, -1262(s3)
-                  lb         gp, 86(s3)
-                  c.addi     t3, 22
-                  lb         s4, 1301(s3)
-                  c.slli     a6, 25
-                  sw         s7, 232(s3)
-                  c.addi     a3, -27
-                  c.addi     s5, -5
-                  lbu        s8, -509(s3)
-                  c.addi     s8, 21
-                  c.or       s1, a3
-                  c.slli     a1, 31
-                  lh         s0, -830(s3)
-                  lb         s2, 745(s3)
-                  sh         a0, -550(s3)
-                  lhu        s5, 84(s3)
-                  c.addi     a6, 19
-                  c.srli     a4, 27
-                  lbu        a4, -871(s3)
-                  lui        a0, 124024
-                  lbu        a5, 1439(s3)
-                  sh         s5, -260(s3)
-                  sh         ra, -630(s3)
-                  lbu        a5, 1067(s3)
-                  c.addi     t5, -23
-                  lbu        s10, 1077(s3)
-                  lbu        zero, -892(s3)
-                  sb         s9, 201(s3)
-                  lb         s6, 826(s3)
-                  sb         zero, -882(s3)
-                  lui        gp, 1006709
-                  lbu        a4, 1581(s3)
-                  c.srai     a0, 11
-                  lhu        t5, 1878(s3) #end riscv_load_store_rand_instr_stream_7
-                  mulhsu     s8, t2, t0
-                  c.slli     t4, 29
-                  c.addi     s7, -13
-                  c.addi     a6, -11
-                  c.addi     s0, -9
-                  c.addi     a1, -25
-                  mulhsu     s10, a3, s0
-                  c.addi     s3, -27
-                  c.addi     a6, 10
-                  sra        s10, s2, a7
-                  c.addi     t5, -6
-                  lui        a6, 414392
-                  c.li       a6, 22
-                  c.addi     t3, 22
-                  c.addi     gp, -13
-                  auipc      s8, 398286
-                  c.slli     a4, 3
-                  auipc      s5, 479478
-                  c.slli     s2, 11
-                  auipc      t5, 575843
-                  c.slli     s5, 19
-                  auipc      a1, 1048098
-                  c.addi     s8, 21
-                  c.addi     a0, 6
-                  mul        s2, t2, s3
-                  c.addi     s5, 27
-                  c.srli     a0, 10
-                  srl        t6, t2, t2
-                  c.addi     s10, 1
-                  mulhsu     s1, s2, zero
-                  auipc      a0, 438777
-                  c.slli     gp, 7
-                  c.addi     t4, 29
-                  c.slli     s3, 3
-                  c.addi     a5, -29
-                  c.lui      s4, 27
-                  or         a5, s11, t5
-                  c.addi     s4, 16
-                  c.slli     s3, 27
-                  c.srli     a4, 6
-                  c.addi     s8, 26
-                  lui        t3, 292240
-                  c.addi     s1, -4
-                  auipc      s7, 196896
-                  c.beqz     a4, 505f
-                  mulhu      a7, a1, s8
-                  c.addi     s8, 22
-                  lui        s11, 83536
-                  rem        a1, a7, a0
-                  c.addi     a1, -11
-                  bne        s6, ra, 518f
-                  auipc      s8, 966196
-                  c.add      a0, a1
-505:              c.srai     s0, 12
-                  c.addi     s10, -24
-                  c.slli     s0, 19
-                  c.addi     s3, 14
-                  c.addi     s7, 31
-                  c.addi     a4, -16
-                  auipc      s10, 558750
-                  lui        s6, 821164
-                  c.addi     t5, -23
-                  c.lui      s8, 8
-                  c.addi     s10, 4
-                  c.addi     a4, -8
-                  bge        a2, s9, 530f
-518:              lui        a5, 783407
-                  c.slli     gp, 4
-                  c.addi     t4, 28
-                  xor        a7, a7, s6
-                  lui        zero, 1045934
-                  c.addi     t1, 27
-                  c.srai     a1, 19
-                  c.slli     t2, 21
-                  auipc      t2, 53966
-                  c.lui      s7, 23
-                  c.addi     t4, 27
-                  c.addi     t1, -28
-530:              c.addi     a2, 5
-                  c.addi     a7, 4
-                  c.addi     s4, 19
-                  lui        s0, 667356
-                  c.srli     a1, 26
-                  c.nop
-                  sra        a5, t3, t3
-                  andi       s1, sp, 321
-                  lui        t3, 744761
-                  divu       t1, a1, s8
-                  c.lui      gp, 4
-                  c.slli     t3, 17
-                  auipc      a0, 74014
-                  auipc      t2, 466230
-                  srl        t5, s4, s8
-                  divu       s7, zero, s3
-                  auipc      zero, 1041196
-                  c.addi     a7, -19
-                  auipc      s1, 186061
-                  c.srai     a2, 24
-                  lui        s7, 797397
-                  c.addi     s11, -5
-                  sll        s2, s1, s10
-                  c.lui      t6, 20
-                  c.srli     a3, 5
-                  lui        s7, 535720
-                  c.addi     a1, 27
-                  la         a5, data_page_6+2002 #start riscv_load_store_rand_instr_stream_3
-                  sb         t4, -1708(a5)
-                  lbu        a4, -739(a5)
-                  lui        t5, 595348
-                  lb         t3, -1363(a5)
-                  c.addi     t4, -17
-                  lbu        a4, 297(a5)
-                  fence
-                  lb         t6, -1853(a5)
-                  sb         s8, -289(a5)
-                  lb         t2, 249(a5)
-                  c.xor      s1, a2
-                  lb         s6, 646(a5)
-                  sb         a5, -1051(a5)
-                  lbu        a2, 1740(a5)
-                  c.addi     a2, 8
-                  lhu        a0, 1224(a5)
-                  c.addi     t4, 27
-                  lhu        zero, -1662(a5)
-                  lbu        t6, -776(a5)
-                  c.addi     s10, -31
-                  lui        a4, 390523
-                  c.li       s8, 4
-                  lbu        s7, 1976(a5)
-                  lbu        a4, 997(a5)
-                  lb         s3, -951(a5)
-                  addi       s1, gp, 392
-                  c.addi     a1, 21
-                  c.srai     a4, 7
-                  sh         s6, -1140(a5)
-                  c.slli     s0, 16
-                  c.lui      a2, 15
-                  c.addi     t6, -30
-                  c.addi     s11, 8
-                  auipc      s9, 355217
-                  lui        t5, 76055
-                  c.addi     s1, 7
-                  lbu        s9, -297(a5)
-                  lhu        a7, 824(a5)
-                  lb         s11, 1347(a5)
-                  mulhu      s8, ra, s11
-                  c.srli     s1, 28
-                  lui        a0, 980902
-                  lb         a0, 669(a5)
-                  lb         s6, 1296(a5)
-                  lb         s11, 13(a5)
-                  lb         t1, -1951(a5)
-                  lbu        a4, -1594(a5)
-                  c.srli     a4, 6
-                  c.addi     a0, -4
-                  ori        gp, a4, 583
-                  lw         a3, -34(a5) #end riscv_load_store_rand_instr_stream_3
-                  c.addi     a2, 3
-                  c.nop
-                  c.addi     s10, -8
-                  lui        a2, 437898
-                  c.srai     a4, 23
-                  auipc      a1, 539497
-                  c.addi     a4, 18
-                  c.srli     a3, 6
-                  slt        t6, a6, s8
-                  c.addi     t6, 19
-                  mulhsu     zero, t6, t1
-                  blt        zero, tp, 586f
-                  c.addi     t4, -6
-                  auipc      gp, 730875
-                  sltiu      s3, t6, 234
-                  c.sub      a2, a2
-                  auipc      s3, 925479
-                  c.addi     t4, 1
-                  c.srai     a2, 8
-                  c.srai     a5, 4
-                  c.addi     a5, -20
-                  c.srli     a1, 31
-                  c.addi     t5, -21
-                  c.srai     a1, 28
-                  divu       a2, ra, s0
-                  auipc      t3, 6114
-                  lui        s8, 445826
-                  auipc      s4, 404243
-                  c.slli     s8, 8
-586:              c.addi     s0, 17
-                  c.addi     s11, 20
-                  c.addi     a7, 15
-                  auipc      a7, 1023155
-                  c.addi     s11, -28
-                  auipc      a3, 311244
-                  c.lui      t5, 14
-                  or         s7, t5, s6
-                  c.srli     a0, 5
-                  auipc      t3, 780430
-                  lui        zero, 324160
-                  lui        a3, 506197
-                  c.li       a7, 4
-                  c.lui      s8, 31
-                  c.addi     s8, 2
-                  srli       a1, t6, 28
-                  slt        t2, a4, t5
-                  c.lui      a0, 6
-                  xori       s3, s2, -647
-                  c.addi     a2, 23
-                  addi       s1, s4, 327
-                  c.addi     a7, 28
-                  c.addi     s1, 18
-                  c.addi     a2, -32
-                  c.srai     s1, 21
-                  remu       t4, a0, a2
-                  auipc      a0, 567135
-                  slti       s6, a6, -171
-                  bne        zero, t2, 623f
-                  blt        a2, s7, 630f
-                  xori       a5, t2, -640
-                  c.addi     a5, 19
-                  auipc      s10, 859858
-                  lui        s10, 339418
-                  c.srli     a1, 1
-                  lui        s10, 328536
-                  auipc      a4, 164687
-623:              slli       s11, s2, 23
-                  auipc      a2, 512486
-                  lui        a0, 124200
-                  andi       t6, t1, -689
-                  c.srli     a1, 17
-                  c.srai     s0, 7
-                  srli       s6, sp, 30
-630:              c.srli     s0, 17
-                  auipc      zero, 429632
-                  c.addi     s11, 3
-                  c.slli     s1, 17
-                  c.addi     s11, -4
-                  sra        t6, s2, s7
-                  c.srli     a4, 17
-                  lui        t2, 453633
-                  auipc      s0, 777782
-                  c.addi     a0, -25
-                  lui        s7, 687681
-                  c.beqz     a5, 644f
-                  c.addi     s11, 11
-                  c.addi     s3, 4
-644:              c.addi     t2, -21
-                  c.lui      t3, 15
-                  nop
-                  lui        a3, 609362
-                  c.lui      s9, 1
-                  c.addi     a5, 5
-                  auipc      s4, 57490
-                  fence
-                  c.addi     s3, -32
-                  c.lui      t5, 24
-                  div        a1, t5, t5
-                  sll        t1, s3, a5
-                  c.srli     a1, 26
-                  and        t3, s9, a0
-                  mulh       a2, s7, s7
-                  lui        s8, 239631
-                  auipc      s7, 939366
-                  lui        s9, 566573
-                  c.srai     a4, 31
-                  lui        s8, 404577
-                  lui        t2, 47408
-                  c.srai     s1, 29
-                  c.slli     a0, 9
-                  c.srai     a0, 31
-                  auipc      a1, 280864
-                  c.addi     s3, 22
-                  c.addi     a5, 29
-                  c.srai     a1, 9
-                  auipc      a1, 446561
-                  c.addi     s3, -3
-                  lui        s2, 155917
-                  auipc      t2, 182609
-                  c.srli     a1, 10
-                  c.addi     a0, 25
-                  auipc      a6, 436276
-                  c.slli     s6, 4
-                  c.li       s4, -1
-                  c.lui      gp, 12
-                  bgeu       t0, s2, 687f
-                  div        a1, s7, tp
-                  c.slli     s10, 30
-                  c.addi     s6, -2
-                  lui        zero, 763213
-687:              lui        s9, 345463
-                  c.srai     s1, 24
-                  c.srai     s1, 27
-                  auipc      a2, 611758
-                  bltu       t1, s10, 708f
-                  auipc      s5, 27325
-                  auipc      a1, 711645
-                  c.addi     s7, -3
-                  c.addi     s0, -8
-                  auipc      s9, 863646
-                  auipc      a1, 832079
-                  c.xor      a0, s1
-                  lui        t4, 24000
-                  c.addi     s11, -25
-                  auipc      s10, 904574
-                  auipc      a7, 882469
-                  auipc      s1, 190078
-                  lui        a6, 562098
-                  or         a2, a5, a2
-                  c.addi     s7, -25
-                  c.addi     a1, -15
-708:              div        gp, s4, a6
-                  c.lui      s6, 6
-                  auipc      s9, 169208
-                  sra        a6, gp, a2
-                  c.srai     a3, 8
-                  c.addi     s2, -23
-                  lui        zero, 233691
-                  c.srai     a4, 26
-                  c.addi     s4, 20
-                  c.or       a3, a2
-                  mulhsu     t5, a6, a5
-                  auipc      s4, 480356
-                  c.srai     a4, 23
-                  mulh       a1, a4, gp
-                  rem        s8, s9, a1
-                  lui        s4, 969318
-                  addi       s4, s7, 455
-                  c.lui      a2, 2
-                  c.addi     s10, -31
-                  sltu       s2, s0, a1
-                  sltu       zero, a6, sp
-                  fence
-                  c.sub      a3, a3
-                  c.lui      s2, 5
-                  c.sub      a0, a3
-                  c.addi     s4, 18
-                  auipc      s9, 1027615
-                  c.srai     a2, 26
-                  auipc      a6, 430066
-                  add        a5, zero, s0
-                  auipc      s1, 159832
-                  c.addi     s6, -15
-                  c.addi     t2, -6
-                  div        s3, a3, a6
-                  lui        a7, 11733
-                  auipc      a5, 604819
-                  c.mv       a1, t1
-                  lui        t6, 731495
-                  c.lui      t2, 19
-                  c.addi     s3, 31
-                  lui        t2, 363118
-                  lui        s8, 679734
-                  la         s1, data_page_5+2106 #start riscv_load_store_rand_instr_stream_4
-                  lb         gp, -1461(s1)
-                  lb         t5, -1811(s1)
-                  c.srai     a5, 8
-                  c.addi     t6, 6
-                  c.srai     a5, 12
-                  lbu        t6, 1694(s1)
-                  c.slli     t5, 11
-                  c.addi     s7, -21
-                  lhu        t5, -526(s1)
-                  c.andi     a5, 14
-                  lui        s9, 602578
-                  c.addi     s7, 23
-                  mulhsu     a2, tp, a4
-                  c.addi     s2, 24
-                  sw         t4, 502(s1)
-                  c.srai     a1, 3
-                  c.lui      t4, 31
-                  c.srai     a3, 5
-                  lhu        t5, -320(s1)
-                  c.srai     a0, 13
-                  c.addi     t1, -18
-                  c.lui      a1, 4
-                  lb         s0, 553(s1)
-                  lh         a1, -1288(s1)
-                  xor        t3, s0, s1
-                  auipc      a4, 608697
-                  add        t3, t1, a1
-                  c.srai     a3, 29
-                  fence
-                  sb         s4, -751(s1)
-                  lui        s9, 704727
-                  c.addi     a2, 29
-                  c.srai     a1, 5
-                  c.addi     t5, -3
-                  lhu        s9, -1216(s1)
-                  c.addi     a1, -4
-                  c.srli     a3, 9
-                  sw         t4, 834(s1) #end riscv_load_store_rand_instr_stream_4
-                  sll        s0, s4, t2
-                  lui        t6, 946335
-                  divu       zero, sp, a4
-                  lui        s6, 461882
-                  auipc      a7, 492520
-                  c.addi     s2, -21
-                  c.nop
-                  c.srai     s1, 11
-                  c.srli     a3, 17
-                  c.addi     a6, 30
-                  lui        s7, 451674
-                  c.xor      a1, s1
-                  andi       zero, s1, 277
-                  lui        gp, 388248
-                  c.slli     s6, 14
-                  xor        t6, sp, tp
-                  c.addi     a5, 3
-                  c.addi     s0, 19
-                  c.srai     s1, 7
-                  blt        a5, a0, 773f
-                  c.addi     a3, 26
-                  c.mv       s4, t2
-                  auipc      s11, 79118
-773:              c.lui      s5, 15
-                  auipc      s11, 706152
-                  c.addi     gp, -27
-                  c.srai     a2, 23
-                  c.andi     a0, 4
-                  sra        a1, t3, s0
-                  auipc      a5, 613343
-                  auipc      a6, 8736
-                  la         s2, data_page_8+1603 #start riscv_load_store_rand_instr_stream_1
-                  lbu        s11, -656(s2)
-                  mulh       a6, a2, s3
-                  sb         a5, 1516(s2)
-                  c.slli     a5, 2
-                  addi       a4, t2, 245
-                  remu       s10, a3, a2
-                  andi       s8, s3, -146
-                  c.lui      a1, 20
-                  lw         a7, -1455(s2)
-                  lbu        t5, 724(s2)
-                  srli       s7, a7, 18
-                  sra        t1, t1, s1
-                  c.lui      gp, 9
-                  sltu       s8, a2, tp
-                  lb         s9, 2009(s2)
-                  lui        a6, 531050
-                  lb         t6, 1106(s2)
-                  auipc      a2, 628197
-                  sh         sp, -1541(s2)
-                  lbu        s5, 83(s2)
-                  c.addi     a6, -21
-                  lbu        s6, -832(s2)
-                  lhu        t4, -659(s2)
-                  lb         a6, 1825(s2)
-                  lb         s6, 928(s2)
-                  sltiu      s3, a7, 22
-                  lb         t2, -482(s2)
-                  lb         t1, 1576(s2)
-                  sll        s4, s6, a1
-                  sb         a3, -1510(s2)
-                  lui        s5, 338991
-                  c.srai     s0, 14
-                  mulhu      s10, a4, a7
-                  c.srli     a5, 21
-                  c.addi     s11, -9
-                  lb         s8, -448(s2)
-                  sb         s4, -698(s2)
-                  sb         t0, -1352(s2)
-                  lh         a2, 1333(s2)
-                  c.and      a5, a0
-                  sh         sp, -627(s2)
-                  lb         a7, 95(s2)
-                  sb         t3, 870(s2)
-                  c.addi     s10, 1
-                  auipc      s7, 686508
-                  xori       a1, s4, 732
-                  lui        a2, 969573
-                  lbu        t3, -1337(s2)
-                  lbu        a5, -1123(s2)
-                  sb         s9, 182(s2)
-                  fence
-                  c.addi     s1, -19
-                  lbu        t3, -756(s2)
-                  sll        a5, gp, s3
-                  lb         s5, 1026(s2)
-                  lui        t6, 789026
-                  lbu        s8, -22(s2) #end riscv_load_store_rand_instr_stream_1
-                  lui        t6, 656235
-                  c.addi     t4, 23
-                  c.addi     s8, 22
-                  srai       a4, a6, 14
-                  lui        s2, 733595
-                  nop
-                  bgeu       t3, s2, 793f
-                  auipc      s11, 482826
-                  c.slli     t1, 13
-                  lui        a7, 507436
-                  c.addi     s7, 23
-                  c.slli     t5, 14
-793:              c.lui      a7, 15
-                  la         s7, data_page_16+1532 #start riscv_load_store_rand_instr_stream_2
-                  auipc      s2, 295817
-                  sb         a7, -1262(s7)
-                  c.slli     a6, 27
-                  lui        gp, 956017
-                  mulhu      a4, t2, t2
-                  c.slli     s3, 27
-                  sb         a2, 815(s7)
-                  lw         a3, -848(s7)
-                  sub        t2, a5, tp
-                  sb         a4, -24(s7)
-                  lhu        s10, 130(s7)
-                  c.srai     s1, 20
-                  sb         s5, 909(s7)
-                  c.srli     a2, 30
-                  c.addi     s10, 29
-                  remu       s8, gp, a2
-                  c.slli     s11, 22
-                  addi       s6, t4, 364
-                  lbu        zero, 597(s7)
-                  rem        s9, s6, t4
-                  lh         s9, -680(s7)
-                  c.addi     a0, -17
-                  auipc      a6, 304819
-                  lui        s4, 863689
-                  lb         gp, -1093(s7)
-                  c.addi     a0, 20
-                  c.addi     a1, 2
-                  c.srli     s1, 13
-                  lui        s11, 420094
-                  lui        t5, 768157
-                  c.lui      a2, 24
-                  c.srli     s0, 30
-                  lh         a5, 522(s7)
-                  add        a0, a6, s7
-                  c.addi     a1, -32
-                  c.addi     t2, 10
-                  c.slli     s8, 9
-                  mulhu      s1, s9, t0
-                  auipc      s11, 622143
-                  lui        s9, 593778
-                  lh         a5, 1010(s7) #end riscv_load_store_rand_instr_stream_2
-                  c.srli     a2, 6
-                  c.lui      s7, 13
-                  c.addi     s0, -6
-                  c.lui      s7, 8
-                  c.addi     t4, 15
-                  c.addi     a6, -1
-                  c.addi     s9, 28
-                  c.addi     t4, -30
-                  auipc      s6, 321189
-                  c.li       t3, 9
-                  lui        s10, 416364
-                  c.addi     a7, -22
-                  c.lui      s3, 4
-                  lui        s0, 1002896
-                  auipc      t5, 707159
-                  c.addi     t5, -2
-                  c.slli     gp, 25
-                  lui        s0, 363118
-                  c.addi     s7, 23
-                  lui        s0, 497990
-                  c.add      s1, a5
-                  c.addi     s9, 2
-                  c.addi     a2, -32
-                  c.addi     s1, 16
-                  sltiu      s9, t6, 175
-                  lui        s3, 941123
-                  c.addi     s11, -15
-                  c.srli     a2, 14
-                  c.slli     a7, 5
-                  c.addi     t4, 4
-                  lui        s9, 296275
-                  div        t2, ra, s7
-                  c.srli     a4, 28
-                  lui        a2, 154571
-                  c.addi     a5, -12
-                  c.addi     t6, 9
-                  slti       s5, t2, 488
-                  bgeu       s1, s4, 835f
-                  bgeu       sp, t0, 833f
-833:              slti       s3, s3, -546
-                  c.addi     s11, 12
-835:              c.addi     t4, -29
-                  c.slli     a0, 15
-                  c.lui      a7, 15
-                  slt        s8, s3, a7
-                  la         s4, data_page_8+1914 #start riscv_load_store_rand_instr_stream_6
-                  lh         s2, 1848(s4)
-                  lh         gp, -106(s4)
-                  lbu        t5, -1651(s4)
-                  lb         t6, 125(s4)
-                  lbu        a0, 589(s4)
-                  c.addi     s6, 1
-                  c.addi     s1, -27
-                  lui        s5, 408305
-                  lh         s10, 942(s4)
-                  auipc      a3, 76968
-                  auipc      t4, 41440
-                  sb         s1, 1666(s4)
-                  lw         zero, 1682(s4)
-                  sh         t2, 1008(s4)
-                  c.srli     s0, 12
-                  sra        s6, ra, t0
-                  c.addi     a3, 15
-                  c.srai     a2, 1
-                  lbu        s5, -1349(s4)
-                  sb         s7, 987(s4)
-                  c.slli     a4, 14
-                  lbu        t1, 381(s4)
-                  c.addi     t5, -29
-                  c.slli     t3, 7
-                  lb         s3, -1385(s4)
-                  c.addi     a3, 29
-                  auipc      s2, 241224
-                  lui        t3, 697796
-                  sb         s6, -1129(s4)
-                  sb         t5, 1153(s4)
-                  c.add      s1, s0
-                  auipc      s11, 497814
-                  lhu        s9, 284(s4)
-                  c.srli     a4, 23
-                  c.srai     a3, 15
-                  sltiu      s9, t0, -34
-                  lbu        s2, -1487(s4)
-                  mulh       a4, s5, t1
-                  lw         t6, -138(s4)
-                  lh         a0, 1224(s4)
-                  sb         ra, 790(s4)
-                  lw         s0, -1442(s4)
-                  sb         a1, 1539(s4)
-                  sh         a4, -1468(s4) #end riscv_load_store_rand_instr_stream_6
-                  lui        s10, 93247
-                  c.addi     s8, 11
-                  nop
-                  lw         ra, 4(sp)
-                  c.srli     a5, 16
-                  xor        s9, ra, s7
-                  lw         t0, 8(sp)
-                  srli       t5, ra, 28
-                  lui        s7, 489441
-                  c.lui      a7, 12
-                  lui        gp, 977950
-                  addi       sp, sp, 12
-                  lui        s3, 398188
-                  c.or       a5, a4
-1223:             ret
-sub_2:            c.addi     s8, 24
-                  addi       sp, sp, -52
-                  sw         ra, 4(sp)
-                  c.srai     s0, 1
-                  sw         t0, 8(sp)
-                  and        t2, sp, a5
-                  bne        s4, s6, 13f
-                  c.addi     a0, 5
-                  auipc      s2, 294055
-                  c.slli     s8, 10
-                  auipc      a5, 919610
-                  div        s2, sp, a7
-                  auipc      a0, 61255
-                  addi       zero, zero, 837
-                  lui        s11, 735493
-                  fence.i
-                  c.srli     a0, 17
-                  c.addi     t6, -5
-                  lui        t1, 369023
-13:               mulhsu     t5, ra, t1
-                  auipc      t1, 1021732
-                  lui        s7, 101891
-                  c.srli     a2, 11
-                  c.addi     t6, -26
-                  c.srli     a1, 24
-                  c.srli     a0, 6
-                  auipc      a3, 618039
-                  sub        t2, t4, s5
-                  c.slli     s4, 6
-                  lui        t6, 644219
-                  fence.i
-                  auipc      t3, 239341
-                  bge        t3, a7, 40f
-                  c.addi     s11, 1
-                  auipc      s4, 532772
-                  auipc      a4, 983874
-                  c.srai     a4, 12
-                  add        a2, t5, a1
-                  auipc      t1, 140184
-                  c.addi     a7, -12
-                  c.slli     a6, 3
-                  c.addi     a1, 29
-                  lui        a3, 888512
-                  c.slli     t1, 1
-                  sll        zero, t4, s0
-                  auipc      s5, 560976
-40:               auipc      s5, 425284
-                  c.addi     t4, -1
-                  slti       s5, a4, 90
-                  auipc      t1, 185586
-                  blt        a5, a1, 57f
-                  bge        s6, s3, 59f
-                  c.srli     a0, 28
-                  c.addi     s7, -32
-                  c.srli     a5, 24
-                  c.addi     a5, -2
-                  addi       t2, t4, 161
-                  lui        s4, 565411
-                  c.andi     a2, 24
-                  nop
-                  sltiu      s4, a3, -243
-                  bne        t5, s11, j_sub_2_sub_3_4 #branch to jump instr
-                  c.addi     s10, 17
-                  c.lui      s3, 22
-                  c.srli     s1, 3
-                  c.addi     a1, 27
-j_sub_2_sub_3_4:  jal        ra, sub_3
-                  c.addi     t3, 15
-                  c.srli     s0, 3
-                  c.addi     t4, -14
-                  lui        gp, 695883
-                  c.addi     t5, -21
-57:               c.lui      s9, 30
-                  c.addi     a1, 11
-59:               c.beqz     a4, 75f
-                  c.addi     t5, 25
-                  c.lui      s2, 5
-                  c.lui      a2, 15
-                  lui        zero, 580532
-                  c.srli     s1, 25
-                  c.lui      t3, 19
-                  mulhu      s6, s10, a7
-                  lui        a4, 68259
-                  c.addi     t5, 13
-                  lui        a1, 888147
-                  c.slli     a3, 13
-                  andi       t4, s1, 804
-                  sll        s1, t4, a3
-                  c.addi     s11, -20
-                  auipc      s4, 86342
-75:               lui        a4, 588383
-                  c.mv       a1, t4
-                  c.srai     a1, 15
-                  bge        s0, s4, 85f
-                  c.addi     s1, -11
-                  lui        a3, 373043
-                  c.addi     a5, -27
-                  c.srai     a3, 11
-                  lui        s10, 716826
-                  c.addi     s7, 2
-85:               auipc      t5, 75055
-                  div        t4, s1, t4
-                  lw         ra, 4(sp)
-                  slti       t2, t2, -375
-                  lw         t0, 8(sp)
-                  c.and      a4, a5
-                  c.addi     s6, -18
-                  c.slli     s9, 8
-                  addi       sp, sp, 52
-                  c.srli     a4, 10
-                  c.lui      a2, 24
-                  c.addi     gp, 27
-                  lui        t2, 427688
-113:              ret
-sub_5:            c.addi     s10, 17
-                  ori        t6, s7, 668
-                  addi       sp, sp, -24
-                  c.addi     t3, -24
-                  sw         ra, 4(sp)
-                  auipc      s4, 609837
-                  lui        t2, 198958
-                  c.addi     s9, 26
-                  c.addi     a6, 11
-                  sw         t0, 8(sp)
-                  c.slli     s8, 29
-                  c.addi     s3, 29
-                  c.addi     s8, 18
-                  c.addi     t2, -21
-                  c.slli     t5, 2
-                  c.addi     a4, 12
-                  c.addi     gp, 24
-                  c.slli     a2, 15
-                  c.addi     s6, -24
-                  rem        a0, t0, s7
-                  c.srai     s0, 11
-                  c.srli     a3, 24
-                  c.addi     s2, 7
-                  lui        a0, 652615
-                  c.srli     a1, 27
-                  c.srli     a5, 6
-                  c.srli     a5, 2
-                  remu       t4, sp, t6
-                  lui        t3, 223018
-                  fence.i
-                  auipc      a2, 1000328
-                  bgeu       s2, zero, 21f
-21:               lui        s7, 474112
-                  c.add      a1, a2
-                  mul        t4, a5, t1
-                  bge        a5, t4, 25f
-25:               c.slli     s8, 18
-                  bge        t5, s5, 46f
-                  auipc      zero, 828307
-                  c.slli     s3, 30
-                  c.addi     s9, -28
-                  auipc      a4, 941833
-                  c.srai     a5, 26
-                  lui        t6, 906393
-                  c.slli     s9, 12
-                  c.lui      s10, 25
-                  addi       a6, ra, 355
-                  c.srai     a3, 6
-                  c.srai     a2, 14
-                  c.slli     a4, 1
-                  auipc      t2, 984037
-                  c.slli     t2, 11
-                  lui        s10, 312443
-                  c.addi     a7, 24
-                  c.addi     t5, 5
-                  c.srai     a5, 26
-                  c.addi     gp, 18
-46:               lui        s9, 793662
-                  ori        gp, t4, -949
-                  lui        s5, 742865
-                  c.lui      gp, 12
-                  auipc      s0, 92681
-                  c.addi     t3, 24
-                  la         s3, data_page_16+2405 #start riscv_load_store_rand_instr_stream_6
-                  lbu        s9, -507(s3)
-                  lb         zero, -543(s3)
-                  sw         s11, 79(s3)
-                  remu       a3, t1, tp
-                  c.addi     s4, -6
-                  c.addi     a1, -24
-                  and        t5, a3, zero
-                  c.lui      a4, 9
-                  lh         s5, -1805(s3)
-                  lb         s7, -500(s3)
-                  c.addi     a1, -29
-                  lbu        a6, 844(s3)
-                  lb         t5, 662(s3)
-                  c.srli     a0, 22
-                  auipc      t4, 403778
-                  c.addi     t4, 31
-                  slti       s6, a4, 145
-                  c.addi     s8, -29
-                  c.lui      s9, 15
-                  c.lui      a6, 23
-                  c.slli     a7, 28
-                  auipc      s5, 1007528
-                  lbu        s0, -1035(s3)
-                  mulh       a0, ra, t6
-                  c.srai     a0, 14
-                  lbu        s10, -1378(s3)
-                  lui        zero, 657450
-                  c.srli     a1, 1
-                  c.srli     a1, 11
-                  lh         s1, -505(s3)
-                  c.addi     s11, -8
-                  sb         gp, 1083(s3)
-                  sb         gp, 1188(s3)
-                  lbu        s4, -1186(s3)
-                  sb         s1, -1512(s3)
-                  sb         s11, 1416(s3)
-                  sh         t0, -719(s3)
-                  sb         s10, -586(s3)
-                  sb         t4, -798(s3)
-                  lb         a2, -1984(s3)
-                  c.slli     a1, 31
-                  lhu        t5, -1437(s3)
-                  sb         a3, 1474(s3)
-                  sb         a2, 722(s3)
-                  c.addi     a1, 13
-                  c.lui      t4, 26
-                  lbu        t6, 702(s3)
-                  c.srai     a0, 23
-                  sb         gp, 1395(s3) #end riscv_load_store_rand_instr_stream_6
-                  mulhu      s1, s7, a0
-                  c.srai     a3, 26
-                  c.lui      t3, 4
-                  la         s0, data_page_3+1965 #start riscv_load_store_rand_instr_stream_1
-                  lui        s1, 665129
-                  c.addi     s8, 12
-                  c.srli     a4, 3
-                  xori       t5, zero, -680
-                  c.lui      t2, 4
-                  lui        s7, 458478
-                  sb         a0, 131(s0)
-                  c.addi     s5, -17
-                  c.addi     s11, -16
-                  lui        s6, 877433
-                  c.srli     a3, 22
-                  sh         a4, 1133(s0)
-                  lb         t2, 599(s0)
-                  lh         zero, 1809(s0)
-                  sb         a0, 98(s0)
-                  lui        s6, 309908
-                  lh         s1, 1431(s0)
-                  c.srai     a5, 9
-                  lbu        gp, -1773(s0)
-                  auipc      s10, 355095
-                  c.srai     s1, 12
-                  auipc      t2, 274497
-                  sw         s11, -33(s0)
-                  lb         a6, 1187(s0)
-                  ori        s8, t5, 310
-                  lb         t2, 700(s0)
-                  lh         zero, -1135(s0)
-                  lui        a3, 915641
-                  c.slli     s7, 13
-                  c.srli     s1, 7
-                  c.srai     a1, 1
-                  rem        a1, ra, s2
-                  fence
-                  c.addi     a3, -18
-                  lbu        s6, -244(s0)
-                  c.srai     a4, 11
-                  or         t4, a6, gp
-                  sb         a4, 1239(s0)
-                  c.addi     s4, 8
-                  c.lui      a3, 3
-                  lb         a3, -1634(s0)
-                  lui        s1, 988625
-                  lh         gp, 437(s0) #end riscv_load_store_rand_instr_stream_1
-                  c.srli     a5, 5
-                  c.srai     a5, 9
-                  c.addi     s8, -13
-                  remu       a2, s11, tp
-                  lui        a2, 1014521
-                  c.addi     gp, -27
-                  andi       s7, t4, -53
-                  auipc      t4, 122026
-                  c.slli     s11, 18
-                  c.srai     a2, 31
-                  c.andi     s1, -27
-                  lui        s2, 646566
-                  c.srli     s1, 15
-                  c.addi     s11, 18
-                  c.srai     a2, 14
-                  c.addi     s10, -10
-                  c.addi     s2, -29
-                  c.addi     a6, 15
-                  c.lui      a4, 20
-                  auipc      gp, 559339
-                  sub        a3, s0, ra
-                  c.addi     a1, -23
-                  lui        t2, 180921
-                  c.bnez     a2, 83f
-                  c.addi     s5, -32
-                  c.addi     s6, 16
-                  lui        a5, 344534
-                  c.addi     s2, -13
-83:               c.srli     a4, 18
-                  addi       t6, s9, 587
-                  c.srai     s1, 6
-                  lui        s5, 431271
-                  auipc      a6, 470890
-                  auipc      s9, 735481
-                  lui        a2, 978383
-                  c.slli     s7, 9
-                  c.srli     a3, 6
-                  auipc      s1, 637575
-                  auipc      s4, 597479
-                  c.addi     s6, -24
-                  c.addi     s2, -25
-                  c.addi     s3, 2
-                  lui        zero, 150506
-                  c.lui      a4, 1
-                  lui        a3, 66510
-                  lui        s3, 403130
-                  c.lui      s8, 18
-                  auipc      s9, 654632
-                  auipc      t3, 551872
-                  c.addi     t3, -28
-                  lui        t3, 760732
-                  fence
-                  xori       s5, s1, -1007
-                  c.addi     t1, 25
-                  c.lui      s6, 13
-                  lui        s4, 1044207
-                  auipc      t5, 955243
-                  c.lui      s5, 30
-                  c.xor      s1, a2
-                  lui        a6, 79413
-                  c.addi     a5, -29
-                  c.srai     a2, 17
-                  c.addi     s8, -8
-                  andi       a2, a7, -371
-                  c.addi     s1, 29
-                  c.slli     s10, 8
-                  lui        s6, 940230
-                  c.slli     s10, 25
-                  auipc      zero, 540412
-                  slti       t6, s7, 227
-                  c.xor      a1, a5
-                  lui        s10, 525618
-                  lui        s5, 612274
-                  c.lui      t5, 2
-                  auipc      gp, 86686
-                  c.slli     t2, 13
-                  c.addi     s10, 31
-                  c.srai     a2, 23
-                  c.addi     s5, 2
-                  sltu       a6, a5, t0
-                  c.addi     gp, 20
-                  c.addi     a4, -10
-                  c.addi     s9, -26
-                  c.slli     s2, 15
-                  lui        s3, 286923
-                  auipc      s1, 85485
-                  c.srai     a0, 9
-                  auipc      s10, 18287
-                  c.addi     t6, -1
-                  c.addi     a2, -5
-                  auipc      s10, 338274
-                  c.slli     s10, 29
-                  c.slli     a1, 29
-                  c.nop
-                  c.srli     s1, 12
-                  lui        t1, 267640
-                  bne        s0, a1, 165f
-                  c.addi     t2, -23
-                  c.addi     a2, -7
-                  c.srli     s1, 22
-                  divu       t5, a3, t1
-                  auipc      t6, 62340
-                  rem        a1, s2, s7
-                  slli       a7, s4, 28
-                  div        a3, t6, a0
-                  c.addi     t4, -23
-                  c.slli     s10, 29
-                  auipc      s7, 347135
-                  c.addi     s6, 16
-                  c.lui      a5, 29
-165:              c.srli     a2, 2
-                  auipc      t4, 381701
-                  c.addi     t3, -20
-                  c.slli     t1, 9
-                  lui        t1, 516526
-                  remu       s2, s0, s5
-                  c.addi     a0, 22
-                  c.addi     s5, 12
-                  c.addi     t3, -7
-                  bge        gp, t2, 186f
-                  auipc      s7, 635521
-                  c.addi     t5, -22
-                  lui        gp, 76888
-                  c.lui      s11, 12
-                  c.srai     s0, 17
-                  c.xor      a0, s0
-                  c.or       s1, s1
-                  c.srli     a3, 26
-                  auipc      t3, 889782
-                  slti       s11, a4, -574
-                  c.lui      gp, 10
-186:              auipc      s9, 506578
-                  c.lui      s3, 12
-                  auipc      s6, 952240
-                  auipc      s3, 43033
-                  c.addi     t5, -29
-                  divu       t1, a0, s6
-                  c.addi     a5, 16
-                  c.nop
-                  c.addi     t5, 23
-                  c.addi     t1, -3
-                  auipc      a6, 724928
-                  c.lui      a1, 26
-                  srai       a5, t3, 11
-                  andi       gp, a4, -204
-                  auipc      s11, 154027
-                  c.addi     s7, -5
-                  c.lui      t6, 18
-                  c.addi     a5, -32
-                  auipc      s0, 896057
-                  c.lui      s9, 28
-                  c.srai     a3, 11
-                  c.lui      s7, 10
-                  c.addi     s7, -24
-                  c.nop
-                  nop
-                  c.or       s0, s0
-                  srli       a5, zero, 28
-                  c.srli     s1, 5
-                  c.addi     a6, 18
-                  lui        s5, 468288
-                  c.beqz     a0, 222f
-                  lui        s5, 310311
-                  fence
-                  xor        a5, t5, s1
-                  nop
-                  sll        s2, s0, s1
-222:              lui        s6, 805233
-                  c.addi     s0, 7
-                  sltu       s1, s0, a6
-                  c.slli     a4, 31
-                  bgeu       s7, a6, 240f
-                  add        a4, ra, s9
-                  lui        a6, 845203
-                  lui        t4, 643507
-                  c.srli     s1, 4
-                  or         zero, s6, s4
-                  c.srli     a3, 18
-                  auipc      t1, 644217
-                  c.addi     s3, 26
-                  lui        s7, 362071
-                  sra        s8, t6, t1
-                  c.addi     s10, 6
-                  c.lui      s1, 25
-                  c.srai     a1, 27
-240:              c.srai     a5, 30
-                  add        s0, gp, a0
-                  c.srai     a0, 19
-                  lui        s1, 377734
-                  auipc      t6, 278530
-                  c.addi     a0, 8
-                  c.addi     s10, -19
-                  ori        t5, s3, 903
-                  c.addi     t6, -26
-                  beq        s11, s11, 261f
-                  c.srai     s1, 28
-                  slt        t3, s8, s6
-                  lui        a2, 733610
-                  ori        t4, sp, 448
-                  sltiu      s3, s3, 854
-                  auipc      s11, 647843
-                  mul        gp, zero, s9
-                  c.lui      s7, 15
-                  auipc      s7, 485989
-                  lui        s6, 539843
-                  auipc      gp, 913414
-261:              lui        a0, 54403
-                  c.slli     s5, 12
-                  c.addi     s5, 14
-                  div        t5, t1, sp
-                  c.addi     a2, 10
-                  bgeu       s11, s0, 270f
-                  c.srli     a0, 12
-                  auipc      a5, 575684
-                  auipc      s0, 67259
-270:              auipc      t4, 696606
-                  mulhu      a1, s2, ra
-                  fence
-                  lui        a5, 47442
-                  c.addi     s8, 11
-                  auipc      gp, 1008031
-                  lui        s9, 1028111
-                  auipc      s9, 171505
-                  c.srli     a0, 10
-                  lui        s2, 639816
-                  srli       s3, a0, 14
-                  c.addi     s4, -24
-                  xor        s7, t0, s4
-                  auipc      s3, 796407
-                  auipc      s1, 912636
-                  c.addi     a4, -22
-                  c.lui      s10, 24
-                  lui        t4, 196519
-                  c.srai     s1, 1
-                  c.addi     s2, 30
-                  lui        a1, 314718
-                  c.addi     s1, 27
-                  c.slli     s6, 11
-                  fence.i
-                  c.addi     a4, -26
-                  addi       s7, a1, 136
-                  c.srai     a3, 28
-                  c.addi     s10, -28
-                  c.srai     a0, 2
-                  c.slli     t2, 24
-                  lui        t5, 29
-                  rem        t6, a1, a3
-                  c.slli     s9, 15
-                  c.addi     t1, -26
-                  c.addi     s7, 25
-                  lui        s7, 58169
-                  la         t6, data_page_6+2369 #start riscv_load_store_rand_instr_stream_4
-                  lbu        s5, 1662(t6)
-                  lb         t1, -376(t6)
-                  c.addi     t2, -14
-                  lui        a5, 53772
-                  c.addi     s5, 30
-                  c.addi     s11, -9
-                  div        a6, a5, t0
-                  lb         t5, -1231(t6)
-                  c.addi     s4, -28
-                  c.lui      s2, 23
-                  mulhu      s10, s1, t5
-                  lbu        s7, -130(t6)
-                  lb         a6, 294(t6)
-                  sb         s1, 662(t6)
-                  lbu        s6, -1188(t6)
-                  lbu        a3, 615(t6)
-                  sb         ra, -1732(t6)
-                  sb         s8, 1641(t6)
-                  c.slli     s5, 16
-                  lbu        s3, 1142(t6)
-                  c.slli     a2, 13
-                  lui        zero, 655601
-                  lb         s4, 1196(t6)
-                  c.srai     s0, 11
-                  lui        s10, 827865
-                  c.addi     t1, -8
-                  lhu        t3, 1253(t6)
-                  lb         s10, 130(t6)
-                  lb         a7, 1409(t6)
-                  sb         a2, -1898(t6)
-                  auipc      t1, 276922
-                  auipc      a4, 360448
-                  lhu        t1, 355(t6)
-                  c.addi     t4, -28
-                  auipc      s1, 316578
-                  auipc      gp, 379533
-                  lb         s8, 1614(t6)
-                  remu       s0, a5, gp
-                  c.srai     a2, 6
-                  lhu        s3, 949(t6)
-                  divu       t1, s3, t3
-                  lbu        a3, 851(t6)
-                  sb         a1, -758(t6)
-                  xori       a7, s6, -765
-                  lbu        a7, 293(t6) #end riscv_load_store_rand_instr_stream_4
-                  c.addi     s7, 6
-                  auipc      s10, 449337
-                  lui        t3, 952062
-                  c.srai     s1, 27
-                  lui        s10, 111213
-                  c.addi     a4, -18
-                  lui        s8, 602305
-                  c.srai     a3, 18
-                  c.srli     a4, 8
-                  lui        a1, 74113
-                  lui        t4, 420645
-                  mulhu      s11, a3, a5
-                  c.slli     t6, 12
-                  xori       t3, s8, 792
-                  c.srli     a0, 31
-                  c.addi     gp, 3
-                  c.srli     s1, 12
-                  c.addi     s3, 28
-                  c.addi     a6, 21
-                  c.srli     a2, 18
-                  c.addi     s9, 19
-                  lui        gp, 221168
-                  lui        t5, 383961
-                  c.li       t5, -26
-                  c.andi     a5, -6
-                  c.addi     a1, -30
-                  ori        s9, t2, -233
-                  c.srai     a3, 19
-                  c.srli     a1, 11
-                  auipc      s10, 874763
-                  c.srli     a2, 29
-                  c.addi     t2, 26
-                  c.addi     a4, -25
-                  c.srai     a1, 16
-                  c.srai     a2, 17
-                  c.addi     s8, 19
-                  auipc      t5, 508950
-                  bge        s3, tp, 346f
-                  c.addi     a3, -2
-                  c.addi     a4, 20
-346:              sltu       s7, tp, s2
-                  c.addi     s3, -11
-                  lui        t1, 788799
-                  c.nop
-                  rem        s6, s5, s4
-                  c.slli     a1, 9
-                  lui        s7, 630037
-                  c.srli     s1, 31
-                  c.addi     a5, -27
-                  c.addi     a0, 23
-                  c.andi     s0, -29
-                  lui        s2, 752773
-                  auipc      a5, 1036298
-                  srai       a7, a4, 25
-                  sltiu      a0, s2, -750
-                  auipc      t5, 790094
-                  auipc      a3, 516756
-                  c.slli     gp, 19
-                  auipc      s9, 415043
-                  c.addi     a7, -12
-                  c.lui      s5, 25
-                  c.slli     s1, 8
-                  xor        s7, s3, s9
-                  c.addi     s0, -8
-                  c.slli     a0, 9
-                  c.addi     s8, 8
-                  c.lui      a2, 22
-                  fence
-                  c.srli     a0, 7
-                  c.addi     t2, -31
-                  c.addi     t1, -8
-                  c.addi     s3, 16
-                  c.addi     s3, 23
-                  mulhu      a3, a6, s4
-                  xor        s0, gp, s9
-                  c.srai     a1, 27
-                  auipc      t2, 378304
-                  c.lui      s0, 14
-                  c.addi     a7, -12
-                  sltiu      zero, t4, 376
-                  c.srai     s0, 24
-                  c.addi     s2, -9
-                  c.slli     s4, 21
-                  lui        s1, 593795
-                  c.slli     s0, 25
-                  c.addi     gp, -16
-                  or         a1, t4, sp
-                  add        t3, t3, s0
-                  c.slli     t6, 31
-                  auipc      a1, 474962
-                  c.sub      a2, s1
-                  xori       s10, s10, 579
-                  c.lui      t1, 28
-                  c.addi     a3, 4
-                  c.li       s9, -30
-                  slti       t5, t2, 142
-                  c.srli     a1, 31
-                  mul        a3, a2, t4
-                  c.addi     s2, -5
-                  c.addi     s3, 11
-                  c.addi     s5, 30
-                  c.addi     a6, 27
-                  slt        s4, s0, a5
-                  c.slli     s10, 5
-                  c.addi     a3, -2
-                  c.addi     s1, 29
-                  c.addi     a4, 13
-                  c.addi     t6, 1
-                  c.addi     a3, 31
-                  slli       gp, a0, 17
-                  mul        s10, a0, s9
-                  mul        t4, t5, t0
-                  lui        t4, 382843
-                  srl        s6, s11, gp
-                  lui        s1, 373058
-                  lui        s0, 3016
-                  xor        a6, t3, zero
-                  auipc      s7, 63813
-                  c.lui      a1, 2
-                  c.slli     s3, 23
-                  c.srli     a0, 10
-                  auipc      s8, 113666
-                  fence.i
-                  auipc      s10, 599169
-                  c.addi     t4, 7
-                  c.lui      a3, 11
-                  lui        s9, 34008
-                  bne        a3, s10, 435f
-                  auipc      a7, 724833
-435:              c.addi     s4, -19
-                  c.addi     gp, 24
-                  divu       t1, a0, t1
-                  c.addi     a1, -13
-                  lui        a0, 453520
-                  c.addi     s3, 5
-                  andi       a7, s5, 609
-                  c.addi     t5, 26
-                  c.addi     a2, -4
-                  c.srai     a5, 14
-                  bne        s7, s4, 460f
-                  c.srli     a3, 31
-                  auipc      a3, 174758
-                  c.srli     a2, 24
-                  auipc      a5, 973182
-                  auipc      s0, 421984
-                  c.lui      a6, 16
-                  c.addi     a4, 28
-                  c.addi     s11, -6
-                  c.nop
-                  c.li       gp, 12
-                  c.srai     a1, 15
-                  c.xor      a1, a3
-                  c.addi     a5, -7
-                  c.nop
-460:              lui        a1, 300750
-                  la         a1, data_page_19+2481 #start riscv_load_store_rand_instr_stream_8
-                  auipc      a5, 191283
-                  lhu        t4, -1053(a1)
-                  sh         a1, -1565(a1)
-                  c.addi     t2, 21
-                  c.lui      a7, 9
-                  lbu        s0, -1360(a1)
-                  lb         s6, -899(a1)
-                  auipc      s8, 884444
-                  auipc      s6, 862922
-                  lb         s4, 108(a1)
-                  lui        s9, 198615
-                  sb         a5, -486(a1)
-                  lb         s3, -1160(a1)
-                  sltiu      a6, ra, 819
-                  sh         a0, -381(a1)
-                  c.addi     t5, 15
-                  lh         a0, 1407(a1)
-                  sb         a1, 238(a1)
-                  c.addi     s9, 10
-                  lb         s10, -788(a1)
-                  c.srli     a2, 27
-                  sw         tp, -597(a1)
-                  lh         t5, -1599(a1)
-                  sb         a6, -759(a1)
-                  sb         s0, -1675(a1)
-                  lb         s4, 1082(a1)
-                  lhu        t6, 1173(a1)
-                  c.lui      s11, 13
-                  lb         t3, -1379(a1)
-                  sb         t0, -1288(a1)
-                  mulhsu     t3, s4, t4
-                  c.addi     t5, 21
-                  lb         s5, 586(a1)
-                  c.srli     a3, 7
-                  lb         s9, 604(a1)
-                  lui        s1, 589244
-                  div        t2, s8, t0
-                  lb         t3, -1347(a1)
-                  c.addi     s9, -15
-                  lb         t4, 1288(a1)
-                  sb         s11, -1210(a1)
-                  c.addi     a3, 21
-                  and        s4, s1, a5
-                  c.lui      s9, 3
-                  lh         s8, 105(a1)
-                  sb         a6, -1293(a1)
-                  lbu        zero, -1232(a1)
-                  sh         ra, -899(a1)
-                  lhu        t5, -1495(a1)
-                  lb         s2, 832(a1) #end riscv_load_store_rand_instr_stream_8
-                  c.slli     s5, 1
-                  auipc      s5, 4404
-                  c.srli     a2, 5
-                  c.addi     s2, 1
-                  lui        s0, 667360
-                  c.sub      s1, a0
-                  c.addi     a1, 4
-                  mulh       s0, s5, a4
-                  c.srai     a3, 12
-                  divu       s1, a0, t6
-                  lui        s8, 252068
-                  lui        t4, 551972
-                  c.srli     s0, 5
-                  slti       a0, s9, 620
-                  lui        s7, 401881
-                  lui        a5, 695918
-                  sltu       s3, zero, a3
-                  c.addi     t3, 16
-                  c.srli     a3, 3
-                  lui        s0, 777712
-                  c.addi     s11, -17
-                  c.addi     a0, 13
-                  c.slli     s10, 5
-                  c.srai     a0, 21
-                  bge        s1, t6, 486f
-486:              lui        s4, 982320
-                  c.srli     s1, 12
-                  auipc      s5, 946946
-                  c.addi     t6, 29
-                  c.addi     s0, -32
-                  auipc      t2, 554370
-                  c.srli     a0, 20
-                  c.addi     s3, -21
-                  c.srli     a3, 5
-                  lui        a1, 347988
-                  c.addi     s1, 29
-                  c.srli     a3, 31
-                  auipc      s11, 888273
-                  sltu       s9, s8, tp
-                  auipc      a4, 821068
-                  c.srai     a2, 9
-                  c.srai     a0, 23
-                  srli       t1, a7, 25
-                  auipc      t5, 637433
-                  auipc      t6, 1047547
-                  c.slli     s1, 3
-                  auipc      a6, 775678
-                  lui        t2, 539869
-                  c.slli     s9, 22
-                  sltiu      s7, s0, -463
-                  c.lui      s6, 24
-                  auipc      s3, 370108
-                  c.srli     a4, 24
-                  c.srli     s0, 9
-                  c.addi     s6, -15
-                  auipc      t2, 124264
-                  andi       s1, tp, 411
-                  c.lui      t4, 20
-                  auipc      s2, 93541
-                  c.srai     a3, 7
-                  and        s11, t4, a3
-                  c.addi     a2, -13
-                  c.addi     s10, -5
-                  lui        a4, 813346
-                  c.addi     a5, 5
-                  c.addi     a2, -20
-                  c.addi     a6, -11
-                  c.srli     a5, 10
-                  c.srai     a2, 14
-                  lui        s3, 1033014
-                  c.srai     a0, 17
-                  c.xor      a1, a1
-                  c.addi     s1, -25
-                  c.lui      t2, 21
-                  c.lui      t5, 28
-                  c.addi     a1, -13
-                  c.nop
-                  lui        a3, 790744
-                  c.addi     t1, -5
-                  c.slli     a3, 17
-                  c.lui      s3, 26
-                  c.srli     s0, 25
-                  c.bnez     a2, 546f
-                  c.addi     t5, 15
-                  c.slli     a7, 23
-546:              and        s8, s2, a3
-                  beq        s10, tp, 553f
-                  auipc      a4, 931209
-                  c.slli     s10, 30
-                  c.bnez     a4, 568f
-                  c.addi     a1, 25
-                  lui        a6, 1017795
-553:              c.slli     a6, 4
-                  lui        gp, 348999
-                  c.addi     s11, 23
-                  fence
-                  c.slli     s5, 15
-                  c.srai     a4, 20
-                  c.lui      t3, 16
-                  c.slli     a4, 27
-                  divu       s9, gp, a2
-                  slli       a3, s9, 9
-                  c.addi     t4, -2
-                  c.lui      a7, 27
-                  c.addi     gp, 6
-                  la         s0, data_page_12+2214 #start riscv_load_store_rand_instr_stream_3
-                  c.lui      s9, 6
-                  lb         t1, -655(s0)
-                  c.slli     t6, 10
-                  c.srli     a0, 28
-                  sb         a7, -945(s0)
-                  divu       a2, zero, sp
-                  lhu        a4, -170(s0)
-                  lb         s4, 1644(s0)
-                  sw         s1, -302(s0)
-                  c.sub      a1, a5
-                  lh         a7, 1412(s0)
-                  auipc      s6, 571158
-                  lbu        t4, -1735(s0)
-                  c.srai     a2, 30
-                  c.addi     t5, -10
-                  c.addi     s8, 10
-                  c.addi     a3, -6
-                  auipc      s4, 846
-                  addi       t4, s0, 686
-                  lhu        a0, -80(s0)
-                  c.lui      a3, 20
-                  c.addi     t4, 10
-                  slti       a1, s3, -764
-                  c.lui      a0, 27
-                  sb         s8, -490(s0)
-                  lui        s8, 440069
-                  lb         s8, 169(s0)
-                  c.srli     s1, 15
-                  remu       t1, t2, a0
-                  lw         t2, -1694(s0)
-                  lui        a1, 308156
-                  c.srai     a2, 27
-                  sb         s0, -1268(s0)
-                  lh         a5, 1466(s0)
-                  c.lui      a7, 19
-                  c.addi     a4, 25
-                  lbu        s6, 116(s0)
-                  c.addi     s5, 19
-                  srl        a3, t1, s8
-                  lui        t5, 186129
-                  auipc      s10, 953418
-                  c.addi     s9, -4
-                  lbu        t5, 1338(s0)
-                  sb         s2, 867(s0)
-                  sltiu      zero, s9, 206
-                  sra        s9, t6, s9
-                  sb         zero, -81(s0)
-                  lbu        a3, 1344(s0) #end riscv_load_store_rand_instr_stream_3
-                  and        a4, zero, a4
-                  c.addi     s2, 29
-568:              c.addi     s7, 6
-                  c.addi     s2, -20
-                  c.srli     a2, 29
-                  xori       t6, t5, 242
-                  c.addi     a1, 25
-                  c.addi     s7, 21
-                  c.beqz     a1, 594f
-                  c.addi     t5, -11
-                  lui        t5, 301793
-                  srli       t3, t0, 17
-                  lui        t3, 817177
-                  c.slli     t2, 29
-                  divu       a5, s2, a1
-                  c.addi     t3, -30
-                  c.addi     s11, -18
-                  c.andi     a1, -12
-                  c.xor      s0, a4
-                  c.beqz     s0, 605f
-                  c.addi     s5, -14
-                  c.addi     t4, -9
-                  c.srai     a5, 30
-                  c.lui      a5, 31
-                  addi       a7, a0, 798
-                  c.addi     gp, 26
-                  c.addi     a2, 3
-                  c.addi     s2, 5
-594:              c.addi     t3, -32
-                  nop
-                  sra        zero, t4, s11
-                  lui        a3, 197611
-                  c.lui      a4, 22
-                  fence
-                  auipc      s11, 953963
-                  srli       a3, s3, 15
-                  c.slli     s1, 26
-                  auipc      s6, 369227
-                  beq        t1, s0, 623f
-605:              c.lui      s5, 9
-                  ori        a0, tp, 91
-                  c.addi     a5, 21
-                  lui        s7, 718281
-                  c.addi     s10, -22
-                  addi       s1, a5, -253
-                  auipc      s10, 636489
-                  lui        s10, 1030968
-                  lui        gp, 862362
-                  c.lui      a2, 12
-                  c.sub      a1, a5
-                  c.lui      t4, 25
-                  c.srli     a5, 13
-                  c.addi     s9, 16
-                  c.addi     s7, -5
-                  lui        gp, 384321
-                  c.srli     a0, 11
-                  lui        s9, 600434
-                  la         s0, data_page_14+2468 #start riscv_load_store_rand_instr_stream_7
-                  sb         a5, 1277(s0)
-                  auipc      s10, 994330
-                  c.srli     a5, 5
-                  c.sw       s1, 60(s0)
-                  lbu        t5, -1433(s0)
-                  lb         t6, -770(s0)
-                  lbu        t6, -1788(s0)
-                  lui        s9, 267173
-                  lw         t6, 1152(s0)
-                  c.addi     s9, 6
-                  addi       zero, t3, 694
-                  lb         a7, -1863(s0)
-                  c.srai     a5, 8
-                  lb         a2, 1413(s0)
-                  sb         t5, 33(s0)
-                  sw         a7, 1620(s0)
-                  c.addi     a3, 29
-                  lui        zero, 87130
-                  c.srai     s1, 5
-                  c.lw       a3, 100(s0)
-                  lb         a2, 1222(s0)
-                  sh         s9, -1130(s0)
-                  sb         zero, -1995(s0)
-                  lb         t3, 1357(s0)
-                  lb         t4, -1821(s0)
-                  sltu       t3, a6, a6
-                  lh         zero, 312(s0)
-                  c.srli     a1, 30
-                  sb         s5, 103(s0)
-                  lbu        s6, -1226(s0) #end riscv_load_store_rand_instr_stream_7
-623:              c.slli     a1, 31
-                  c.addi     gp, 10
-                  c.srli     a4, 26
-                  lui        s4, 666080
-                  c.srai     a0, 6
-                  c.mv       s8, ra
-                  c.srai     a3, 20
-                  c.srli     s1, 28
-                  c.slli     s11, 29
-                  c.addi     s7, -9
-                  c.lui      a1, 15
-                  c.addi     s8, 25
-                  c.srai     a3, 9
-                  c.srli     s0, 3
-                  c.srli     a1, 5
-                  c.li       a5, 12
-                  c.addi     t4, -13
-                  auipc      s6, 468969
-                  auipc      s1, 259499
-                  la         t4, data_page_6+2683 #start riscv_load_store_rand_instr_stream_0
-                  lui        s0, 210517
-                  lb         s6, -1578(t4)
-                  sb         s3, 1020(t4)
-                  sltu       a4, a1, s1
-                  lui        s4, 418110
-                  auipc      s6, 1026683
-                  c.slli     s9, 26
-                  auipc      s8, 1034627
-                  c.li       a4, 14
-                  c.lui      t2, 21
-                  c.addi     a2, -14
-                  c.slli     a7, 4
-                  c.addi     a5, 11
-                  sub        a1, t1, s11
-                  auipc      s1, 168359
-                  auipc      s3, 705571
-                  c.addi     a3, 19
-                  lhu        a7, 629(t4)
-                  lui        s11, 95510
-                  c.addi     a0, 16
-                  c.slli     s3, 6
-                  c.srai     s0, 5
-                  lb         s1, -318(t4)
-                  lbu        s0, 1392(t4)
-                  c.addi     s3, 24
-                  c.srai     a1, 26
-                  auipc      t5, 190162
-                  c.addi     t3, 19
-                  lb         s4, -958(t4)
-                  lbu        a5, -1451(t4)
-                  lui        a5, 107854
-                  c.lui      s0, 6
-                  c.addi     a6, -5
-                  sb         zero, 269(t4)
-                  lui        s10, 399921
-                  sb         s2, -1414(t4)
-                  sb         s2, 432(t4) #end riscv_load_store_rand_instr_stream_0
-                  lui        a7, 140159
-                  lui        t6, 142506
-                  slti       s2, ra, -705
-                  lui        s1, 702685
-                  c.or       s0, a1
-                  c.lui      s11, 26
-                  c.addi     s8, -16
-                  auipc      s7, 135311
-                  auipc      a2, 719063
-                  xor        a6, sp, gp
-                  c.lui      t5, 20
-                  c.slli     a2, 14
-                  mulh       s5, t6, a5
-                  c.addi     t6, -7
-                  rem        a6, s5, a4
-                  c.and      a1, s1
-                  c.srli     a2, 18
-                  auipc      s1, 279791
-                  fence.i
-                  c.slli     t3, 6
-                  c.srli     a0, 4
-                  c.lui      gp, 12
-                  c.srli     a0, 11
-                  c.addi     s6, 6
-                  slti       t6, a1, 460
-                  lui        s5, 191580
-                  add        s7, s10, s0
-                  c.srai     a2, 14
-                  c.addi     a1, 13
-                  c.addi     a5, -25
-                  lui        t3, 951345
-                  c.lui      a2, 23
-                  c.bnez     s1, 682f
-                  lui        t3, 459971
-                  div        gp, t0, t0
-                  lui        s8, 853177
-                  c.addi     s7, 8
-                  ori        a7, s11, 1021
-                  divu       t1, zero, a7
-                  c.addi     a6, -3
-682:              c.addi     a0, -26
-                  lui        s1, 1015170
-                  auipc      t1, 714368
-                  srl        s3, s8, t0
-                  auipc      s8, 59292
-                  c.slli     a5, 22
-                  divu       t6, s1, s5
-                  c.addi     s0, 21
-                  c.lui      t1, 31
-                  mulh       t6, s1, a5
-                  c.slli     a6, 20
-                  c.slli     s5, 26
-                  c.srai     s0, 14
-                  andi       s6, s9, 166
-                  la         gp, data_page_11+2517 #start riscv_load_store_rand_instr_stream_10
-                  sb         gp, -1335(gp)
-                  c.addi     a3, -7
-                  lui        a2, 264901
-                  lbu        t3, 625(gp)
-                  c.lui      t2, 12
-                  lui        s11, 818141
-                  sb         a1, -887(gp)
-                  sb         t1, 1521(gp)
-                  lui        a6, 241328
-                  sb         zero, 814(gp)
-                  sb         s5, -1988(gp)
-                  auipc      t4, 826958
-                  lb         a6, -345(gp)
-                  auipc      a4, 499204
-                  c.srli     a0, 23
-                  sb         a3, 1466(gp)
-                  sb         s5, 986(gp)
-                  c.addi     s11, -26
-                  lb         s6, -1716(gp)
-                  c.lui      t2, 2
-                  auipc      t1, 324575
-                  c.addi     s2, -12
-                  divu       t4, a3, s2
-                  auipc      t5, 851210
-                  lw         zero, -97(gp)
-                  divu       a6, s7, s11
-                  sh         a7, -541(gp)
-                  lbu        a4, -520(gp)
-                  sh         a0, 1105(gp)
-                  lbu        a4, -154(gp)
-                  sb         s7, -754(gp)
-                  lbu        a3, 570(gp)
-                  lbu        a6, 1008(gp)
-                  sb         s3, 549(gp)
-                  lb         zero, -2040(gp)
-                  lb         s9, -894(gp)
-                  c.addi     s6, -20
-                  sb         a1, -594(gp)
-                  c.lui      s9, 28
-                  lhu        a0, -1833(gp)
-                  lbu        a3, -1565(gp)
-                  lhu        s6, -87(gp)
-                  sb         s8, 653(gp)
-                  c.slli     a2, 19
-                  sb         a1, 177(gp)
-                  c.srli     a2, 10
-                  c.addi     s2, -23
-                  c.srai     s0, 19
-                  sb         s7, 161(gp)
-                  lb         s1, -736(gp)
-                  sb         a5, -1978(gp) #end riscv_load_store_rand_instr_stream_10
-                  c.lui      s6, 9
-                  slti       s0, a5, -329
-                  auipc      s8, 671326
-                  c.addi     gp, 11
-                  c.srai     a2, 9
-                  c.slli     s0, 17
-                  c.andi     s1, 26
-                  c.lui      a6, 18
-                  c.srli     s0, 8
-                  c.srli     a0, 27
-                  auipc      zero, 94912
-                  auipc      s2, 429313
-                  c.srai     a3, 6
-                  lui        a3, 73132
-                  c.sub      a3, s0
-                  and        s8, t6, t6
-                  lui        a2, 838514
-                  lui        s11, 91999
-                  lui        s1, 363789
-                  c.addi     s3, 14
-                  c.andi     a1, 23
-                  c.addi     t4, 2
-                  c.nop
-                  auipc      s4, 435059
-                  lui        t6, 418643
-                  c.addi     t5, 28
-                  auipc      s2, 244757
-                  fence.i
-                  c.srai     a4, 2
-                  beq        t0, s3, 729f
-                  c.lui      a2, 25
-                  c.addi     t4, 29
-                  auipc      a0, 329504
-729:              c.slli     t3, 13
-                  c.addi     s6, -24
-                  c.srli     a2, 30
-                  c.andi     s1, 21
-                  c.mv       s3, s1
-                  lui        s2, 441743
-                  auipc      a4, 256952
-                  c.srli     s1, 25
-                  auipc      a0, 380780
-                  c.addi     s2, 6
-                  lui        s2, 21214
-                  auipc      s5, 760982
-                  auipc      s6, 798681
-                  c.slli     a3, 8
-                  c.addi     a7, 2
-                  c.srli     a1, 20
-                  c.lui      s4, 23
-                  c.addi     s4, -30
-                  c.addi     gp, -15
-                  mulhsu     s5, s6, a6
-                  c.lui      a0, 25
-                  c.lui      t2, 8
-                  blt        s7, zero, 769f
-                  add        t5, s0, s0
-                  lui        s2, 113600
-                  auipc      s2, 703225
-                  c.srli     a4, 21
-                  mulhsu     a7, s8, t4
-                  sub        s1, t3, s6
-                  sll        a5, s1, s7
-                  lui        a4, 58276
-                  lui        s4, 41495
-                  c.slli     s9, 5
-                  c.or       a3, a3
-                  c.addi     gp, 30
-                  c.nop
-                  c.lui      a6, 2
-                  c.addi     gp, 10
-                  c.addi     s6, -10
-                  c.addi     t4, 26
-769:              mulhu      a5, t6, t5
-                  auipc      t4, 158209
-                  or         a4, s5, s10
-                  c.addi     a1, 15
-                  auipc      a1, 808002
-                  bge        s3, zero, 782f
-                  and        t2, s0, t3
-                  c.addi     s7, 17
-                  c.addi     a2, 8
-                  la         t4, data_page_19+1386 #start riscv_load_store_rand_instr_stream_9
-                  auipc      s1, 92293
-                  sb         a4, 534(t4)
-                  c.srli     a4, 29
-                  lui        s0, 427202
-                  sb         s0, 1175(t4)
-                  lb         s10, 1650(t4)
-                  sb         zero, -1307(t4)
-                  sh         ra, 300(t4)
-                  lui        t2, 574006
-                  lhu        zero, 844(t4)
-                  slt        s1, s1, s3
-                  lh         a6, 56(t4)
-                  sh         sp, 1862(t4)
-                  lw         a6, 470(t4)
-                  lui        s5, 796712
-                  c.srai     a2, 15
-                  lui        t5, 296372
-                  lh         gp, 116(t4)
-                  c.addi     s4, -25
-                  auipc      t5, 109422
-                  c.addi     a0, -10
-                  lb         s6, 988(t4)
-                  c.srai     a2, 6
-                  lui        s5, 648961
-                  c.slli     s1, 13
-                  sb         a4, 43(t4)
-                  lb         s8, 501(t4)
-                  lbu        s9, 324(t4)
-                  lb         a2, -337(t4)
-                  c.add      a1, s0
-                  lhu        s10, 950(t4)
-                  lh         a0, -686(t4)
-                  and        s6, t6, a7
-                  sh         a0, -798(t4)
-                  add        t3, s5, t5
-                  auipc      a1, 136849
-                  div        gp, a6, a1
-                  mulhu      s4, s4, a6
-                  c.srai     a5, 29
-                  lui        s1, 322865
-                  lbu        a5, 1366(t4)
-                  sb         a1, 1191(t4)
-                  lbu        a5, 743(t4) #end riscv_load_store_rand_instr_stream_9
-                  c.addi     s5, 22
-                  c.addi     a3, 29
-                  c.addi     gp, -18
-                  c.mv       s3, a5
-782:              bne        t4, s0, 794f
-                  auipc      t4, 420366
-                  mul        a4, s7, a7
-                  auipc      gp, 1000316
-                  auipc      a5, 955631
-                  sll        s6, ra, a1
-                  auipc      a6, 29054
-                  c.or       s0, a5
-                  c.bnez     s0, 805f
-                  c.srli     a1, 13
-                  c.addi     t5, -24
-                  c.lui      a3, 26
-794:              c.addi     gp, 3
-                  div        zero, t4, a2
-                  c.andi     a5, -16
-                  c.addi     a6, -31
-                  c.addi     s6, 18
-                  auipc      s6, 712142
-                  add        gp, a2, a1
-                  c.slli     a5, 22
-                  sub        t1, a3, s7
-                  c.addi     a1, 3
-                  c.srai     a0, 20
-805:              c.srai     a0, 6
-                  c.addi     t1, -5
-                  c.addi     a2, 19
-                  c.lui      s7, 2
-                  lui        s5, 986505
-                  c.addi     t3, -23
-                  bgeu       tp, sp, 825f
-                  lui        a3, 560411
-                  c.slli     t5, 6
-                  c.addi     a5, 30
-                  c.addi     s1, -1
-                  c.slli     t4, 12
-                  beq        ra, a2, 821f
-                  auipc      zero, 644120
-                  lui        a7, 929037
-                  mulhu      t1, a6, t1
-821:              auipc      a0, 659441
-                  c.addi     s5, -13
-                  c.and      s1, a4
-                  c.lui      a2, 16
-825:              c.srli     a4, 24
-                  c.mv       s10, t2
-                  c.lui      a1, 20
-                  c.addi     a2, 6
-                  ori        s3, s5, 672
-                  remu       s11, s2, s2
-                  c.addi     s8, 10
-                  c.addi     t6, -23
-                  lui        s4, 34579
-                  auipc      t4, 787194
-                  c.addi     s7, 10
-                  auipc      t2, 277338
-                  auipc      zero, 66789
-                  lui        gp, 572861
-                  lui        s4, 231713
-                  c.bnez     a2, 858f
-                  c.srli     a2, 14
-                  c.addi     t6, -26
-                  auipc      a7, 405994
-                  mulhu      s2, a7, a1
-                  c.addi     s4, 7
-                  srai       a6, s10, 19
-                  auipc      s9, 230715
-                  c.addi     a5, -32
-                  c.addi     t5, -31
-                  bgeu       s4, s11, 858f
-                  lui        a4, 144163
-                  lui        s2, 592796
-                  c.slli     s11, 22
-                  c.srli     a0, 20
-                  auipc      gp, 190133
-                  c.slli     a5, 3
-                  c.or       s1, a4
-858:              srli       s6, t4, 29
-                  c.addi     s3, 4
-                  c.addi     s10, -6
-                  c.addi     s3, -20
-                  c.addi     a6, -18
-                  auipc      s0, 356994
-                  lui        s8, 74376
-                  c.andi     s1, -21
-                  c.addi     t1, -21
-                  c.lui      a2, 24
-                  c.srli     a0, 23
-                  c.srli     a0, 2
-                  c.addi     a1, 18
-                  c.slli     s10, 20
-                  mulh       t2, t3, zero
-                  c.and      a4, s0
-                  c.and      a2, a5
-                  lui        gp, 838147
-                  c.or       s1, a4
-                  lui        s0, 112447
-                  c.srai     a1, 2
-                  lui        t2, 549559
-                  auipc      t1, 570371
-                  mulh       a1, a6, t2
-                  c.addi     s7, 25
-                  auipc      t4, 735893
-                  c.addi     a7, -31
-                  c.slli     a6, 11
-                  c.addi     s8, 9
-                  c.addi     a4, -6
-                  c.srai     a2, 17
-                  c.srli     a5, 28
-                  add        s8, t1, t2
-                  sltiu      t2, s1, 881
-                  auipc      t1, 157160
-                  slt        t1, t4, t6
-                  c.srai     a0, 8
-                  slt        s2, gp, s4
-                  divu       s3, s6, sp
-                  c.li       gp, -32
-                  c.slli     a3, 10
-                  c.addi     a6, 25
-                  c.slli     a7, 8
-                  c.addi     s10, 10
-                  or         s5, s3, a2
-                  addi       t4, a7, 285
-                  lui        a7, 547233
-                  lui        s8, 432116
-                  c.srli     a3, 4
-                  c.srai     s1, 26
-                  c.srli     a4, 27
-                  sltiu      t5, a3, -95
-                  c.lui      a4, 30
-                  c.or       a3, a4
-                  c.srai     a1, 30
-                  c.slli     a6, 21
-                  c.lui      a6, 7
-                  auipc      t3, 638464
-                  auipc      a0, 688798
-                  c.lui      s10, 31
-                  remu       s1, s8, t3
-                  lui        a0, 706906
-                  fence.i
-                  c.srli     s1, 12
-                  c.addi     s1, 31
-                  c.nop
-                  c.addi     s3, 18
-                  and        s7, s9, s7
-                  c.addi     s7, -13
-                  c.slli     s9, 14
-                  auipc      s9, 800182
-                  auipc      s6, 528664
-                  lui        s10, 120824
-                  c.srli     a4, 25
-                  auipc      s7, 320182
-                  c.addi     a6, 9
-                  bgeu       s6, t1, 939f
-                  srai       t5, gp, 14
-                  c.srli     a5, 25
-                  c.addi     s1, 30
-                  c.slli     t6, 31
-939:              div        a3, t5, s2
-                  c.and      a1, a3
-                  c.add      s0, a4
-                  c.lui      s10, 7
-                  c.slli     s9, 25
-                  auipc      t2, 270788
-                  auipc      a6, 800165
-                  lui        t5, 971953
-                  c.bnez     a5, 950f
-                  bltu       tp, s5, 967f
-                  srai       s11, a6, 30
-950:              lui        zero, 705352
-                  c.lui      s2, 29
-                  c.slli     t6, 12
-                  c.slli     s2, 9
-                  la         a3, data_page_13+1933 #start riscv_load_store_rand_instr_stream_5
-                  sw         t6, -141(a3)
-                  lb         s10, 1925(a3)
-                  auipc      t3, 396639
-                  sb         s4, 1998(a3)
-                  c.addi     t3, -10
-                  c.or       a1, a2
-                  sb         a1, 431(a3)
-                  lb         s11, 952(a3)
-                  sw         gp, -1425(a3)
-                  lb         a1, 245(a3)
-                  lb         a5, -1392(a3)
-                  lbu        t4, 384(a3)
-                  sb         s3, -1088(a3)
-                  remu       s6, a2, a2
-                  lbu        a6, -712(a3)
-                  sb         s8, 863(a3)
-                  c.addi     gp, 9
-                  c.slli     t5, 18
-                  lb         t1, -1124(a3)
-                  lui        a0, 841237
-                  lw         t4, -1829(a3)
-                  lb         s3, 1634(a3)
-                  sb         s1, 1389(a3)
-                  sb         a6, -1833(a3)
-                  lbu        a7, 1642(a3)
-                  lb         a6, 1367(a3)
-                  sub        t5, s6, zero
-                  andi       s6, sp, 415
-                  lhu        a5, -1579(a3)
-                  c.srai     a0, 23
-                  lb         a2, -1192(a3)
-                  sh         s9, 1507(a3)
-                  lbu        a0, 922(a3)
-                  lbu        t4, 366(a3)
-                  auipc      zero, 411753
-                  lw         s4, 263(a3)
-                  sb         s2, 1422(a3)
-                  c.slli     t2, 18
-                  sb         ra, -1196(a3)
-                  lh         a7, 491(a3)
-                  c.or       a1, s1
-                  lb         t3, 1938(a3) #end riscv_load_store_rand_instr_stream_5
-                  c.addi     s8, -30
-                  auipc      a7, 129552
-                  c.addi     s7, -7
-                  c.addi     s7, -8
-                  fence
-                  c.srai     a2, 1
-                  c.addi     a3, 20
-                  auipc      t2, 902484
-                  c.lui      a6, 26
-                  c.srai     a3, 31
-                  auipc      a2, 84707
-                  auipc      t2, 295356
-                  c.lui      a2, 30
-967:              lui        s1, 151341
-                  lui        gp, 990002
-                  c.addi     a1, -2
-                  remu       a6, a5, a2
-                  auipc      s8, 692726
-                  c.addi     t1, 31
-                  c.srli     a3, 25
-                  c.slli     s4, 30
-                  lui        a3, 743252
-                  c.addi     s4, 4
-                  c.lui      s8, 4
-                  c.addi     a2, 23
-                  lui        a1, 344571
-                  bltu       s10, t6, 988f
-                  auipc      s2, 199215
-                  c.addi     a3, -16
-                  lui        zero, 58022
-                  c.addi     a5, 14
-                  auipc      a3, 625863
-                  c.addi     t2, 14
-                  auipc      a4, 689965
-988:              c.addi     gp, 19
-                  c.lui      t4, 22
-                  c.srli     a4, 26
-                  c.lui      a0, 29
-                  lui        gp, 171972
-                  c.slli     s3, 7
-                  c.addi     a5, 19
-                  c.addi     s2, -32
-                  c.srai     a0, 26
-                  divu       s10, gp, a7
-                  c.srai     a1, 16
-                  c.addi     s1, -17
-                  c.srli     s0, 5
-                  c.srli     a1, 23
-                  auipc      zero, 420876
-                  c.lui      s8, 26
-                  c.srai     a0, 28
-                  auipc      s8, 424396
-                  c.addi     s2, 25
-                  lui        a7, 271594
-                  c.addi     s1, 5
-                  bge        s8, ra, 1011f
-                  auipc      s3, 111701
-1011:             c.slli     t2, 25
-                  c.addi     t5, 21
-                  c.lui      s2, 21
-                  c.addi     a5, -26
-                  c.lui      s10, 5
-                  c.lui      s9, 27
-                  mulhu      s3, a2, a4
-                  c.addi     gp, 14
-                  beq        a7, t6, 1032f
-                  auipc      s6, 397841
-                  srli       t6, s0, 30
-                  c.srli     a5, 9
-                  lui        s7, 899350
-                  fence.i
-                  c.addi     s5, -29
-                  c.slli     s10, 6
-                  srai       a2, s2, 28
-                  slli       a3, s10, 0
-                  c.srai     s0, 28
-                  c.addi     s4, -32
-                  mul        gp, t1, tp
-1032:             lui        a7, 66735
-                  auipc      a1, 646217
-                  c.addi     s4, -6
-                  auipc      zero, 51508
-                  c.addi     gp, 10
-                  c.lui      s2, 7
-                  c.addi     t5, -24
-                  c.slli     s9, 12
-                  srl        s11, sp, s4
-                  c.addi     s4, -18
-                  auipc      t3, 971276
-                  c.srli     a3, 23
-                  auipc      a1, 987132
-                  xori       gp, a3, -67
-                  c.lui      s7, 23
-                  xori       a2, gp, -16
-                  c.lui      s5, 21
-                  c.addi     s9, -21
-                  c.addi     t1, -31
-                  c.slli     s5, 13
-                  addi       s1, a5, -85
-                  auipc      s11, 34531
-                  auipc      a7, 38922
-                  c.lui      a5, 18
-                  c.addi     t5, -19
-                  c.srai     a0, 18
-                  mulhu      s10, t1, t1
-                  c.lui      t6, 2
-                  auipc      a7, 326963
-                  lui        s9, 659275
-                  c.srli     a4, 2
-                  auipc      a2, 557043
-                  auipc      t4, 755606
-                  lui        a4, 877548
-                  c.lui      s3, 31
-                  fence
-                  lui        s1, 945955
-                  c.srai     s0, 16
-                  c.addi     s8, 2
-                  lui        s1, 404259
-                  slt        s1, s10, s3
-                  sltiu      t5, t6, 763
-                  c.addi     s10, 2
-                  srli       t5, a1, 2
-                  c.addi     t5, -2
-                  lui        t3, 830401
-                  c.addi     s4, -6
-                  lui        t5, 639418
-                  ori        s7, a4, 27
-                  c.slli     t4, 10
-                  auipc      s8, 421192
-                  c.srli     s1, 6
-                  add        s4, ra, t5
-                  c.srai     a5, 18
-                  sltu       s9, a3, a5
-                  c.slli     s8, 15
-                  auipc      a3, 806516
-                  c.addi     s11, -16
-                  sll        s3, t4, s5
-                  c.addi     s6, 20
-                  lui        t5, 425495
-                  c.nop
-                  c.slli     a4, 14
-                  c.li       a0, -10
-                  c.srai     a3, 24
-                  lui        s0, 50202
-                  c.addi     s1, 24
-                  c.or       a4, a4
-                  divu       s10, s6, t6
-                  la         s9, data_page_1+1793 #start riscv_load_store_rand_instr_stream_2
-                  c.addi     s8, -1
-                  c.addi     t1, 25
-                  lhu        s5, -521(s9)
-                  lbu        s11, 1539(s9)
-                  andi       s1, a1, 115
-                  lb         s4, 558(s9)
-                  lbu        s1, -1574(s9)
-                  lb         t1, 1378(s9)
-                  lb         s3, 393(s9)
-                  lb         s1, 2030(s9)
-                  sh         t1, -801(s9)
-                  sb         s10, -860(s9)
-                  lh         a1, 933(s9)
-                  ori        a4, a5, 783
-                  c.addi     s11, 13
-                  c.or       a2, a3
-                  c.addi     t2, 18
-                  sltu       a2, s8, s5
-                  c.slli     t6, 5
-                  lb         a3, 1210(s9)
-                  sb         sp, -794(s9)
-                  sltu       t5, sp, s7
-                  rem        t1, a5, s6
-                  lui        s10, 669637
-                  sb         a5, 1072(s9)
-                  lbu        zero, -138(s9)
-                  sb         gp, 288(s9)
-                  srli       s1, tp, 23
-                  lbu        s7, 1888(s9)
-                  c.lui      a6, 8
-                  auipc      t6, 650938
-                  c.addi     a0, 5
-                  c.srai     a0, 19
-                  c.slli     a2, 8
-                  lui        a0, 797472
-                  sb         a5, -1406(s9)
-                  c.addi     a1, -21
-                  lhu        s1, -779(s9)
-                  c.srli     a0, 3
-                  sltiu      t1, s8, 223
-                  c.srli     s1, 30
-                  sll        s1, t2, a2
-                  sh         s9, 1215(s9)
-                  c.srli     a3, 14
-                  lbu        t5, -11(s9)
-                  lh         t1, 243(s9)
-                  lbu        t2, -68(s9) #end riscv_load_store_rand_instr_stream_2
-                  c.addi     a6, -8
-                  mulhsu     t5, s10, sp
-                  lui        s0, 692758
-                  lui        a4, 125600
-                  auipc      a0, 1041390
-                  c.addi     s0, -30
-                  c.slli     a5, 31
-                  c.andi     s1, 6
-                  c.addi     s2, 30
-                  c.addi     t1, -7
-                  c.srai     a0, 19
-                  bne        s7, tp, 1131f
-                  lui        a0, 267637
-                  c.addi     a6, 27
-                  c.slli     s4, 16
-                  c.srai     a4, 25
-                  c.srai     a5, 26
-                  c.addi     a1, -3
-                  c.addi     a3, -11
-                  c.srli     s0, 16
-                  c.srai     a2, 10
-                  xori       a3, s0, 793
-                  c.lui      t1, 8
-                  c.srai     a5, 1
-                  c.slli     a0, 25
-                  sltiu      a3, s1, 210
-                  c.addi     s1, -14
-                  c.srai     a2, 9
-                  slti       s10, s6, -177
-                  auipc      s3, 724233
-1131:             lui        a4, 850562
-                  c.or       a1, a1
-                  c.lui      s1, 17
-                  c.srli     a2, 12
-                  c.addi     s4, 23
-                  and        a1, s10, s3
-                  lui        t5, 560417
-                  c.slli     s10, 30
-                  lui        s6, 816578
-                  c.addi     t2, -25
-                  lui        s3, 740890
-                  c.srli     a0, 21
-                  auipc      t2, 585615
-                  c.slli     s10, 20
-                  and        t4, s10, a1
-                  lui        s3, 717872
-                  c.and      s1, a0
-                  auipc      t3, 36024
-                  c.addi     s7, -6
-                  srl        s5, s10, t0
-                  c.addi     t1, 6
-                  c.addi     s2, -19
-                  c.bnez     s0, 1160f
-                  lui        a6, 314327
-                  auipc      zero, 234042
-                  c.andi     a5, -14
-                  div        a6, t6, a5
-                  c.addi     t6, -13
-                  divu       s6, t2, s9
-1160:             c.addi     s10, 26
-                  c.srli     a2, 25
-                  auipc      s4, 57376
-                  fence
-                  auipc      s5, 533101
-                  bne        a7, a3, 1171f
-                  c.addi     s7, 8
-                  mulhu      s8, t4, s4
-                  c.addi     t5, -7
-                  lui        s8, 132279
-                  c.addi     s0, -28
-1171:             c.addi     s4, -17
-                  auipc      s4, 421931
-                  c.addi     s2, 25
-                  lui        a7, 961171
-                  c.srai     a1, 19
-                  c.addi     s2, 6
-                  c.addi     a7, -30
-                  c.addi     a1, -28
-                  xor        t6, sp, zero
-                  srli       a0, a7, 1
-                  c.lui      s1, 14
-                  slt        s7, t6, s2
-                  c.srli     s0, 13
-                  lui        s9, 150906
-                  c.sub      a1, a4
-                  c.srai     a2, 3
-                  c.addi     s5, 2
-                  c.addi     s5, -31
-                  c.srai     a1, 16
-                  c.srai     a2, 6
-                  lw         ra, 4(sp)
-                  lw         t0, 8(sp)
-                  addi       sp, sp, 24
-                  add        a0, s11, a6
-                  c.srai     a0, 19
-                  auipc      t3, 997852
-                  c.addi     t6, 8
-                  c.srai     a0, 17
-1706:             ret
-init_machine_mode:
-                  li a0, 0x581900
-                  csrw 0x300, a0 # MSTATUS
-                  li a0, 0x0
-                  csrw 0x304, a0 # MIE
-                  mret
-write_tohost:     
-                  sw gp, tohost, t5
-
-_exit:            
-                  j write_tohost
-
-.data
-.pushsection .tohost,"aw",@progbits;
-.align 6; .global tohost; tohost: .dword 0;
-.align 6; .global fromhost; fromhost: .dword 0;
-.popsection;
-.align 4;
-data_page_0:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_1:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_2:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_3:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_4:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_5:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_6:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_7:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_8:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_9:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_10:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_11:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_12:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_13:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_14:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_15:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_16:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_17:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_18:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-data_page_19:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.align 4;
-.align 5
-_user_stack_start:
-.rept 4999
-.4byte 0x0
-.endr
-_user_stack_end:
-.4byte 0x0
-_kernel_start: .align 12
-smode_accessible_umode_program:beq        a0, tp, smode_accessible_umode_program_stack_p
-smode_accessible_umode_program_stack_p:addi       sp, sp, -16
-                  slti       s9, s2, 285
-                  sw         ra, 4(sp)
-                  sw         t0, 8(sp)
-                  c.srli     a4, 27
-                  c.and      a0, a2
-                  c.mv       gp, a1
-                  and        t2, zero, s10
-                  c.addi     s5, 2
-                  andi       s11, t0, -859
-                  c.add      a3, a0
-                  c.addi     a1, 26
-                  slt        t1, s4, t2
-                  c.addi     a7, -8
-                  bltu       s7, ra, 21f
-                  c.addi     s10, -31
-                  auipc      a0, 708382
-                  auipc      s9, 115845
-                  lui        a4, 517715
-                  c.srai     s1, 17
-                  auipc      s6, 944678
-                  c.srai     s0, 25
-                  c.bnez     a2, 32f
-                  c.lui      t5, 4
-                  c.lui      s5, 9
-                  auipc      t6, 1000076
-                  c.srli     a2, 9
-                  c.addi     t1, -28
-                  addi       s5, gp, -263
-                  nop
-21:               c.addi     s7, -10
-                  c.addi     s10, 27
-                  c.srli     a4, 26
-                  c.addi     t2, 4
-                  c.lui      s3, 12
-                  c.srai     s1, 4
-                  lui        s8, 377736
-                  lui        s10, 12008
-                  slli       s8, a1, 29
-                  c.srai     a3, 31
-                  c.srli     a0, 5
-32:               c.addi     s0, 5
-                  lui        s10, 112575
-                  c.slli     t6, 2
-                  auipc      a1, 796427
-                  c.addi     t2, -26
-                  c.srli     s1, 26
-                  blt        s1, a0, 40f
-                  c.addi     s6, 13
-40:               c.srai     s1, 18
-                  c.slli     t6, 31
-                  lui        s7, 732899
-                  mulhu      a7, sp, zero
-                  c.addi     t4, 21
-                  c.li       s1, -16
-                  c.slli     s2, 4
-                  xori       a2, s6, -549
-                  c.addi     a7, 5
-                  c.addi     s9, 21
-                  c.addi     a7, 9
-                  c.addi     a4, -1
-                  auipc      t4, 656888
-                  c.addi     a5, -19
-                  and        s11, sp, zero
-                  c.slli     s4, 3
-                  nop
-                  c.addi     t5, -22
-                  c.srli     a0, 5
-                  c.slli     t3, 8
-                  auipc      a2, 381305
-                  lui        s1, 792774
-                  c.slli     s0, 1
-                  c.addi     a2, -29
-                  c.addi     a6, 28
-                  c.lui      a2, 7
-                  c.beqz     s0, 73f
-                  beq        s11, ra, 84f
-                  c.srai     a3, 14
-                  lui        s6, 471083
-                  auipc      s1, 777529
-                  bne        t0, t6, 86f
-                  sltu       a4, a4, t6
-73:               sub        t4, s5, t3
-                  c.srai     a4, 15
-                  c.srli     a0, 23
-                  xori       a5, zero, -580
-                  c.lui      s8, 16
-                  c.srli     a0, 8
-                  c.xor      a4, a1
-                  c.addi     t5, 12
-                  c.addi     t5, -30
-                  auipc      s10, 201137
-                  c.addi     s9, 27
-84:               lui        s3, 30957
-                  lui        zero, 30375
-86:               c.addi     a5, 25
-                  bne        tp, s7, 88f
-88:               c.addi     gp, 22
-                  or         zero, t3, s11
-                  c.addi     s4, 24
-                  c.slli     t3, 15
-                  c.addi     s0, -24
-                  c.addi     a4, 15
-                  lui        s0, 622620
-                  and        s2, a6, s7
-                  auipc      t1, 321490
-                  c.addi     a6, 22
-                  c.srli     a2, 24
-                  lui        s6, 326530
-                  lui        s4, 364587
-                  c.addi     s11, -20
-                  lui        t4, 964916
-                  auipc      a6, 761314
-                  lui        a7, 819076
-                  c.addi     t5, -9
-                  c.addi     a3, 16
-                  c.slli     s8, 23
-                  div        s6, s0, s11
-                  c.slli     a2, 2
-                  c.srai     a2, 3
-                  la         a7, kernel_data_page_0+1464 #start riscv_load_store_rand_instr_stream_0
-                  sh         a7, 1774(a7)
-                  auipc      t4, 522543
-                  c.add      a0, s1
-                  lbu        t6, -1456(a7)
-                  c.srli     s1, 30
-                  lb         t2, -809(a7)
-                  lbu        s9, -935(a7)
-                  c.addi     t2, 23
-                  auipc      s3, 163451
-                  c.srai     s0, 2
-                  c.lui      s8, 6
-                  lbu        s7, 1314(a7)
-                  c.lui      gp, 26
-                  remu       s5, a7, s0
-                  lui        s10, 155164
-                  lh         s9, 1158(a7)
-                  lh         gp, -322(a7)
-                  c.srli     a4, 22
-                  c.addi     s5, 18
-                  c.addi     s9, 18
-                  auipc      zero, 689249
-                  lui        t2, 988798
-                  c.addi     a6, 15
-                  auipc      t1, 409029
-                  c.and      a4, s0
-                  xori       a5, s8, -624
-                  lh         s4, 26(a7)
-                  sh         s10, 1120(a7)
-                  c.srli     a4, 24
-                  c.lui      t5, 22
-                  c.lui      s1, 9
-                  auipc      a5, 206043
-                  c.addi     a0, -17
-                  andi       t6, a1, -290
-                  c.addi     a1, 9
-                  sll        s1, s5, ra
-                  lbu        s8, 1643(a7) #end riscv_load_store_rand_instr_stream_0
-                  c.addi     s8, -9
-                  auipc      s8, 410673
-                  c.slli     s3, 13
-                  mulh       s4, a2, gp
-                  c.addi     s9, -20
-                  c.lui      s11, 13
-                  c.lui      a0, 26
-                  c.li       t1, -27
-                  c.andi     a2, 23
-                  xori       s8, s1, -711
-                  beq        s6, s8, 132f
-                  c.srai     a4, 18
-                  c.srai     a5, 28
-                  xori       t1, a7, 270
-                  sub        a3, s4, a0
-                  sub        zero, s0, a2
-                  beq        s8, s5, 132f
-                  xor        t6, s3, tp
-                  auipc      a4, 272489
-                  c.srai     s0, 16
-                  c.addi     t2, 27
-132:              c.addi     s3, 22
-                  srli       s3, a7, 17
-                  c.addi     a0, 21
-                  c.addi     a0, 29
-                  auipc      t4, 248703
-                  c.addi     s11, -16
-                  sltiu      a2, s2, 648
-                  c.addi     a7, 12
-                  rem        s11, t1, s4
-                  c.addi     s7, 27
-                  divu       gp, s1, a6
-                  srai       s10, a3, 21
-                  c.addi     a3, -13
-                  blt        s6, sp, 165f
-                  auipc      a7, 314790
-                  c.addi     t6, -22
-                  slt        a6, t4, s7
-                  auipc      a1, 146879
-                  sra        t2, tp, s7
-                  rem        s1, a6, sp
-                  lui        s5, 688607
-                  c.srli     s1, 15
-                  c.srai     a2, 25
-                  auipc      t3, 193745
-                  c.lui      s11, 22
-                  c.srai     a1, 12
-                  lui        a5, 259171
-                  c.slli     a3, 25
-                  lui        s11, 241725
-                  c.slli     s2, 13
-                  c.addi     gp, 8
-                  xor        s3, zero, a6
-                  c.srai     s1, 18
-165:              c.srli     a4, 11
-                  auipc      t5, 444694
-                  divu       s1, s4, s0
-                  c.srai     s0, 23
-                  xor        s11, a1, s10
-                  c.lui      s11, 11
-                  c.srai     a3, 21
-                  c.addi     s0, -29
-                  c.addi     s5, -1
-                  c.slli     a4, 25
-                  c.lui      a4, 26
-                  lui        t6, 550287
-                  c.addi     s1, 3
-                  c.addi     a6, -21
-                  c.addi     t3, 2
-                  auipc      s1, 1011668
-                  auipc      a5, 698744
-                  c.lui      t5, 25
-                  c.lui      t6, 13
-                  c.srli     a5, 23
-                  rem        a1, s0, s1
-                  c.addi     s2, -18
-                  c.addi     a3, 22
-                  c.srli     s1, 2
-                  sub        s5, ra, s0
-                  c.srai     s1, 5
-                  bge        a0, sp, 193f
-                  sub        a2, s0, a4
-193:              lui        s11, 962634
-                  c.addi     s10, -11
-                  or         zero, t3, s8
-                  c.srai     a0, 12
-                  la         a4, kernel_data_page_1+2745 #start riscv_load_store_rand_instr_stream_3
-                  srli       s10, t6, 10
-                  lbu        t4, 636(a4)
-                  sb         s3, 373(a4)
-                  c.srli     a2, 26
-                  c.or       s1, s1
-                  c.addi     s1, 6
-                  c.addi     t5, 31
-                  auipc      t2, 668207
-                  c.addi     a7, 1
-                  lh         a7, 985(a4)
-                  c.srli     a0, 28
-                  lb         zero, -1814(a4)
-                  sltu       a1, t6, s2
-                  lh         t5, -1843(a4)
-                  lb         a6, 885(a4)
-                  lb         zero, -1805(a4)
-                  c.addi     a7, -15
-                  c.slli     s11, 2
-                  sb         s2, -1790(a4)
-                  c.addi     s2, 31
-                  fence
-                  andi       a5, a2, 698
-                  lhu        s0, -2039(a4)
-                  c.srai     a5, 28
-                  sb         t5, 509(a4)
-                  mul        s9, s0, s2
-                  c.addi     a2, 28
-                  c.slli     s7, 27
-                  c.addi     t4, -2
-                  c.addi     s3, -20
-                  c.addi     a3, 15
-                  c.addi     t2, -1
-                  lb         s8, -936(a4)
-                  sb         t6, -34(a4)
-                  c.srai     a0, 14
-                  c.lui      a0, 4
-                  sh         s9, -647(a4)
-                  lui        s1, 645195
-                  sh         s8, -297(a4)
-                  lui        a6, 249393
-                  lhu        t5, 1221(a4) #end riscv_load_store_rand_instr_stream_3
-                  c.lui      t6, 18
-                  c.lui      a6, 22
-                  auipc      s11, 436868
-                  c.slli     t5, 28
-                  rem        t2, s5, a3
-                  c.or       a3, a4
-                  addi       t1, t6, -904
-                  sll        s5, t6, t5
-                  slli       s10, s8, 3
-                  lui        s3, 645628
-                  c.srai     a1, 19
-                  c.addi     s3, 4
-                  c.addi     s6, 25
-                  la         a3, kernel_data_page_0+2537 #start riscv_load_store_rand_instr_stream_2
-                  lbu        a0, 1533(a3)
-                  lb         a5, -762(a3)
-                  sb         s2, 144(a3)
-                  c.or       a0, a3
-                  sltu       a7, t0, gp
-                  lbu        s4, -1956(a3)
-                  add        s8, t1, tp
-                  lb         s7, -1654(a3)
-                  sb         s8, -765(a3)
-                  lh         s4, -1997(a3)
-                  lb         s1, 1002(a3)
-                  c.slli     a6, 4
-                  c.addi     t1, 6
-                  sb         tp, -802(a3)
-                  c.srai     a4, 23
-                  lui        a4, 262474
-                  lb         s10, -586(a3)
-                  lbu        s1, 292(a3)
-                  lb         s11, -757(a3)
-                  sh         t3, -799(a3)
-                  sw         t4, -105(a3)
-                  lb         s0, 346(a3)
-                  lbu        a0, -1971(a3)
-                  c.addi     a2, -31
-                  c.lui      s6, 14
-                  lui        s8, 860298
-                  lb         t3, 1418(a3) #end riscv_load_store_rand_instr_stream_2
-                  lui        s1, 344664
-                  auipc      a2, 904143
-                  c.addi     t3, -21
-                  c.addi     t5, -23
-                  auipc      s11, 343901
-                  add        s6, zero, a5
-                  slti       a6, s4, 37
-                  auipc      a1, 631189
-                  c.srai     s1, 15
-                  la         s7, kernel_data_page_1+2281 #start riscv_load_store_rand_instr_stream_1
-                  c.addi     t4, -8
-                  auipc      s6, 198280
-                  auipc      s0, 800727
-                  c.lui      s5, 19
-                  auipc      a6, 728725
-                  sb         sp, 268(s7)
-                  c.slli     s5, 26
-                  lb         zero, -652(s7)
-                  c.addi     t4, -11
-                  lb         a6, -214(s7)
-                  sb         s10, 1668(s7)
-                  c.srai     a1, 26
-                  auipc      t1, 306634
-                  c.mv       s3, s2
-                  c.addi     a7, -14
-                  c.addi     s8, 24
-                  c.and      s1, s0
-                  lbu        t1, 556(s7)
-                  c.xor      a0, s1
-                  lbu        t2, -1372(s7)
-                  c.addi     s9, 24
-                  sb         t0, 188(s7)
-                  c.slli     s6, 11
-                  sb         s1, -249(s7)
-                  c.addi     t5, -14
-                  c.li       a6, 21
-                  sb         s8, -745(s7)
-                  c.srai     a4, 15
-                  auipc      s5, 597192
-                  add        s5, a3, a3
-                  lh         a7, -1005(s7)
-                  auipc      zero, 349376
-                  sub        a4, a6, a0
-                  lbu        a3, 53(s7)
-                  auipc      a1, 323523
-                  c.addi     a0, 21
-                  c.addi     s6, -6
-                  lui        s10, 339222
-                  c.addi     a6, 17
-                  lh         s11, -1935(s7)
-                  lbu        s8, -1008(s7)
-                  lb         a4, -426(s7) #end riscv_load_store_rand_instr_stream_1
-                  auipc      s7, 731599
-                  lui        zero, 342309
-                  c.addi     s9, -4
-                  auipc      a2, 209561
-                  auipc      s6, 172073
-                  c.addi     t5, -2
-                  lui        a3, 541333
-                  andi       t2, s2, -735
-                  c.lui      t4, 11
-                  bge        s6, s9, 244f
-                  auipc      s10, 988590
-                  xori       s7, s2, 861
-                  c.add      a2, a4
-                  c.nop
-                  auipc      s3, 618873
-                  c.lui      s10, 30
-                  auipc      a7, 411801
-                  c.srai     a1, 5
-                  auipc      s11, 94283
-                  c.addi     s8, 12
-                  c.srli     a3, 27
-                  lui        s6, 391376
-                  srli       a6, t1, 23
-                  c.srli     a5, 20
-                  auipc      t4, 249893
-244:              c.sub      a5, a5
-                  auipc      s1, 985670
-                  c.lui      s0, 1
-                  c.addi     a5, -8
-                  c.addi     a2, 22
-                  fence
-                  c.addi     a3, 26
-                  sub        gp, zero, t1
-                  c.lui      a6, 15
-                  c.srli     a2, 5
-                  auipc      s3, 810267
-                  auipc      a4, 372737
-                  lui        t1, 173595
-                  addi       s11, s9, 144
-                  c.srli     a2, 1
-                  lui        gp, 785757
-                  c.srai     a2, 9
-                  c.lui      t2, 11
-                  c.addi     s3, 2
-                  sltiu      t3, s1, 574
-                  c.slli     t4, 21
-                  lui        t3, 466465
-                  slt        a2, s11, t5
-                  c.xor      a3, a0
-                  c.li       t3, 31
-                  c.lui      t3, 2
-                  div        a2, a1, tp
-                  c.lui      s0, 12
-                  lui        a1, 598810
-                  c.addi     a1, 23
-                  auipc      a2, 840977
-                  c.addi     t5, -25
-                  auipc      s0, 1013910
-                  c.addi     s4, -2
-                  c.lui      s5, 9
-                  c.nop
-                  srai       t2, s4, 30
-                  c.xor      a5, a1
-                  c.lui      a6, 18
-                  divu       s9, zero, s4
-                  lui        s2, 5037
-                  bne        s8, t0, 305f
-                  c.lui      s10, 4
-                  c.lui      t1, 24
-                  auipc      a0, 287641
-                  c.slli     s6, 17
-                  auipc      t5, 10161
-                  rem        t5, t5, t0
-                  xor        s0, s2, s6
-                  c.srai     a1, 8
-                  c.srai     s0, 23
-                  c.add      a4, a2
-                  auipc      s5, 941473
-                  c.addi     a4, -15
-                  c.addi     s0, 6
-                  c.addi     s3, 27
-                  lui        s5, 132551
-                  c.srli     a4, 16
-                  lui        a7, 455126
-                  or         a5, a3, a2
-                  add        t6, a6, a1
-305:              c.addi     s8, 25
-                  auipc      s7, 177074
-                  add        a0, gp, s3
-                  c.addi     s9, -27
-                  lui        s7, 998327
-                  auipc      s10, 334964
-                  andi       t3, s4, 468
-                  c.addi     a4, 10
-                  c.addi     s10, -18
-                  lui        t4, 540712
-                  c.addi     t4, -3
-                  c.xor      a0, s1
-                  lui        t1, 756499
-                  c.srli     a5, 22
-                  c.srai     s0, 23
-                  c.srai     s1, 3
-                  c.srli     s1, 20
-                  auipc      a1, 571505
-                  c.addi     a4, -19
-                  lui        s6, 901152
-                  auipc      s0, 924399
-                  auipc      s11, 115717
-                  c.addi     s8, -4
-                  c.srli     a2, 25
-                  lui        t3, 94061
-                  c.addi     s1, -20
-                  lui        gp, 320155
-                  c.srli     s0, 24
-                  c.addi     a1, 3
-                  c.srli     a1, 19
-                  auipc      t1, 785078
-                  c.addi     t4, -20
-                  lui        a0, 792132
-                  c.addi     t6, -19
-                  c.addi     a5, -1
-                  c.addi     s6, 3
-                  bge        t1, a7, 345f
-                  bltu       ra, s4, 362f
-                  c.srli     a2, 15
-                  c.add      a3, s1
-345:              c.addi     t4, 14
-                  slti       a3, t5, -305
-                  lui        a5, 771065
-                  sll        a3, t6, a4
-                  lui        s5, 689013
-                  bne        a5, t0, 365f
-                  c.addi     s3, 2
-                  auipc      a6, 611057
-                  auipc      a4, 931667
-                  c.addi     a3, 4
-                  bge        s1, t1, 371f
-                  auipc      a2, 990094
-                  lui        s2, 217172
-                  c.srli     a2, 14
-                  lui        a7, 827276
-                  c.addi     t2, 31
-                  lui        s3, 536402
-362:              fence
-                  lui        a0, 496235
-                  auipc      s10, 187410
-365:              lui        a6, 81873
-                  c.addi     t1, -26
-                  c.add      a5, a1
-                  c.addi     t3, -7
-                  c.slli     s11, 2
-                  c.slli     a3, 13
-371:              c.srai     a4, 18
-                  c.addi     s11, 19
-                  auipc      a0, 806565
-                  andi       s1, a4, 69
-                  or         a7, tp, a7
-                  auipc      s3, 602867
-                  auipc      t2, 995397
-                  c.addi     t4, -26
-                  c.addi     t6, 5
-                  c.slli     a4, 29
-                  c.addi     a1, -31
-                  c.lui      t1, 23
-                  c.addi     s10, 1
-                  lui        s8, 434256
-                  c.lui      t5, 7
-                  c.slli     s2, 11
-                  xori       s7, tp, -60
-                  c.srai     a1, 8
-                  c.addi     s4, -6
-                  auipc      a3, 666992
-                  c.slli     a3, 23
-                  c.lui      t5, 26
-                  lui        t2, 540186
-                  c.lui      t5, 10
-                  sll        s7, s1, t2
-                  c.and      a2, s0
-                  c.lui      s5, 2
-                  auipc      a2, 424092
-                  c.slli     a3, 1
-                  lw         ra, 4(sp)
-                  lw         t0, 8(sp)
-                  c.srai     a4, 16
-                  sub        s6, t6, t3
-                  c.lui      gp, 3
-                  addi       sp, sp, 16
-                  lui        a6, 359866
-568:              ret
-smode_program:    c.lui      s3, 22
-                  addi       sp, sp, -28
-                  sw         ra, 4(sp)
-                  c.srai     a4, 12
-                  sw         t0, 8(sp)
-                  auipc      s5, 1037305
-                  sub        s0, tp, t5
-                  c.srai     a2, 7
-                  c.addi     t4, 23
-                  lui        t6, 970756
-                  lui        t5, 775092
-                  mulhu      s7, s0, t5
-                  srl        a0, t0, t3
-                  c.addi     a0, -8
-                  blt        s9, a1, 13f
-                  lui        s4, 826922
-                  auipc      s3, 476110
-                  c.srli     s0, 3
-                  auipc      s2, 4639
-13:               c.lui      a7, 22
-                  c.addi     t6, -24
-                  auipc      s11, 102019
-                  c.addi     s2, 3
-                  sra        s8, t5, t4
-                  sub        t5, tp, s1
-                  c.addi     s8, -24
-                  c.addi     a6, 10
-                  c.addi     t1, -28
-                  c.addi     s7, 11
-                  lui        s9, 29154
-                  c.lui      t3, 20
-                  c.addi     a7, -23
-                  auipc      s9, 216368
-                  c.srli     a5, 1
-                  c.addi     s3, -15
-                  lui        s7, 675665
-                  lui        s10, 542476
-                  c.srai     a3, 16
-                  c.srli     a1, 13
-                  c.slli     t6, 25
-                  auipc      a0, 56741
-                  auipc      s0, 473303
-                  c.sub      a4, a5
-                  c.srli     a0, 25
-                  auipc      s5, 674872
-                  bne        a2, t5, 46f
-                  bge        a2, zero, 51f
-                  c.addi     a6, 20
-                  c.addi     a3, 24
-                  c.add      a5, a2
-                  c.addi     s3, -7
-                  c.slli     t3, 4
-46:               c.addi     s7, 5
-                  c.srli     a3, 16
-                  c.addi     s6, -7
-                  sltu       a6, a7, a1
-                  auipc      a3, 135879
-51:               c.addi     s8, -20
-                  auipc      a4, 186409
-                  c.slli     t2, 13
-                  c.addi     a2, -8
-                  c.addi     gp, 29
-                  c.addi     s5, 10
-                  sub        t5, s6, zero
-                  c.srli     a1, 9
-                  c.addi     a0, 26
-                  c.slli     s9, 8
-                  c.srai     s1, 30
-                  lui        s11, 94082
-                  lui        s10, 177632
-                  c.addi     s5, 19
-                  c.addi     s6, 4
-                  c.beqz     a1, 81f
-                  c.srli     a3, 6
-                  fence.i
-                  c.lui      t6, 1
-                  sll        a5, s7, s11
-                  c.addi     a4, -19
-                  bgeu       a1, s5, 76f
-                  lui        a6, 692146
-                  c.slli     a2, 25
-                  c.addi     s2, 20
-76:               c.srai     s0, 14
-                  c.srai     s0, 27
-                  c.srli     a5, 24
-                  c.addi     t2, -28
-                  c.lui      s10, 23
-81:               c.addi     s10, -19
-                  c.addi     t5, -8
-                  c.addi     s9, 15
-                  c.slli     s5, 29
-                  c.or       s1, a1
-                  rem        a3, t5, s6
-                  auipc      t1, 161159
-                  c.slli     a1, 11
-                  bgeu       a3, s9, 98f
-                  c.addi     s6, 10
-                  c.srli     a4, 25
-                  c.slli     s4, 16
-                  c.and      a4, a2
-                  c.addi     s9, 2
-                  mulh       t6, a6, gp
-                  c.addi     t1, 18
-                  c.addi     gp, -10
-98:               c.slli     a5, 18
-                  sltiu      s0, t4, -796
-                  lui        t4, 725426
-                  srli       s5, a7, 16
-                  c.addi     t5, 17
-                  c.slli     a6, 1
-                  auipc      a0, 9977
-                  remu       a3, a0, s11
-                  xor        a5, zero, a3
-                  lui        s10, 352214
-                  c.lui      t3, 30
-                  c.slli     a0, 21
-                  c.addi     a4, 1
-                  c.addi     a3, 30
-                  lui        t6, 766527
-                  c.srli     a3, 29
-                  c.addi     a3, -14
-                  nop
-                  and        a3, s5, a5
-                  c.addi     s1, -21
-                  bltu       t5, s4, 123f
-                  c.lui      s8, 14
-                  ori        t5, t6, -164
-                  sltu       s11, t5, t3
-                  c.addi     a4, 21
-123:              c.srai     s1, 21
-                  c.srli     a5, 31
-                  c.srli     a1, 8
-                  andi       a0, a1, 633
-                  divu       s5, a2, s3
-                  fence
-                  auipc      a3, 462317
-                  c.slli     s2, 26
-                  lui        s5, 752404
-                  auipc      t2, 374602
-                  la         s8, kernel_data_page_0+2002 #start riscv_load_store_rand_instr_stream_3
-                  sb         a2, 391(s8)
-                  c.slli     t2, 31
-                  c.srai     a0, 26
-                  lbu        t4, -1132(s8)
-                  c.lui      a7, 25
-                  c.addi     s2, 13
-                  lbu        s5, 1413(s8)
-                  auipc      a4, 546436
-                  rem        t6, s5, a7
-                  c.addi     s5, -27
-                  lw         s3, -722(s8)
-                  c.addi     s3, -10
-                  c.and      a3, s0
-                  auipc      a3, 730366
-                  sb         zero, 1821(s8)
-                  c.lui      a3, 22
-                  lb         a6, -851(s8)
-                  lb         s0, -1828(s8)
-                  sw         gp, 1426(s8)
-                  c.lui      s1, 5
-                  lw         a1, 1110(s8)
-                  lbu        t4, 803(s8)
-                  lb         t1, 1700(s8)
-                  c.addi     a4, -8
-                  lb         a6, 1241(s8)
-                  sb         s7, -1739(s8)
-                  c.addi     a5, -4
-                  c.addi     s7, -2
-                  c.srli     a0, 11
-                  lhu        s4, -1020(s8)
-                  lbu        s2, -657(s8)
-                  sltiu      t1, s1, 336
-                  lbu        t1, 69(s8)
-                  lbu        s11, 277(s8)
-                  c.addi     s0, -31
-                  sh         sp, -1556(s8)
-                  lui        s7, 619794
-                  lb         s2, 277(s8)
-                  xor        a7, a5, s7
-                  c.srli     s0, 10
-                  c.srli     a1, 13
-                  lb         a0, -1925(s8) #end riscv_load_store_rand_instr_stream_3
-                  c.addi     t4, -20
-                  bge        s6, zero, 136f
-                  c.bnez     a2, 142f
-136:              beq        sp, s2, 137f
-137:              c.srai     a1, 31
-                  c.srai     s0, 25
-                  slli       s3, zero, 8
-                  c.addi     a5, -11
-                  lui        s3, 5433
-142:              auipc      t2, 297040
-                  auipc      s2, 212751
-                  c.slli     s1, 26
-                  c.addi     a6, -5
-                  c.slli     a0, 13
-                  lui        a1, 888920
-                  c.addi     a5, -18
-                  c.slli     s10, 13
-                  c.addi     s1, -26
-                  c.addi     s10, -20
-                  lui        a4, 1046828
-                  xori       t5, a6, -219
-                  c.addi     s7, 15
-                  c.beqz     a2, 165f
-                  c.addi     s2, -19
-                  c.or       a5, a2
-                  c.addi     a6, -25
-                  c.addi     a1, 4
-                  c.slli     gp, 30
-                  c.addi     s10, 1
-                  lui        s10, 928340
-                  slli       s6, s10, 1
-                  auipc      t1, 321084
-165:              c.addi     a2, 10
-                  slt        a5, tp, t4
-                  sub        s3, tp, sp
-                  auipc      s5, 168951
-                  lui        s3, 605837
-                  c.beqz     s0, 176f
-                  auipc      gp, 731510
-                  c.addi     s1, -17
-                  c.addi     a7, 23
-                  auipc      t4, 840696
-                  c.srai     a3, 12
-176:              or         t6, tp, s11
-                  lui        s3, 899602
-                  rem        s3, t6, t0
-                  c.addi     s10, 19
-                  auipc      a0, 863481
-                  auipc      s5, 844234
-                  c.srli     a1, 28
-                  sra        t4, s5, s9
-                  c.srai     a5, 24
-                  sra        s3, s7, s9
-                  lui        s3, 142006
-                  c.addi     a7, -17
-                  lui        s2, 617024
-                  auipc      s10, 691485
-                  lui        a4, 343649
-                  divu       a3, a4, gp
-                  c.addi     a1, -26
-                  c.addi     a7, 15
-                  fence
-                  sub        a2, a6, a4
-                  auipc      s6, 285892
-                  c.srai     a5, 20
-                  c.slli     a5, 8
-                  auipc      t6, 358266
-                  c.addi     a5, -9
-                  c.add      a3, s1
-                  beq        s2, t3, 213f
-                  c.slli     a5, 1
-                  c.addi     a3, 25
-                  c.srai     a5, 20
-                  c.addi     s9, -21
-                  auipc      s5, 1022214
-                  c.addi     t3, -25
-                  lui        a4, 111769
-                  c.lui      s1, 25
-                  c.srli     a1, 30
-                  c.or       s1, s0
-213:              c.slli     s0, 20
-                  auipc      zero, 274584
-                  c.addi     s8, 7
-                  c.addi     t2, 26
-                  c.addi     s1, -21
-                  c.addi     s2, -16
-                  fence
-                  auipc      s11, 878135
-                  bge        s10, t4, 237f
-                  auipc      s0, 439613
-                  mul        s7, s9, a1
-                  mul        s8, a7, s5
-                  lui        s1, 450101
-                  c.srai     a3, 10
-                  c.addi     t5, -20
-                  c.addi     t1, -21
-                  c.addi     a1, 27
-                  mulhu      s10, a3, ra
-                  c.addi     t3, -28
-                  mulhsu     t1, s3, t2
-                  c.addi     s0, 3
-                  srli       t4, a6, 13
-                  c.slli     t4, 20
-                  lui        s11, 455114
-237:              c.srli     a2, 3
-                  c.addi     a2, 30
-                  c.addi     a3, -14
-                  xor        s3, s10, s6
-                  c.srli     a4, 25
-                  c.slli     a1, 1
-                  c.srli     a3, 20
-                  c.lui      a1, 30
-                  c.addi     s9, 1
-                  sra        s4, s9, t2
-                  lui        t3, 396236
-                  auipc      s2, 707596
-                  c.srli     a5, 10
-                  c.addi     a3, 24
-                  c.lui      s0, 7
-                  c.srai     a4, 6
-                  la         a5, kernel_data_page_0+1787 #start riscv_load_store_rand_instr_stream_0
-                  lb         s10, 1612(a5)
-                  lbu        s4, 242(a5)
-                  c.slli     a0, 10
-                  nop
-                  c.srli     a3, 3
-                  c.lui      a6, 3
-                  c.lui      t3, 22
-                  c.addi     s6, 20
-                  lui        a0, 508582
-                  c.addi     s0, -10
-                  lbu        s7, -1430(a5)
-                  c.srli     a4, 10
-                  lbu        s7, -1734(a5)
-                  lui        s10, 58698
-                  auipc      s1, 119437
-                  sh         a5, 467(a5)
-                  c.lui      s2, 23
-                  lhu        s1, 113(a5)
-                  div        s10, sp, a1
-                  sb         t2, -1488(a5)
-                  nop
-                  sh         gp, -1509(a5)
-                  lb         a7, 1036(a5)
-                  c.addi     a7, -26
-                  c.addi     s4, -8
-                  lhu        a6, -709(a5)
-                  or         s8, s7, s7
-                  c.slli     gp, 5
-                  c.addi     s8, -5
-                  lui        s9, 447944
-                  c.srai     s1, 20
-                  c.srli     a2, 5
-                  c.slli     s5, 28
-                  c.srai     s0, 27
-                  auipc      s11, 904047
-                  c.srai     a3, 15
-                  lbu        s11, 1009(a5)
-                  lb         s3, 1929(a5) #end riscv_load_store_rand_instr_stream_0
-                  lui        a4, 929818
-                  c.srli     a5, 27
-                  c.bnez     s1, 274f
-                  c.addi     a4, 22
-                  c.addi     s1, -7
-                  c.addi     t2, -31
-                  c.li       s10, 0
-                  lui        s6, 89265
-                  c.addi     a0, -14
-                  c.srai     s1, 24
-                  c.addi     s8, -13
-                  lui        t6, 451359
-                  c.and      a5, s0
-                  bgeu       tp, t0, 270f
-                  lui        t4, 580146
-                  c.addi     a6, -12
-                  c.addi     t2, -5
-270:              c.addi     t2, -22
-                  c.addi     t3, 7
-                  c.srli     s1, 29
-                  c.addi     s4, -3
-274:              bge        s6, sp, 291f
-                  c.addi     s1, 12
-                  auipc      s6, 1038806
-                  c.addi     s6, -4
-                  c.addi     s4, 16
-                  auipc      s0, 92163
-                  lui        a2, 757430
-                  remu       s10, gp, s1
-                  lui        t6, 486181
-                  c.srai     a5, 16
-                  c.addi     t4, -12
-                  c.addi     s9, 6
-                  c.lui      gp, 23
-                  lui        a0, 824894
-                  auipc      a2, 726770
-                  c.addi     a6, 29
-                  c.lui      a6, 29
-291:              c.addi     t4, 1
-                  c.srai     a4, 16
-                  lui        t4, 23609
-                  sltiu      s5, s2, 656
-                  c.srai     s0, 7
-                  la         s5, kernel_data_page_1+1220 #start riscv_load_store_rand_instr_stream_1
-                  lui        s10, 954890
-                  c.and      s1, a2
-                  lui        a5, 485728
-                  lw         s7, -948(s5)
-                  sw         a6, 1804(s5)
-                  auipc      t6, 993810
-                  lb         s2, 1523(s5)
-                  sb         t1, 715(s5)
-                  sb         t6, 775(s5)
-                  c.addi     a1, 15
-                  auipc      s9, 877148
-                  lhu        s9, 752(s5)
-                  c.addi     s3, -26
-                  c.and      s1, a5
-                  mulhu      s1, s6, s7
-                  lbu        t5, -611(s5)
-                  sb         a2, 1720(s5)
-                  auipc      a6, 773986
-                  srai       s9, tp, 21
-                  c.or       s0, a4
-                  c.addi     s7, 28
-                  or         t2, zero, tp
-                  c.xor      a1, a4
-                  auipc      t3, 311531
-                  lh         t1, -672(s5)
-                  lh         s10, 1552(s5)
-                  lb         a6, 245(s5)
-                  c.mv       s3, s0
-                  sra        t1, s3, t0
-                  auipc      a4, 510224
-                  lhu        s11, -1082(s5)
-                  lui        s9, 77963
-                  auipc      t4, 572054
-                  lbu        s2, -483(s5)
-                  auipc      s3, 902637
-                  sb         ra, 2023(s5)
-                  c.srli     a2, 10
-                  sltiu      a7, a5, 78
-                  c.srai     a3, 29
-                  sb         s0, 137(s5) #end riscv_load_store_rand_instr_stream_1
-                  auipc      t1, 139925
-                  lui        s1, 715750
-                  auipc      t4, 752277
-                  lui        s2, 422756
-                  c.lui      t4, 5
-                  remu       zero, a0, s0
-                  lui        s2, 399740
-                  slli       s7, a5, 23
-                  blt        t3, a0, 311f
-                  lui        t6, 1047014
-                  c.lui      s9, 25
-                  sll        s7, s8, s5
-                  c.srli     s0, 16
-                  c.addi     a3, -3
-                  c.lui      s3, 19
-311:              slli       a6, s6, 2
-                  c.srai     a3, 19
-                  bge        s5, s10, 329f
-                  c.addi     t4, -6
-                  c.addi     a0, 19
-                  c.srli     a1, 27
-                  auipc      a0, 68806
-                  c.addi     a4, -13
-                  lui        t1, 967159
-                  c.addi     a5, 2
-                  c.srai     a3, 24
-                  andi       a2, t5, 552
-                  c.addi     s1, 27
-                  nop
-                  c.addi     s9, 30
-                  lui        s5, 81954
-                  c.nop
-                  c.addi     a5, -26
-329:              xor        s8, t2, gp
-                  slli       s9, a1, 24
-                  c.addi     s7, 24
-                  ori        a3, s3, -85
-                  c.addi     t1, 4
-                  c.xor      a2, a0
-                  add        s7, ra, a4
-                  slt        gp, s10, s10
-                  c.srli     a5, 9
-                  c.slli     s8, 3
-                  lui        a4, 1023096
-                  c.addi     a4, -29
-                  c.li       t5, -10
-                  lui        s7, 981347
-                  auipc      t3, 253618
-                  div        a6, t5, gp
-                  auipc      t4, 196771
-                  auipc      s5, 741845
-                  div        a7, s3, a7
-                  auipc      s7, 224360
-                  lui        s0, 549848
-                  c.srai     a3, 9
-                  or         s1, s8, t6
-                  c.addi     s6, -14
-                  c.addi     t6, -14
-                  lui        t4, 236555
-                  c.srai     a5, 6
-                  lui        s7, 311862
-                  sub        s4, a6, t5
-                  c.addi     s7, -4
-                  c.lui      s4, 2
-                  and        t1, t6, s9
-                  lui        a0, 75957
-                  c.addi     a5, -30
-                  auipc      zero, 175502
-                  lui        a2, 466881
-                  lui        s2, 24063
-                  divu       t6, s5, a4
-                  la         s10, kernel_data_page_0+2143 #start riscv_load_store_rand_instr_stream_2
-                  rem        t2, t5, t4
-                  xor        gp, a6, gp
-                  sra        t5, s7, t6
-                  nop
-                  auipc      a4, 58689
-                  c.srli     a1, 17
-                  sb         gp, -2044(s10)
-                  c.lui      a0, 17
-                  lw         a7, 1489(s10)
-                  auipc      s5, 203657
-                  sb         tp, -1262(s10)
-                  sh         s8, 1413(s10)
-                  lb         a2, -1477(s10)
-                  lbu        a4, 1910(s10)
-                  sll        a0, a0, t4
-                  auipc      s9, 890883
-                  lb         t4, 1888(s10)
-                  lb         t4, -1603(s10)
-                  sh         s11, 787(s10)
-                  lbu        s3, -1113(s10)
-                  c.srai     a0, 1
-                  sh         ra, 1753(s10)
-                  lb         a0, -1614(s10)
-                  c.addi     s6, 15
-                  lb         gp, 1677(s10)
-                  lhu        s3, -1493(s10)
-                  c.addi     a5, -1
-                  sb         s8, 1008(s10)
-                  c.or       a2, s0
-                  c.addi     t1, 19
-                  srl        a2, s7, t2
-                  lhu        s1, 359(s10)
-                  auipc      s11, 1028714
-                  fence.i
-                  lb         s6, -1546(s10)
-                  sb         s3, 880(s10)
-                  lbu        gp, 1260(s10) #end riscv_load_store_rand_instr_stream_2
-                  sra        gp, a5, a7
-                  c.lui      s10, 11
-                  auipc      t2, 556397
-                  c.addi     a3, -24
-                  auipc      s8, 321650
-                  c.addi     t1, -7
-                  c.addi     a3, 13
-                  c.lui      a3, 21
-                  c.addi     a4, -8
-                  c.addi     gp, -16
-                  c.lui      t5, 16
-                  bge        zero, zero, 380f
-                  sra        gp, s2, s8
-380:              addi       a2, s10, -862
-                  c.srli     a2, 21
-                  auipc      a1, 680635
-                  c.srli     a3, 4
-                  divu       a6, s6, t3
-                  auipc      gp, 679090
-                  lui        s4, 1029578
-                  c.srli     a2, 26
-                  c.srai     s0, 14
-                  c.addi     t4, 15
-                  c.srli     s1, 3
-                  c.srai     a3, 31
-                  c.addi     a5, -10
-                  remu       s8, gp, t0
-                  c.addi     a1, 20
-                  c.lui      s4, 23
-                  lui        s1, 638756
-                  c.addi     s3, -11
-                  c.addi     a2, 12
-                  slli       a6, s6, 4
-                  c.srai     a3, 11
-                  lui        a6, 408342
-                  auipc      gp, 113507
-                  lw         ra, 4(sp)
-                  c.srai     a3, 1
-                  lw         t0, 8(sp)
-                  addi       sp, sp, 28
-                  c.srli     a5, 20
-                  or         t3, s10, t5
-                  c.srli     a3, 30
-                  sltiu      a4, t6, 46
-                  c.srli     a1, 12
-579:              ret
-smode_ls_umem_program:bne        a4, s3, smode_ls_umem_program_stack_p
-                  auipc      s6, 319544
-smode_ls_umem_program_stack_p:addi       sp, sp, -56
-                  sw         ra, 4(sp)
-                  c.slli     a6, 15
-                  sw         t0, 8(sp)
-                  srl        s8, zero, ra
-                  c.lui      t2, 27
-                  c.srai     a4, 11
-                  c.addi     a0, -1
-                  c.addi     s9, -31
-                  lui        s9, 889383
-                  c.slli     s8, 20
-                  c.lui      s4, 19
-                  c.slli     a0, 16
-                  auipc      s11, 324830
-                  lui        t4, 62171
-                  c.srai     a4, 25
-                  fence.i
-                  mulhu      zero, a4, t0
-                  c.srli     a1, 29
-                  c.addi     a5, 10
-                  c.slli     a6, 21
-                  c.addi     s8, -25
-                  c.addi     a6, -23
-                  c.addi     a5, 28
-                  c.addi     a3, 2
-                  c.slli     s2, 13
-                  c.srli     a4, 19
-                  c.add      a1, a2
-                  auipc      gp, 970329
-                  lui        a6, 424558
-                  c.addi     a3, 30
-                  c.addi     s6, 17
-                  lui        a5, 384221
-                  c.addi     t5, 10
-                  lui        s8, 853827
-                  c.addi     a3, 4
-                  c.slli     a1, 5
-                  c.addi     s9, -4
-                  c.mv       s7, s2
-                  c.lui      gp, 17
-                  fence.i
-                  c.slli     a1, 23
-                  lui        zero, 836261
-                  blt        s7, ra, 43f
-                  c.lui      t5, 25
-                  srai       s11, t4, 10
-                  div        gp, s8, a5
-                  addi       s8, t4, -253
-                  c.addi     s6, -11
-43:               bltu       a6, a2, 57f
-                  c.srai     s0, 20
-                  auipc      s0, 534619
-                  c.andi     a4, -11
-                  c.addi     s1, 5
-                  c.srai     s1, 21
-                  c.srai     a1, 31
-                  slt        a3, a3, ra
-                  c.addi     s1, 23
-                  c.srli     a4, 4
-                  c.slli     a2, 14
-                  c.addi     s6, 4
-                  bgeu       t1, gp, 74f
-                  lui        t6, 16790
-57:               c.slli     t4, 22
-                  c.addi     s10, 5
-                  lui        a6, 277040
-                  c.slli     t3, 28
-                  c.slli     a0, 24
-                  slti       a3, s3, -820
-                  lui        s0, 208965
-                  c.srai     a3, 17
-                  auipc      a7, 98462
-                  auipc      a0, 1023559
-                  c.addi     a0, 16
-                  c.addi     s5, 9
-                  sltu       a6, a7, s10
-                  mulhu      s8, a6, zero
-                  lui        t4, 1000117
-                  lui        a5, 436226
-                  c.addi     t5, -23
-74:               c.srai     a2, 18
-                  lui        s6, 1037687
-                  div        s6, a0, a0
-                  c.addi     a2, 7
-                  sltiu      s1, a5, -906
-                  sra        s1, t6, s6
-                  c.addi     s9, -30
-                  auipc      a7, 733681
-                  c.add      a0, a1
-                  c.addi     t5, 14
-                  c.addi     t3, -26
-                  auipc      s7, 308369
-                  xor        s9, t1, t0
-                  c.add      a2, a2
-                  lui        t1, 1025608
-                  lui        t4, 863360
-                  c.addi     s5, 13
-                  c.srai     a4, 30
-                  auipc      t6, 631840
-                  ori        s5, s7, -462
-                  fence
-                  c.slli     a2, 2
-                  c.addi     a4, 2
-                  c.srai     s0, 30
-                  c.addi     s7, 13
-                  c.srai     a1, 17
-                  auipc      s5, 123438
-                  auipc      t3, 642928
-                  lui        s4, 761911
-                  divu       s4, a2, t3
-                  c.addi     s0, 15
-                  c.srli     a5, 29
-                  c.srai     a2, 1
-                  auipc      a0, 1039052
-                  auipc      s3, 590015
-                  divu       t3, sp, t4
-                  mulhu      a1, s11, gp
-                  c.srli     a3, 27
-                  nop
-                  sltiu      s4, zero, 306
-                  mul        s3, gp, s10
-                  lui        t3, 205731
-                  la         s6, kernel_data_page_0+1184 #start riscv_load_store_rand_instr_stream_1
-                  lhu        t4, -146(s6)
-                  lui        t6, 569171
-                  c.addi     s7, -15
-                  lw         a2, -668(s6)
-                  c.srli     a4, 27
-                  c.srai     a5, 3
-                  lui        s3, 935624
-                  c.or       a2, s1
-                  lbu        t2, -886(s6)
-                  sll        t1, a6, s0
-                  nop
-                  c.slli     s0, 8
-                  srai       t2, s3, 17
-                  c.lui      t6, 3
-                  lui        s11, 293045
-                  lb         a0, -1119(s6)
-                  lhu        s1, -1022(s6)
-                  c.srai     a4, 25
-                  lbu        t2, 767(s6)
-                  c.lui      s11, 16
-                  c.slli     t2, 21
-                  lui        s5, 728792
-                  addi       a6, a0, -757
-                  c.addi     gp, 25
-                  auipc      t6, 84758
-                  lh         t2, 1608(s6)
-                  sb         a0, 207(s6)
-                  c.addi     s4, 7
-                  lb         s9, 1954(s6)
-                  addi       s2, a4, -353
-                  c.srli     s0, 12
-                  sb         t3, 2039(s6)
-                  c.addi     s8, -27
-                  lb         a6, 432(s6)
-                  srli       a4, s6, 19
-                  lbu        a6, 1630(s6)
-                  c.addi     s0, -23
-                  ori        s5, s1, 497
-                  sb         t5, -319(s6)
-                  c.addi     s1, -14
-                  c.srli     a5, 31
-                  lb         t2, 1298(s6) #end riscv_load_store_rand_instr_stream_1
-                  lui        s4, 556939
-                  auipc      s0, 130454
-                  auipc      s10, 391449
-                  c.addi     t3, -16
-                  c.slli     a7, 17
-                  auipc      a7, 595694
-                  c.slli     t3, 27
-                  c.slli     s5, 16
-                  auipc      a2, 563380
-                  lui        s10, 108975
-                  blt        s4, s2, 127f
-127:              c.addi     a2, 1
-                  c.srai     a5, 13
-                  c.srli     a4, 1
-                  c.addi     a3, -1
-                  andi       s3, s5, -302
-                  c.slli     a1, 28
-                  lui        t3, 53241
-                  c.lui      t4, 11
-                  c.or       a5, a4
-                  c.addi     a6, 2
-                  lui        s1, 832189
-                  lui        s9, 73927
-                  c.addi     a3, -27
-                  c.addi     s7, -15
-                  lui        a7, 700114
-                  c.srli     a4, 17
-                  sra        s0, s1, s10
-                  c.addi     t5, 1
-                  c.slli     a5, 12
-                  andi       a5, s6, -985
-                  bgeu       gp, t6, 167f
-                  addi       a2, a2, -607
-                  auipc      s11, 503040
-                  c.addi     t4, -1
-                  lui        a3, 436025
-                  c.addi     t5, -15
-                  c.addi     gp, -17
-                  c.mv       s10, tp
-                  c.srli     a1, 4
-                  c.srai     s1, 30
-                  c.addi     a1, -18
-                  c.addi     t3, 24
-                  auipc      a2, 113320
-                  c.lui      gp, 19
-                  fence
-                  c.addi     s10, -9
-                  sll        s7, s4, s0
-                  c.lui      t5, 24
-                  lui        s2, 872195
-                  c.srli     a1, 17
-167:              lui        t5, 588025
-                  srl        s0, a6, a1
-                  c.srli     a3, 20
-                  xor        zero, a6, t2
-                  lui        s8, 596859
-                  c.lui      a7, 8
-                  auipc      a6, 532888
-                  auipc      t4, 258271
-                  auipc      s6, 366145
-                  c.addi     s3, 26
-                  c.lui      a4, 13
-                  auipc      s6, 66244
-                  lui        s9, 221853
-                  c.addi     a1, 13
-                  auipc      s3, 228780
-                  c.addi     a7, -17
-                  c.slli     s8, 18
-                  remu       s6, ra, zero
-                  c.slli     t4, 31
-                  c.addi     s11, -21
-                  c.slli     t6, 12
-                  c.addi     s10, -22
-                  srai       a7, t5, 16
-                  c.addi     t3, -15
-                  c.srli     a3, 5
-                  bne        gp, t1, 205f
-                  c.addi     a3, 3
-                  c.addi     t4, 22
-                  c.slli     s11, 11
-                  c.addi     s11, 13
-                  c.srli     a0, 21
-                  c.addi     gp, 24
-                  c.addi     t4, -21
-                  c.srai     a0, 27
-                  divu       s8, t3, s5
-                  sra        s11, a4, a2
-                  lui        a0, 559336
-                  auipc      s4, 862930
-                  la         s3, kernel_data_page_0+1250 #start riscv_load_store_rand_instr_stream_0
-                  sltiu      s5, zero, 678
-                  c.addi     s9, -15
-                  lbu        a6, 1620(s3)
-                  lw         s9, 1794(s3)
-                  lbu        gp, 1533(s3)
-                  and        zero, t6, s11
-                  c.addi     s5, -12
-                  lb         a0, 1527(s3)
-                  sb         a6, 1129(s3)
-                  auipc      s4, 275900
-                  lui        s8, 768375
-                  c.add      a5, a0
-                  c.lui      s8, 12
-                  sb         s10, -1153(s3)
-                  sh         ra, 818(s3)
-                  lb         s8, 1432(s3)
-                  auipc      s6, 515841
-                  c.slli     a6, 28
-                  sb         s4, -229(s3)
-                  lbu        s5, 555(s3)
-                  c.srai     a1, 9
-                  c.addi     s4, 24
-                  c.srai     s0, 24
-                  c.srli     a1, 22
-                  c.lui      t5, 14
-                  lui        a1, 985078
-                  lb         s0, 532(s3)
-                  c.addi     a1, -28
-                  remu       s5, a4, t0
-                  lbu        s8, 796(s3)
-                  ori        s7, t1, 159
-                  lbu        t2, -55(s3)
-                  lb         t6, 1899(s3)
-                  lui        t5, 70725
-                  lh         a4, 1828(s3)
-                  lbu        a0, 1680(s3)
-                  lbu        a1, 1496(s3)
-                  lhu        a2, 236(s3)
-                  c.addi     a6, -3
-                  c.slli     s11, 3
-                  lb         a7, -435(s3)
-                  c.addi     a6, -21
-                  c.addi     s9, -23
-                  c.addi     s0, -3
-                  lbu        a6, 1465(s3) #end riscv_load_store_rand_instr_stream_0
-205:              c.addi     t6, -17
-                  lui        a3, 323779
-                  beq        s6, s8, 208f
-208:              auipc      t3, 300808
-                  lui        zero, 182377
-                  bne        zero, a7, 224f
-                  divu       a5, s8, t2
-                  auipc      zero, 425330
-                  c.addi     t1, 20
-                  bne        s1, s8, 229f
-                  lui        s7, 885352
-                  fence.i
-                  c.addi     t1, -27
-                  sltu       s1, s10, a3
-                  lui        s0, 387937
-                  c.andi     a3, -12
-                  lui        s10, 159508
-                  auipc      t5, 198946
-                  sltiu      a1, a4, 734
-224:              auipc      t1, 405215
-                  xori       s3, s10, -109
-                  andi       zero, a2, 567
-                  c.addi     s9, -11
-                  c.addi     a3, 9
-229:              lui        s6, 879168
-                  lui        t3, 139610
-                  c.lui      s7, 16
-                  auipc      s8, 375273
-                  addi       s10, s6, -275
-                  c.srli     a2, 22
-                  auipc      a0, 292090
-                  c.addi     s4, -13
-                  c.addi     a0, -12
-                  c.addi     a3, -20
-                  c.addi     s3, 24
-                  srai       s3, s5, 10
-                  lui        s7, 378631
-                  blt        t3, a4, 244f
-                  c.addi     gp, -29
-244:              lui        a5, 1036742
-                  lui        s6, 310929
-                  c.lui      s8, 19
-                  c.srli     a2, 20
-                  c.addi     t1, -2
-                  c.addi     s5, -23
-                  c.addi     s7, -3
-                  lui        a0, 1002582
-                  lui        a3, 130125
-                  c.addi     t4, -28
-                  sll        s1, s6, s0
-                  mul        s2, s4, a0
-                  c.addi     t3, 28
-                  c.addi     s7, 19
-                  lui        a6, 388435
-                  lui        s2, 681049
-                  c.srai     a1, 15
-                  c.slli     a1, 21
-                  mul        s10, s7, t0
-                  c.srai     s0, 22
-                  lui        a4, 368207
-                  remu       a7, a5, t5
-                  c.and      a4, s1
-                  div        s5, s6, zero
-                  c.srai     a1, 23
-                  auipc      a3, 102118
-                  c.addi     s10, -14
-                  c.addi     a5, -10
-                  auipc      s4, 858449
-                  c.addi     t2, -25
-                  c.addi     t6, 23
-                  divu       a0, s6, s1
-                  auipc      a5, 508030
-                  c.slli     a7, 1
-                  c.srli     a5, 30
-                  c.addi     t6, -23
-                  c.add      s1, a5
-                  c.addi     a3, 26
-                  c.srli     a0, 17
-                  fence
-                  ori        s5, s3, -752
-                  c.srai     s0, 9
-                  c.addi     t1, 19
-                  mulhu      t4, a6, a4
-                  c.slli     t6, 5
-                  mulhu      s8, s10, t3
-                  lui        s10, 965917
-                  bltu       s6, s2, 295f
-                  c.addi     a0, -5
-                  c.addi     s7, -5
-                  auipc      t6, 977943
-295:              c.srai     s1, 23
-                  c.addi     a7, 17
-                  c.slli     s1, 30
-                  auipc      s2, 724487
-                  srai       a7, s11, 25
-                  c.srli     s0, 3
-                  c.addi     gp, 23
-                  c.and      a3, a4
-                  fence
-                  fence
-                  lui        gp, 474128
-                  auipc      t1, 747784
-                  auipc      s2, 607717
-                  c.sub      s0, s0
-                  add        a7, s9, t6
-                  lui        a5, 74285
-                  c.sub      a5, a4
-                  c.addi     t1, 18
-                  c.slli     s3, 4
-                  c.addi     s3, -2
-                  mulh       a1, ra, s11
-                  la         s6, kernel_data_page_0+2071 #start riscv_load_store_rand_instr_stream_2
-                  lb         a4, 1022(s6)
-                  lbu        s11, -1829(s6)
-                  c.lui      a1, 15
-                  c.lui      a5, 15
-                  lw         t6, 1921(s6)
-                  lbu        s8, 942(s6)
-                  nop
-                  lbu        t4, 1048(s6)
-                  lbu        a6, 1260(s6)
-                  c.srli     a0, 22
-                  lb         s4, 478(s6)
-                  remu       s1, a7, s9
-                  lhu        s0, -541(s6)
-                  c.lui      t4, 8
-                  lb         s7, 11(s6)
-                  sw         s1, 1913(s6)
-                  lhu        a4, 1163(s6)
-                  lui        s11, 334221
-                  c.addi     gp, 17
-                  lh         s1, -1073(s6)
-                  c.or       a0, s0
-                  c.lui      t1, 16
-                  c.srai     s1, 12
-                  lb         s10, 90(s6)
-                  lbu        s5, -819(s6)
-                  c.addi     s11, -30
-                  c.addi     s2, 15
-                  c.xor      a5, a2
-                  lbu        t4, 86(s6)
-                  lbu        a5, 1204(s6)
-                  lb         s10, 382(s6)
-                  c.srai     a3, 30
-                  lh         t2, 1207(s6)
-                  sb         t0, -910(s6)
-                  lbu        a1, 1237(s6)
-                  lb         a6, -544(s6)
-                  lb         s3, -148(s6)
-                  c.addi     gp, 6
-                  c.addi     s1, 15
-                  c.addi     t6, -10
-                  auipc      s10, 1006281
-                  lbu        t4, 226(s6)
-                  lui        a1, 149225
-                  sh         tp, -2015(s6)
-                  lbu        s7, 791(s6) #end riscv_load_store_rand_instr_stream_2
-                  lui        gp, 830315
-                  slti       s4, s9, -618
-                  auipc      s10, 948712
-                  c.lui      s7, 2
-                  lui        t4, 976982
-                  c.addi     s7, -28
-                  lui        s2, 41485
-                  lui        a7, 281498
-                  c.nop
-                  auipc      a4, 354139
-                  lui        a7, 456507
-                  lui        s7, 152167
-                  c.addi     t1, 16
-                  c.lui      s0, 11
-                  divu       a2, a2, zero
-                  c.addi     s0, 17
-                  auipc      a1, 54552
-                  auipc      t6, 401709
-                  c.addi     s2, 31
-                  c.mv       a3, s6
-                  c.addi     t5, -7
-                  c.addi     a2, -3
-                  c.srli     a0, 20
-                  bne        t2, a3, 356f
-                  lui        gp, 553987
-                  c.addi     s7, -26
-                  lui        t2, 653027
-                  srl        zero, t0, s0
-                  lui        t3, 932721
-                  c.slli     s4, 24
-                  c.addi     s10, 23
-                  c.slli     s6, 26
-                  c.srli     a1, 19
-                  lui        s9, 75522
-                  lui        a1, 776604
-                  c.lui      s6, 20
-                  c.addi     s6, 19
-                  c.lui      a7, 7
-                  lui        a0, 841653
-                  c.andi     s1, -29
-356:              srai       a3, t1, 8
-                  mulhsu     a3, a7, s0
-                  c.lui      s10, 7
-                  lui        t2, 784820
-                  c.slli     s7, 31
-                  lui        t5, 356513
-                  slli       s1, ra, 27
-                  lui        t2, 925729
-                  c.srai     a0, 10
-                  c.srli     a4, 1
-                  auipc      s10, 726799
-                  c.srai     a1, 21
-                  lui        s0, 940379
-                  c.addi     s11, 21
-                  lui        a2, 727277
-                  lui        a3, 221342
-                  c.lui      s1, 3
-                  c.slli     s2, 18
-                  auipc      t3, 371865
-                  sll        s4, a4, s3
-                  c.srli     a4, 10
-                  c.addi     t3, 9
-                  c.srli     a1, 4
-                  lui        a2, 1039633
-                  c.srli     a5, 16
-                  sltiu      t4, s3, 819
-                  blt        a0, a5, 387f
-                  xori       a0, s5, -829
-                  c.slli     a6, 14
-                  lui        t2, 222631
-                  la         a7, kernel_data_page_1+2343 #start riscv_load_store_rand_instr_stream_3
-                  lui        a1, 554261
-                  sh         a7, -267(a7)
-                  sb         zero, 1524(a7)
-                  lhu        t2, 763(a7)
-                  lhu        s7, 639(a7)
-                  lbu        s0, -226(a7)
-                  c.srli     a5, 24
-                  sb         t3, 1537(a7)
-                  sb         t3, -280(a7)
-                  c.addi     t3, 5
-                  sb         s7, -646(a7)
-                  lbu        t4, 308(a7)
-                  lbu        t4, -1860(a7)
-                  lb         t2, 1048(a7)
-                  sb         ra, 278(a7)
-                  c.srai     s0, 7
-                  sb         t6, -1698(a7)
-                  lb         a5, -186(a7)
-                  sh         s1, -701(a7)
-                  lui        a4, 169766
-                  lb         t2, -220(a7)
-                  lb         t1, -1326(a7)
-                  lb         a3, -1329(a7)
-                  sh         s8, 209(a7)
-                  c.srli     a5, 14
-                  lbu        zero, 1532(a7)
-                  lbu        s4, -890(a7)
-                  sh         t1, 1387(a7)
-                  c.slli     gp, 12
-                  lb         s1, 798(a7)
-                  sb         ra, -179(a7)
-                  lb         gp, 902(a7)
-                  sltiu      t3, t6, -138
-                  lbu        s10, -2041(a7)
-                  c.addi     t3, -32
-                  c.slli     t5, 4
-                  sh         s7, -953(a7)
-                  c.addi     a5, 8
-                  lb         s3, 166(a7)
-                  sb         s7, -1191(a7) #end riscv_load_store_rand_instr_stream_3
-                  lui        s7, 518449
-387:              auipc      a4, 689994
-                  auipc      t4, 920306
-                  c.addi     a3, -15
-                  remu       a5, s3, tp
-                  c.addi     s2, 25
-                  auipc      s11, 366492
-                  c.srai     s1, 23
-                  c.addi     a3, 19
-                  slti       gp, a1, -988
-                  c.slli     t1, 30
-                  mulhu      a0, s6, a4
-                  c.addi     a7, -7
-                  mulh       t3, sp, zero
-                  c.addi     a6, -30
-                  c.addi     s3, 25
-                  mulh       s3, t3, a7
-                  c.srli     a2, 26
-                  lw         ra, 4(sp)
-                  c.slli     s0, 18
-                  lw         t0, 8(sp)
-                  c.srai     a0, 21
-                  xori       t1, gp, -289
-                  c.addi     a1, 30
-                  c.addi     t2, -32
-                  addi       sp, sp, 56
-                  lui        t5, 33875
-597:              ret
-.align 12
-mtvec_handler:    
-                  csrrw sp, 0x340, sp
-                  add sp, tp, zero
-                  1: addi sp, sp, -128
-                  sw  x0, 0(sp)
-                  sw  x1, 4(sp)
-                  sw  x2, 8(sp)
-                  sw  x3, 12(sp)
-                  sw  x4, 16(sp)
-                  sw  x5, 20(sp)
-                  sw  x6, 24(sp)
-                  sw  x7, 28(sp)
-                  sw  x8, 32(sp)
-                  sw  x9, 36(sp)
-                  sw  x10, 40(sp)
-                  sw  x11, 44(sp)
-                  sw  x12, 48(sp)
-                  sw  x13, 52(sp)
-                  sw  x14, 56(sp)
-                  sw  x15, 60(sp)
-                  sw  x16, 64(sp)
-                  sw  x17, 68(sp)
-                  sw  x18, 72(sp)
-                  sw  x19, 76(sp)
-                  sw  x20, 80(sp)
-                  sw  x21, 84(sp)
-                  sw  x22, 88(sp)
-                  sw  x23, 92(sp)
-                  sw  x24, 96(sp)
-                  sw  x25, 100(sp)
-                  sw  x26, 104(sp)
-                  sw  x27, 108(sp)
-                  sw  x28, 112(sp)
-                  sw  x29, 116(sp)
-                  sw  x30, 120(sp)
-                  sw  x31, 124(sp)
-                  csrr a1, 0x342 # MCAUSE
-                  srli a1, a1, 31
-                  bne a1, x0, mmode_intr_handler
-                  csrr a1, 0x342 # MCAUSE
-                  csrr x31, 0x341 # MEPC
-                  csrr x29, 0x300 # MSTATUS
-                  li a2, 0x8 # ECALL_UMODE
-                  beq a1, a2, ecall_handler
-                  li a2, 0x9 # ECALL_SMODE
-                  beq a1, a2, ecall_handler
-                  li a2, 0xb # ECALL_MMODE
-                  beq a1, a2, ecall_handler
-                  li a2, 0x1
-                  beq a1, a2, pt_fault_handler
-                  li a2, 0x5
-                  beq a1, a2, pt_fault_handler
-                  li a2, 0x7
-                  beq a1, a2, pt_fault_handler
-                  li a2, 0xc
-                  beq a1, a2, pt_fault_handler
-                  li a2, 0xd
-                  beq a1, a2, pt_fault_handler
-                  li a2, 0xf
-                  beq a1, a2, pt_fault_handler
-                  li a2, 0x2 # ILLEGAL_INSTRUCTION
-                  beq a1, a2, illegal_instr_handler
-                  csrr x30, 0x343 # MTVAL
-                  1: jal x1, test_done 
-
-ecall_handler:    
-                  j write_tohost
-illegal_instr_handler:
-                  csrr  x31, mepc
-                  addi  x31, x31, 4
-                  csrw  mepc, x31
-                  lw  x0, 0(sp)
-                  lw  x1, 4(sp)
-                  lw  x2, 8(sp)
-                  lw  x3, 12(sp)
-                  lw  x4, 16(sp)
-                  lw  x5, 20(sp)
-                  lw  x6, 24(sp)
-                  lw  x7, 28(sp)
-                  lw  x8, 32(sp)
-                  lw  x9, 36(sp)
-                  lw  x10, 40(sp)
-                  lw  x11, 44(sp)
-                  lw  x12, 48(sp)
-                  lw  x13, 52(sp)
-                  lw  x14, 56(sp)
-                  lw  x15, 60(sp)
-                  lw  x16, 64(sp)
-                  lw  x17, 68(sp)
-                  lw  x18, 72(sp)
-                  lw  x19, 76(sp)
-                  lw  x20, 80(sp)
-                  lw  x21, 84(sp)
-                  lw  x22, 88(sp)
-                  lw  x23, 92(sp)
-                  lw  x24, 96(sp)
-                  lw  x25, 100(sp)
-                  lw  x26, 104(sp)
-                  lw  x27, 108(sp)
-                  lw  x28, 112(sp)
-                  lw  x29, 116(sp)
-                  lw  x30, 120(sp)
-                  lw  x31, 124(sp)
-                  addi sp, sp, 128
-                  add tp, sp, zero
-                  csrrw sp, 0x340, sp
-                  mret
-
-pt_fault_handler: 
-                  nop
-
-.align 12
-mmode_intr_handler:
-                  csrr  a1, 0x300 # MSTATUS;
-                  csrr  a1, 0x304 # MIE;
-                  csrr  a1, 0x344 # MIP;
-                  csrrc a1, 0x344, a1 # MIP;
-                  lw  x0, 0(sp)
-                  lw  x1, 4(sp)
-                  lw  x2, 8(sp)
-                  lw  x3, 12(sp)
-                  lw  x4, 16(sp)
-                  lw  x5, 20(sp)
-                  lw  x6, 24(sp)
-                  lw  x7, 28(sp)
-                  lw  x8, 32(sp)
-                  lw  x9, 36(sp)
-                  lw  x10, 40(sp)
-                  lw  x11, 44(sp)
-                  lw  x12, 48(sp)
-                  lw  x13, 52(sp)
-                  lw  x14, 56(sp)
-                  lw  x15, 60(sp)
-                  lw  x16, 64(sp)
-                  lw  x17, 68(sp)
-                  lw  x18, 72(sp)
-                  lw  x19, 76(sp)
-                  lw  x20, 80(sp)
-                  lw  x21, 84(sp)
-                  lw  x22, 88(sp)
-                  lw  x23, 92(sp)
-                  lw  x24, 96(sp)
-                  lw  x25, 100(sp)
-                  lw  x26, 104(sp)
-                  lw  x27, 108(sp)
-                  lw  x28, 112(sp)
-                  lw  x29, 116(sp)
-                  lw  x30, 120(sp)
-                  lw  x31, 124(sp)
-                  addi sp, sp, 128
-                  add tp, sp, zero
-                  csrrw sp, 0x340, sp
-                  mret;
-
-.data
-.align 4;
-kernel_data_page_0:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-kernel_data_page_1:
-.align 12
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-.align 4;
-.align 5
-_kernel_stack_start:
-.rept 4999
-.4byte 0x0
-.endr
-_kernel_stack_end:
-.4byte 0x0
-_kernel_end: nop
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/gen_csr_test.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/gen_csr_test.py
index a1604cf..9ab72e4 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/gen_csr_test.py
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/gen_csr_test.py
@@ -279,7 +279,7 @@
     csr_map = copy.deepcopy(original_csr_map)
     source_reg, dest_reg = [f"x{i}" for i in random.sample(range(1, 16), 2)]
     csr_list = list(csr_map.keys())
-    with open(f"{out}/riscv_csr_test.{i}.S", "w") as csr_test_file:
+    with open(f"{out}/riscv_csr_test_{i}.S", "w") as csr_test_file:
       gen_setup(csr_test_file)
       for csr in csr_list:
         csr_address, csr_val, csr_write_mask, csr_read_mask = csr_map.get(csr)
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/instr_trace_compare.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/instr_trace_compare.py
index ead4f5c..8614233 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/instr_trace_compare.py
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/instr_trace_compare.py
@@ -201,6 +201,8 @@
 
 def check_update_gpr(rd, rd_val, gpr):
   gpr_state_change = 0
+  if rd == '':
+    return gpr_state_change
   if rd in gpr:
     if rd_val != gpr[rd]:
       gpr_state_change = 1
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/lib.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/lib.py
index 1037680..92a91ca 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/lib.py
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/lib.py
@@ -24,6 +24,22 @@
 import yaml
 import logging
 
+def setup_logging(verbose):
+  """Setup the root logger.
+
+  Args:
+    verbose: Verbose logging
+  """
+  if verbose:
+    logging.basicConfig(format="%(asctime)s %(filename)s:%(lineno)-5s %(levelname)-8s %(message)s",
+                        datefmt='%a, %d %b %Y %H:%M:%S',
+                        level=logging.DEBUG)
+  else:
+    logging.basicConfig(format="%(asctime)s %(levelname)-8s %(message)s",
+                        datefmt='%a, %d %b %Y %H:%M:%S',
+                        level=logging.INFO)
+
+
 def read_yaml(yaml_file):
   """ Read YAML file to a dictionary
 
@@ -59,6 +75,15 @@
   return val
 
 
+def check_riscv_dv_setting():
+  """Check the RISCV-DV directory setting, default "."
+  """
+  try:
+    val = os.environ["RISCV_DV_ROOT"]
+  except KeyError:
+    os.environ["RISCV_DV_ROOT"] = "."
+
+
 def get_seed(seed):
   """Get the seed to run the generator
 
@@ -83,6 +108,7 @@
   Returns:
     command output
   """
+  logging.debug(cmd)
   try:
     ps = subprocess.Popen(cmd,
                           shell=True,
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/link.ld b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/link.ld
index 73b5485..df08889 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/link.ld
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/link.ld
@@ -19,13 +19,15 @@
 SECTIONS
 {
   . = 0x80000000;
-  .text.init : { *(.text.init) }
+  .text : { *(.text) }
   . = ALIGN(0x1000);
   .tohost : { *(.tohost) }
   . = ALIGN(0x1000);
-  .text : { *(.text) }
-  . = ALIGN(0x1000);
+  .page_table : { *(.page_table) }
   .data : { *(.data) }
+  .user_stack : { *(.user_stack) }
+  .kernel_data : { *(.kernel_data) }
+  .kernel_stack : { *(.kernel_stack) }
   .bss : { *(.bss) }
   _end = .;
 }
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/riscv_trace_csv.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/riscv_trace_csv.py
index 4dfd104..79daa54 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/riscv_trace_csv.py
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/riscv_trace_csv.py
@@ -34,6 +34,7 @@
     self.instr_str = ""
     self.instr = ""
     self.privileged_mode = ""
+    self.csr = ""
 
   def get_trace_string(self):
     """Return a short string of the trace entry"""
@@ -54,7 +55,7 @@
   def start_new_trace(self):
     """Create a CSV file handle for a new trace"""
     fields = ["instr", "rd", "rd_val", "rs1", "rs1_val", "rs2", "rs2_val",
-              "imm", "str", "addr", "binary", "mode"]
+              "imm", "str", "addr", "binary", "csr", "mode"]
     self.csv_writer = csv.DictWriter(self.csv_fd, fieldnames=fields)
     self.csv_writer.writeheader()
 
@@ -85,8 +86,8 @@
                               'addr'    : entry.addr,
                               'instr'   : entry.instr,
                               'imm'     : entry.imm,
-                              'binary'  : entry.binary,
-                              'addr'    : entry.addr})
+                              'csr'     : entry.csr,
+                              'binary'  : entry.binary})
 
 
 def gpr_to_abi(gpr):
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/spike_log_to_trace_csv.py b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/spike_log_to_trace_csv.py
index 45a23f8..a64c204 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/spike_log_to_trace_csv.py
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/scripts/spike_log_to_trace_csv.py
@@ -25,8 +25,21 @@
 sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
 
 from riscv_trace_csv import *
+from lib import *
 
-def process_spike_sim_log(spike_log, csv):
+RD_RE    = re.compile(r"(?P<pri>\d) 0x(?P<addr>[a-f0-9]+?) " \
+                      "\((?P<bin>.*?)\) x\s*(?P<reg>\d*?) 0x(?P<val>[a-f0-9]+)")
+CORE_RE  = re.compile(r"core.*0x(?P<addr>[a-f0-9]+?) \(0x(?P<bin>.*?)\) (?P<instr>.*?)$")
+INSTR_RE = re.compile(r"(?P<instr>[a-z\.0-9]+?)(\s+?)(?P<operand>.*)")
+GPR_RE   = re.compile(r"^[a-z][0-9a-z]$")
+ILLE_RE  = re.compile(r"trap_illegal_instruction")
+ADDR_RE  = re.compile(r"(?P<imm>[\-0-9]+?)\((?P<rs1>.*)\)")
+PC_RE    = re.compile(r"pc+")
+HEX_RE   = re.compile(r"^0x")
+
+LOGGER = logging.getLogger()
+
+def process_spike_sim_log(spike_log, csv, full_trace = 0):
   """Process SPIKE simulation log.
 
   Extract instruction and affected register information from spike simulation
@@ -36,14 +49,6 @@
   instr_cnt = 0
   spike_instr = ""
 
-  RD_RE    = re.compile(r"(?P<pri>\d) 0x(?P<addr>[a-f0-9]+?) " \
-                      "\((?P<bin>.*?)\) x\s*(?P<reg>\d*?) 0x(?P<val>.*)")
-  CORE_RE  = re.compile(r"core.*0x(?P<addr>[a-f0-9]+?) \(0x(?P<bin>.*?)\) (?P<instr>.*?)$")
-  INSTR_RE = re.compile(r"(?P<instr>[a-z\.]+?)(\s+?)(?P<operand>.*)")
-  GPR_RE   = re.compile(r"^[a-z][0-9a-z]$")
-  CSR_RE   = re.compile(r"csr")
-  ILLE_RE  = re.compile(r"trap_illegal_instruction")
-
   # Remove all the init spike boot instructions
   cmd = ("sed -i '/core.*0x0000000000001010/,$!d' %s" % spike_log)
   os.system(cmd)
@@ -61,7 +66,8 @@
       # Extract instruction infromation
       m = CORE_RE.search(line)
       if m:
-        spike_instr = m.group("instr")
+        spike_instr = m.group("instr").replace("pc + ", "")
+        spike_instr = spike_instr.replace("pc - ", "-")
         rv_instr_trace = RiscvInstructiontTraceEntry()
         rv_instr_trace.instr_str = spike_instr
         rv_instr_trace.addr = m.group("addr")
@@ -81,46 +87,309 @@
             rv_instr_trace.rd_val = m.group("val")
             rv_instr_trace.privileged_mode = m.group("pri")
             gpr[rv_instr_trace.rd] = rv_instr_trace.rd_val
-          s = INSTR_RE.search(spike_instr)
-          if s:
-            rv_instr_trace.instr = s.group("instr")
-            operand_str = s.group("operand").replace(" ", "")
-            if operand_str != "" :
+          else:
+            # If full trace is not enabled, skip the entry that doesn't have
+            # architectural state update.
+            if not full_trace:
+              continue
+          if full_trace:
+            s = INSTR_RE.search(spike_instr)
+            if s:
+              rv_instr_trace.instr = s.group("instr")
+              operand_str = s.group("operand").replace(" ", "")
               operands = operand_str.split(",")
-              if CSR_RE.search(s.group("instr")):
-                # CSR instruction
-                operand = operands[-1]
-                if GPR_RE.search(operand) or operand == "zero":
-                  rv_instr_trace.rs1 = operand
-                  rv_instr_trace.rs1_val = gpr[operand]
-                else:
-                  rv_instr_trace.imm = operand
-              else:
-                # Non CSR instruction
-                for i in range(1, len(operands)):
-                  operand = operands[i]
-                  if GPR_RE.search(operand) or operand == "zero":
-                    if i == 1:
-                      rv_instr_trace.rs1 = operand
-                      rv_instr_trace.rs1_val = gpr[operand]
-                    else:
-                      rv_instr_trace.rs2 = operands[i]
-                      rv_instr_trace.rs2_val = gpr[operand]
-                  else:
-                    rv_instr_trace.imm = operand
-          trace_csv.write_trace_entry(rv_instr_trace)
+              assign_operand(rv_instr_trace, operands, gpr)
+            else:
+              rv_instr_trace.instr = spike_instr
+        else:
+          rv_instr_trace.instr = spike_instr
+        trace_csv.write_trace_entry(rv_instr_trace)
   logging.info("Processed instruction count : %d" % instr_cnt)
+  logging.info("CSV saved to : %s" % csv)
 
 
+def sint_to_hex(val):
+  """Signed integer to hex conversion"""
+  return str(hex((val + (1 << 32)) % (1 << 32)))
+
+
+def get_imm_hex_val(imm):
+  """Get the hex representation of the imm value"""
+  if imm[0] == '-':
+    is_negative = 1
+    imm = imm[1:]
+  else:
+    is_negative = 0
+  imm_val = int(imm, 0)
+  if is_negative:
+    imm_val = -imm_val
+  hexstr = sint_to_hex(imm_val)
+  return hexstr[2:]
+
+
+def assign_operand(trace, operands, gpr):
+  #logging.debug("-> [%0s] %0s" % (trace.instr, trace.instr_str))
+  if trace.instr in ['lb', 'lh', 'lw', 'lbu', 'lhu', 'ld', 'lq', 'lwu', 'ldu',
+                     'c.lw', 'c.ld', 'c.lq', 'c.lwsp', 'c.ldsp', 'c.lqsp']:
+    # TODO: Support regular load/store format
+    m = ADDR_RE.search(operands[1])
+    # Load instruction
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    if m:
+      trace.imm = get_imm_hex_val(m.group('imm'))
+      trace.rs1 = m.group('rs1')
+      trace.rs1_val = gpr[trace.rs1]
+    else:
+      logging.info("Unexpected load address %0s", operands[1])
+  elif trace.instr in ['sb', 'sh', 'sw', 'sd', 'sq', 'c.sw', 'c.sd', 'c.sq',
+                       'c.swsp', 'c.sdsp', 'c.sqsp']:
+    # Store instruction
+    m = ADDR_RE.search(operands[1])
+    # Load instruction
+    trace.rs2 = operands[0]
+    trace.rs2_val = gpr[trace.rs2]
+    if m:
+      trace.imm = get_imm_hex_val(m.group('imm'))
+      trace.rs1 = m.group('rs1')
+      trace.rs1_val = gpr[trace.rs1]
+    else:
+      logging.info("Unexpected store address %0s", operands[1])
+  elif trace.instr in ['mul', 'mulh', 'mulhsu', 'mulhu', 'div', 'divu', 'rem', 'remu',
+                       'mulw', 'muld', 'divw', 'divuw', 'divd', 'remw', 'remd', 'remuw',
+                       'remud', 'sll', 'srl', 'sra', 'add', 'sub', 'xor', 'or', 'and',
+                       'slt', 'sltu', 'sllw', 'slld', 'srlw', 'srld', 'sraw', 'srad',
+                       'addw', 'addd', 'subw', 'subd']:
+    # R type instruction
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.rs2 = operands[2]
+    trace.rs2_val = gpr[trace.rs2]
+  elif trace.instr in ['c.add', 'c.addw', 'c.mv', 'c.sub', 'c.jr', 'c.and', 'c.or',
+                       'c.xor', 'c.subw']:
+    # CR type
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[0]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.rs2 = operands[1]
+    trace.rs2_val = gpr[trace.rs2]
+  elif trace.instr in ['slli', 'srli', 'srai', 'addi', 'xori', 'ori', 'andi', 'slti',
+                       'sltiu', 'slliw', 'sllid', 'srliw', 'srlid', 'sraiw', 'sraid',
+                       'addiw', 'addid']:
+    # I type instruction
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.imm = get_imm_hex_val(operands[2])
+  elif trace.instr in ['c.addi', 'c.addiw', 'c.addi16sp', 'c.addi4spn', 'c.li', 'c.lui',
+                       'c.slli', 'c.srai', 'c.srli', 'c.andi']:
+    # CI/CIW type
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.imm = get_imm_hex_val(operands[-1])
+  elif trace.instr in ['beq', 'bne', 'blt', 'bge', 'bltu', 'bgeu']:
+    # SB type instruction
+    trace.rs1 = operands[0]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.rs2 = operands[1]
+    trace.rs2_val = gpr[trace.rs2]
+    trace.imm = get_imm_hex_val(operands[2])
+  elif trace.instr in ['c.beqz', 'c.bnez']:
+    # CB type instruction
+    trace.rs1 = operands[0]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['csrrw', 'csrrs', 'csrrc']:
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.csr = operands[1]
+    trace.rs1 = operands[2]
+    trace.rs1_val = gpr[trace.rs1]
+  elif trace.instr in ['csrrwi', 'csrrsi', 'csrrci']:
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.csr = operands[1]
+    trace.imm = get_imm_hex_val(operands[2])
+  elif trace.instr in ['scall', 'sbreak', 'fence', 'fence.i', 'ecall', 'ebreak', 'wfi',
+                       'sfence.vma', 'c.ebreak', 'nop', 'c.nop']:
+    trace.rd  = 'zero'
+    trace.rs1 = 'zero'
+    trace.rs2 = 'zero'
+    trace.rd_val  = '0'
+    trace.rs1_val = '0'
+    trace.rs2_val = '0'
+    trace.imm = get_imm_hex_val('0')
+  elif trace.instr in ['lui', 'auipc']:
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['jal']:
+    if len(operands) == 1:
+      trace.imm = get_imm_hex_val(operands[0])
+    else:
+      trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['jalr']:
+    if len(operands) == 1:
+      trace.rs1 = operands[0]
+      trace.rs1_val = gpr[trace.rs1]
+      trace.imm = get_imm_hex_val('0')
+    else:
+      trace.rs1 = operands[1]
+      trace.rs1_val = gpr[trace.rs1]
+      trace.imm = get_imm_hex_val(operands[2])
+  elif trace.instr in ['c.j', 'c.jal']:
+    trace.imm = get_imm_hex_val(operands[0])
+  # Pseudo instruction convertion below
+  elif trace.instr in ['mv']:
+    trace.instr = 'addi'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.imm = get_imm_hex_val('0')
+  elif trace.instr in ['not']:
+    trace.instr = 'xori'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.imm = get_imm_hex_val('-1')
+  elif trace.instr in ['neg']:
+    trace.instr = 'sub'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+  elif trace.instr in ['negw']:
+    trace.instr = 'subw'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+    trace.rs2 = operands[1]
+    trace.rs2_val = gpr[trace.rs2]
+  elif trace.instr in ['sext.w']:
+    trace.instr = 'addiw'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.imm = get_imm_hex_val('0')
+  elif trace.instr in ['seqz']:
+    trace.instr = 'sltiu'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.imm = get_imm_hex_val('1')
+  elif trace.instr in ['snez']:
+    trace.instr = 'sltu'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+    trace.rs2 = operands[1]
+    trace.rs2_val = gpr[trace.rs2]
+  elif trace.instr in ['sltz']:
+    trace.instr = 'slt'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.rs2 = 'zero'
+    trace.rs2_val = '0'
+  elif trace.instr in ['sgtz']:
+    trace.instr = 'slt'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+    trace.rs2 = operands[1]
+    trace.rs2_val = gpr[trace.rs2]
+  elif trace.instr in ['beqz', 'bnez', 'bgez', 'bltz']:
+    trace.instr = trace.instr[0:3]
+    trace.rs1 = operands[0]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.rs2 = 'zero'
+    trace.rs2_val = '0'
+    trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['blez']:
+    trace.instr = 'bge'
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+    trace.rs2 = operands[0]
+    trace.rs2_val = gpr[trace.rs2]
+    trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['bgtz']:
+    trace.instr = 'blt'
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+    trace.rs2 = operands[0]
+    trace.rs2_val = gpr[trace.rs2]
+    trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['csrr']:
+    trace.instr = 'csrrw'
+    trace.rd = operands[0]
+    trace.rd_val = gpr[trace.rd]
+    trace.csr = operands[1]
+    trace.rs1 = 'zero'
+    trace.rs1_val = '0'
+  elif trace.instr in ['csrw', 'csrs', 'csrc']:
+    trace.instr = 'csrr' + trace.instr[-1]
+    trace.csr = operands[0]
+    trace.rs1 = operands[1]
+    trace.rs1_val = gpr[trace.rs1]
+    trace.rd = 'zero'
+    trace.rd_val = '0'
+  elif trace.instr in ['csrwi', 'csrsi', 'csrci']:
+    trace.instr = 'csrr' + trace.instr[-2:]
+    trace.rd = 'zero'
+    trace.rd_val = '0'
+    trace.csr = operands[0]
+    trace.imm = get_imm_hex_val(operands[1])
+  elif trace.instr in ['j']:
+    trace.instr = 'jal'
+    trace.rd = 'zero'
+    trace.rd_val = '0'
+    trace.imm = get_imm_hex_val(operands[0])
+  elif trace.instr in ['jr']:
+    trace.instr = 'jal'
+    trace.rd = 'zero'
+    trace.rd_val = '0'
+    trace.rs1 = operands[0]
+    if trace.rs1 in gpr:
+      trace.rs1_val = gpr[trace.rs1]
+  elif trace.instr in ['li']:
+    trace.instr = 'li'
+  elif trace.instr[0:2] in ['lr', 'am', 'sc']:
+    # TODO: Support A-extension
+    pass
+  else:
+    # TODO: Support other instructions
+    logging.info("Unsupported instr : %s" % trace.instr)
+
 def main():
   instr_trace = []
   # Parse input arguments
   parser = argparse.ArgumentParser()
   parser.add_argument("--log", type=str, help="Input spike simulation log")
   parser.add_argument("--csv", type=str, help="Output trace csv_buf file")
+  parser.add_argument("-f", "--full_trace", dest="full_trace", action="store_true",
+                                         help="Generate the full trace")
+  parser.add_argument("-v", "--verbose", dest="verbose", action="store_true",
+                                         help="Verbose logging")
+  parser.set_defaults(full_trace=False)
+  parser.set_defaults(verbose=False)
   args = parser.parse_args()
+  setup_logging(args.verbose)
   # Process spike log
-  process_spike_sim_log(args.log, args.csv)
+  process_spike_sim_log(args.log, args.csv, args.full_trace)
 
 
 if __name__ == "__main__":
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/setting/riscv_core_setting.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/setting/riscv_core_setting.sv
index 5ca55e0..c481c5f 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/setting/riscv_core_setting.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/setting/riscv_core_setting.sv
@@ -35,6 +35,10 @@
 // Interrupt mode support
 mtvec_mode_t supported_interrupt_mode[$] = {DIRECT, VECTORED};
 
+// The number of interrupt vectors to be generated, only used if VECTORED interrupt mode is
+// supported
+int max_interrupt_vector_num = 16;
+
 // Debug mode support
 bit support_debug_mode = 0;
 
@@ -44,54 +48,12 @@
 // Support sfence.vma instruction
 bit support_sfence = 1;
 
-// Cache line size (in bytes)
-// If processor does not support caches, set to XLEN/8
-int dcache_line_size_in_bytes = 128;
-
-// Number of data section
-// For processor that doesn't have data TLB, this can be set to 1
-// For processor that supports data TLB, this should be set to be larger than the number
-// of entries of dTLB to cover dTLB hit/miss scenario
-int num_of_data_pages = 40;
-
-// Data section byte size
-// For processor with no dTLB and data cache, keep the value below 10K
-// For processor with dTLB support, set it to the physical memory size that covers one entry
-// of the dTLB
-int data_page_size = 4096;
-int data_page_alignment = $clog2(data_page_size);
-
-// The maximum data section byte size actually used by load/store instruction
-// Set to this value to be smaller than data_page_size. If there's data cache in the system,
-// this value should be set large enough to be able to hit cache hit/miss scenario within a data
-// section. Don't set this to too big as it will introduce a very large binary.
-int max_used_data_page_size = 512;
-
-// Stack section word length
-int stack_len = 5000;
-
-//-----------------------------------------------------------------------------
-// Kernel section setting, used by supervisor mode programs
-//-----------------------------------------------------------------------------
-
-// Number of kernel data pages
-int num_of_kernel_data_pages = 5;
-
-// Byte size of kernel data pages
-int kernel_data_page_size = 4096;
-
-// Kernel Stack section word length
-int kernel_stack_len = 5000;
-
-// Number of instructions for each kernel program
-int kernel_program_instr_cnt = 400;
-
 // ----------------------------------------------------------------------------
 // Previleged CSR implementation
 // ----------------------------------------------------------------------------
 
 // Implemented previlieged CSR list
-privileged_reg_t implemented_csr[$] = {
+parameter privileged_reg_t implemented_csr[] = {
     // User mode CSR
     USTATUS,    // User status
     UIE,        // User interrupt-enable register
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_amo_instr_lib.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_amo_instr_lib.sv
index f16fe58..ba60035 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_amo_instr_lib.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_amo_instr_lib.sv
@@ -15,14 +15,14 @@
  */
 
 // Base class for AMO instruction stream
-class riscv_amo_base_instr_stream extends riscv_directed_instr_stream;
+class riscv_amo_base_instr_stream extends riscv_mem_access_stream;
 
   rand int unsigned  num_amo;
   rand int unsigned  num_mixed_instr;
   rand int           base;
   rand riscv_reg_t   rs1_reg;
-  riscv_reg_t        reserved_rd[$];
   rand int unsigned  data_page_id;
+  rand int           max_load_store_offset;
 
   // User can specify a small group of available registers to generate various hazard condition
   rand riscv_reg_t   avail_regs[];
@@ -48,58 +48,23 @@
 
   function new(string name = "");
     super.new(name);
-    instr_list.rand_mode(0);
   endfunction
 
   function void post_randomize();
     gen_amo_instr();
     // rs1 cannot be modified by other instructions
     if(!(rs1_reg inside {reserved_rd})) begin
-      reserved_rd.push_back(rs1_reg);
+      reserved_rd = {reserved_rd, rs1_reg};
     end
-    add_mixed_instr();
-    add_rs1_init_la_instr();
+    add_mixed_instr(num_mixed_instr);
+    add_rs1_init_la_instr(rs1_reg, data_page_id);
     super.post_randomize();
   endfunction
 
-  // Use "la" instruction to initialize the base regiseter
-  virtual function void add_rs1_init_la_instr();
-    riscv_pseudo_instr la_instr;
-    la_instr = riscv_pseudo_instr::type_id::create("la_instr");
-    `DV_CHECK_RANDOMIZE_WITH_FATAL(la_instr,
-                                   pseudo_instr_name == LA;
-                                   rd == rs1_reg;,
-                                   "Cannot randomize la_instr")
-    if(access_u_mode_mem) begin
-      la_instr.imm_str = $sformatf("data_page_%0d+%0d", data_page_id, base);
-    end else begin
-      la_instr.imm_str = $sformatf("kernel_data_page_%0d+%0d", data_page_id, base);
-    end
-    instr_list.push_front(la_instr);
-  endfunction
-
   // AMO instruction generation
   virtual function void gen_amo_instr();
   endfunction
 
-  // Insert some other instructions to mix with load/store instruction
-  virtual function void add_mixed_instr();
-    riscv_rand_instr rand_instr;
-    for(int i = 0; i < num_mixed_instr; i ++) begin
-      rand_instr = riscv_rand_instr::type_id::create("rand_instr");
-      rand_instr.cfg = cfg;
-      rand_instr.reserved_rd = reserved_rd;
-      `DV_CHECK_RANDOMIZE_WITH_FATAL(rand_instr,
-        if(avail_regs.size() > 0) {
-          rs1 inside {avail_regs};
-          rd inside {avail_regs};
-        }
-        !(category inside {LOAD, STORE, BRANCH, JUMP});,
-        "Cannot randomize instruction")
-      insert_instr(rand_instr);
-    end
-  endfunction
-
 endclass
 
 // A pair of LR/SC instruction
@@ -159,10 +124,17 @@
       amo_instr[i] = riscv_rand_instr::type_id::create($sformatf("amo_instr_%0d", i));
       amo_instr[i].cfg = cfg;
       amo_instr[i].disable_a_extension_c.constraint_mode(0);
-      `DV_CHECK_RANDOMIZE_WITH_FATAL(amo_instr[i],
-                                     rs1 == rs1_reg;
-                                     rd != rs1_reg;
-                                     category == AMO;)
+      `ifdef DSIM
+        `DV_CHECK_RANDOMIZE_WITH_FATAL(amo_instr[i],
+                                       rs1 == rs1_reg;
+                                       rd != rs1_reg;
+                                       instr_name inside {[AMOSWAP_W:AMOMAXU_D]};)
+      `else
+        `DV_CHECK_RANDOMIZE_WITH_FATAL(amo_instr[i],
+                                       rs1 == rs1_reg;
+                                       rd != rs1_reg;
+                                       category == AMO;)
+      `endif
       instr_list.push_front(amo_instr[i]);
     end
   endfunction
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_asm_program_gen.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_asm_program_gen.sv
index 9011cb9..b72821c 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_asm_program_gen.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_asm_program_gen.sv
@@ -29,8 +29,6 @@
    // User mode programs
    riscv_instr_sequence                main_program;
    riscv_instr_sequence                sub_program[];
-   // Program in binary format, stored in the data section, used to inject illegal/HINT instruction
-   riscv_instr_sequence                bin_program;
    riscv_instr_sequence                debug_program;
    riscv_instr_sequence                debug_sub_program[];
    string                              instr_binary[$];
@@ -70,30 +68,12 @@
     gen_program_header();
     // Initialize general purpose registers
     init_gpr();
-    setup_misa();
-    // Create all page tables
-    create_page_table();
-    // Setup privileged mode registers and enter target privileged mode
-    pre_enter_privileged_mode();
-    // Generate sub program in binary format
-    // Illegal instruction and hint instruction cannot pass compilation, need to directly generate
-    // the instruction in binary format and store in data section to skip compilation.
-    if(cfg.enable_illegal_instruction || cfg.enable_hint_instruction) begin
-      bin_program = riscv_instr_sequence::type_id::create("bin_program");
-      bin_program.instr_cnt = cfg.bin_program_instr_cnt;
-      bin_program.is_debug_program = 0;
-      bin_program.label_name = bin_program.get_name();
-      bin_program.cfg = cfg;
-      if (cfg.enable_illegal_instruction) begin
-        bin_program.illegal_instr_pct = $urandom_range(5, 20);
-      end
-      if (cfg.enable_hint_instruction) begin
-        bin_program.hint_instr_pct = $urandom_range(5, 20);
-      end
-      `DV_CHECK_RANDOMIZE_FATAL(bin_program)
-      bin_program.gen_instr(.is_main_program(0));
-      bin_program.post_process_instr();
-      bin_program.generate_binary_stream(instr_binary);
+    if (!cfg.bare_program_mode) begin
+      setup_misa();
+      // Create all page tables
+      create_page_table();
+      // Setup privileged mode registers and enter target privileged mode
+      pre_enter_privileged_mode();
     end
     // Init section
     gen_init_section();
@@ -113,16 +93,17 @@
     main_program.gen_instr(1);
     // Setup jump instruction among main program and sub programs
     gen_callstack(main_program, sub_program, sub_program_name, cfg.num_of_sub_program);
-    if (bin_program != null) begin
-      main_program.insert_jump_instr("sub_bin", 0);
-    end
+    `uvm_info(`gfn, "Generating callstack...done", UVM_LOW)
     main_program.post_process_instr();
+    `uvm_info(`gfn, "Post-processing main program...done", UVM_LOW)
     main_program.generate_instr_stream();
+    `uvm_info(`gfn, "Generating main program instruction stream...done", UVM_LOW)
     instr_stream = {instr_stream, main_program.instr_string_list};
     // Test done section
     gen_test_done();
     // Shuffle the sub programs and insert to the instruction stream
     insert_sub_program(sub_program, instr_stream);
+    `uvm_info(`gfn, "Inserting sub-programs...done", UVM_LOW)
     // Reserve some space to copy instruction from data section
     if (instr_binary.size() > 0) begin
       instr_stream.push_back(".align 2");
@@ -132,45 +113,49 @@
       instr_stream.push_back({indent, ".endr"});
       instr_stream.push_back({indent, "ret"});
     end
-    // Privileged mode switch routine
-    gen_privileged_mode_switch_routine();
+    `uvm_info(`gfn, "Main/sub program generation...done", UVM_LOW)
     // Program end
     gen_program_end();
-    // Generate debug rom section
-    gen_debug_rom();
-    // Generate debug mode exception handler
-    gen_debug_exception_handler();
+    if (!cfg.bare_program_mode) begin
+      // Privileged mode switch routine
+      gen_privileged_mode_switch_routine();
+      // Generate debug rom section
+      gen_debug_rom();
+      // Generate debug mode exception handler
+      gen_debug_exception_handler();
+    end
     // Starting point of data section
     gen_data_page_begin();
-    // Generate the sub program in binary format
-    gen_bin_program();
     // Page table
-    gen_page_table_section();
+    if (!cfg.bare_program_mode) begin
+      gen_page_table_section();
+    end
     if(!cfg.no_data_page) begin
-      // Data section
+      // Kernel data section
       gen_data_page();
     end
     gen_data_page_end();
     // Stack section
     gen_stack_section();
-    // Generate kernel program/data/stack section
-    gen_kernel_sections();
+    if (!cfg.bare_program_mode) begin
+      // Generate kernel program/data/stack section
+      gen_kernel_sections();
+    end
   endfunction
 
   //---------------------------------------------------------------------------------------
   // Generate kernel program/data/stack sections
   //---------------------------------------------------------------------------------------
   virtual function void gen_kernel_sections();
-    instr_stream.push_back("_kernel_start: .align 12");
+    instr_stream.push_back("_kernel_instr_start: .align 12");
+    instr_stream.push_back(".text");
     // Kernel programs
-    if (cfg.init_privileged_mode != MACHINE_MODE) begin
+    if (cfg.virtual_addr_translation_on) begin
       smode_accessible_umode_program = riscv_instr_sequence::type_id::
                                        create("smode_accessible_umode_program");
       gen_kernel_program(smode_accessible_umode_program);
-    end
-    smode_program = riscv_instr_sequence::type_id::create("smode_program");
-    gen_kernel_program(smode_program);
-    if (cfg.init_privileged_mode != MACHINE_MODE) begin
+      smode_program = riscv_instr_sequence::type_id::create("smode_program");
+      gen_kernel_program(smode_program);
       smode_ls_umem_program = riscv_instr_sequence::type_id::create("smode_ls_umem_program");
       gen_kernel_program(smode_ls_umem_program);
     end
@@ -182,25 +167,29 @@
     foreach(riscv_instr_pkg::supported_privileged_mode[i]) begin
       gen_interrupt_handler_section(riscv_instr_pkg::supported_privileged_mode[i]);
     end
-    // Kernel data pages
-    gen_kernel_data_page_begin();
-    if(!cfg.no_data_page) begin
-      // Data section
-      gen_data_page(.is_kernel(1'b1));
+    instr_stream.push_back("_kernel_instr_end: nop");
+    // User stack and data pages may not be accessible when executing trap handling programs in
+    // machine/supervisor mode. Generate separate kernel data/stack sections to solve it.
+    if (cfg.virtual_addr_translation_on) begin
+      // Kernel data pages
+      instr_stream.push_back("_kernel_data_start: .align 12");
+      if(!cfg.no_data_page) begin
+        // Data section
+        gen_data_page(1'b1);
+      end
+      gen_data_page_end();
     end
-    gen_data_page_end();
     // Kernel stack section
     gen_kernel_stack_section();
-    instr_stream.push_back("_kernel_end: nop");
   endfunction
 
   virtual function void gen_kernel_program(riscv_instr_sequence seq);
-    seq.instr_cnt = riscv_instr_pkg::kernel_program_instr_cnt;
+    seq.instr_cnt = cfg.kernel_program_instr_cnt;
     generate_directed_instr_stream(.label(seq.get_name()),
                                    .original_instr_cnt(seq.instr_cnt),
                                    .min_insert_cnt(0),
                                    .instr_stream(seq.directed_instr),
-                                   .access_u_mode_mem(1'b0));
+                                   .kernel_mode(1'b1));
     seq.label_name = seq.get_name();
     seq.is_debug_program = 0;
     seq.cfg = cfg;
@@ -261,7 +250,7 @@
             idx++;
             pid = callstack_gen.program_h[i].sub_program_id[j] - 1;
             `uvm_info(get_full_name(), $sformatf(
-                      "Gen jump instr %0d -> sub[%0d] %0d", i, j, pid+1), UVM_HIGH)
+                      "Gen jump instr %0d -> sub[%0d] %0d", i, j, pid+1), UVM_LOW)
             if(i == 0)
               main_program.insert_jump_instr(sub_program_name[pid], idx);
             else
@@ -290,10 +279,9 @@
   //---------------------------------------------------------------------------------------
 
   virtual function void gen_program_header();
-    instr_stream.push_back(".macro init");
-    instr_stream.push_back(".endm");
-    instr_stream.push_back(".section .text.init");
+    instr_stream.push_back(".include \"user_define.h\"");
     instr_stream.push_back(".globl _start");
+    instr_stream.push_back(".section .text");
     instr_stream.push_back("_start:");
   endfunction
 
@@ -309,12 +297,6 @@
     instr_stream.push_back(".align 6; .global tohost; tohost: .dword 0;");
     instr_stream.push_back(".align 6; .global fromhost; fromhost: .dword 0;");
     instr_stream.push_back(".popsection;");
-    instr_stream.push_back(".align 4;");
-  endfunction
-
-  virtual function void gen_kernel_data_page_begin();
-    instr_stream.push_back(".data");
-    instr_stream.push_back(".align 4;");
   endfunction
 
   virtual function void gen_data_page(bit is_kernel = 1'b0);
@@ -331,24 +313,28 @@
 
   // Generate the user stack section
   virtual function void gen_stack_section();
-    instr_stream.push_back($sformatf(".align %0d", $clog2(XLEN)));
+    instr_stream.push_back(".pushsection .user_stack,\"aw\",@progbits;");
+    instr_stream.push_back(".align 12");
     instr_stream.push_back("_user_stack_start:");
-    instr_stream.push_back($sformatf(".rept %0d", riscv_instr_pkg::stack_len - 1));
+    instr_stream.push_back($sformatf(".rept %0d", cfg.stack_len - 1));
     instr_stream.push_back($sformatf(".%0dbyte 0x0", XLEN/8));
     instr_stream.push_back(".endr");
     instr_stream.push_back("_user_stack_end:");
     instr_stream.push_back($sformatf(".%0dbyte 0x0", XLEN/8));
+    instr_stream.push_back(".popsection;");
   endfunction
 
   // The kernal stack is used to save user program context before executing exception handling
   virtual function void gen_kernel_stack_section();
-    instr_stream.push_back($sformatf(".align %0d", $clog2(XLEN)));
+    instr_stream.push_back(".pushsection .kernel_stack,\"aw\",@progbits;");
+    instr_stream.push_back(".align 12");
     instr_stream.push_back("_kernel_stack_start:");
-    instr_stream.push_back($sformatf(".rept %0d", riscv_instr_pkg::kernel_stack_len - 1));
+    instr_stream.push_back($sformatf(".rept %0d", cfg.kernel_stack_len - 1));
     instr_stream.push_back($sformatf(".%0dbyte 0x0", XLEN/8));
     instr_stream.push_back(".endr");
     instr_stream.push_back("_kernel_stack_end:");
     instr_stream.push_back($sformatf(".%0dbyte 0x0", XLEN/8));
+    instr_stream.push_back(".popsection;");
   endfunction
 
   virtual function void gen_init_section();
@@ -399,10 +385,12 @@
   // Write to the signature_addr with values to indicate to the core testbench
   // that is safe to start sending interrupt and debug stimulus
   virtual function void core_is_initialized();
+    string instr[$];
     if (cfg.require_signature_addr) begin
       if (cfg.signature_addr != 32'hdead_beef) begin
-        string str;
-        gen_signature_handshake(instr_stream, CORE_STATUS, INITIALIZED);
+        gen_signature_handshake(instr, CORE_STATUS, INITIALIZED);
+        format_section(instr);
+        instr_stream = {instr_stream, instr};
       end else begin
         `uvm_fatal(`gfn, "The signature_addr is not properly configured!")
       end
@@ -434,7 +422,11 @@
     string str = format_string("test_done:", LABEL_STR_LEN);
     instr_stream.push_back(str);
     instr_stream.push_back({indent, "li gp, 1"});
-    instr_stream.push_back({indent, "ecall"});
+    if (cfg.bare_program_mode) begin
+      instr_stream.push_back({indent, "j write_tohost"});
+    end else begin
+      instr_stream.push_back({indent, "ecall"});
+    end
   endfunction
 
   // Dump all GPR to the starting point of the program
@@ -474,7 +466,7 @@
     // Setup trap vector register
     trap_vector_init();
     // Initialize PTE (link page table based on their real physical address)
-    if((SATP_MODE != BARE) && (cfg.init_privileged_mode != MACHINE_MODE)) begin
+    if(cfg.virtual_addr_translation_on) begin
       page_table_list.process_page_table(instr);
       gen_section("process_pt", instr);
     end
@@ -486,6 +478,8 @@
     privil_seq = riscv_privileged_common_seq::type_id::create("privil_seq");
     foreach(riscv_instr_pkg::supported_privileged_mode[i]) begin
       string instr[$];
+      string csr_handshake[$];
+      string ret_instr;
       if(riscv_instr_pkg::supported_privileged_mode[i] < cfg.init_privileged_mode) continue;
       `uvm_info(`gfn, $sformatf("Generating privileged mode routing for %0s",
                       riscv_instr_pkg::supported_privileged_mode[i].name()), UVM_LOW)
@@ -493,6 +487,27 @@
       privil_seq.cfg = cfg;
       `DV_CHECK_RANDOMIZE_FATAL(privil_seq)
       privil_seq.enter_privileged_mode(riscv_instr_pkg::supported_privileged_mode[i], instr);
+      if (cfg.require_signature_addr) begin
+        ret_instr = instr.pop_back();
+        // Want to write the main system CSRs to the testbench before indicating that initialization
+        // is complete, for any initial state analysis
+        case(riscv_instr_pkg::supported_privileged_mode[i])
+          MACHINE_MODE: begin
+            gen_signature_handshake(.instr(csr_handshake), .signature_type(WRITE_CSR), .csr(MSTATUS));
+            gen_signature_handshake(.instr(csr_handshake), .signature_type(WRITE_CSR), .csr(MIE));
+          end
+          SUPERVISOR_MODE: begin
+            gen_signature_handshake(.instr(csr_handshake), .signature_type(WRITE_CSR), .csr(SSTATUS));
+            gen_signature_handshake(.instr(csr_handshake), .signature_type(WRITE_CSR), .csr(SIE));
+          end
+          USER_MODE: begin
+            gen_signature_handshake(.instr(csr_handshake), .signature_type(WRITE_CSR), .csr(USTATUS));
+            gen_signature_handshake(.instr(csr_handshake), .signature_type(WRITE_CSR), .csr(UIE));
+          end
+        endcase
+        format_section(csr_handshake);
+        instr = {instr, csr_handshake, ret_instr};
+      end
       instr_stream = {instr_stream, instr};
     end
   endfunction
@@ -502,7 +517,7 @@
     string instr[];
     string mode_name;
     instr = {"la x10, _init"};
-    if(SATP_MODE != BARE && cfg.init_privileged_mode != MACHINE_MODE) begin
+    if(cfg.virtual_addr_translation_on) begin
       // For supervisor and user mode, use virtual address instead of physical address.
       // Virtual address starts from address 0x0, here only the lower 12 bits are kept
       // as virtual address offset.
@@ -582,7 +597,7 @@
       if (riscv_instr_pkg::supported_privileged_mode[i] < cfg.init_privileged_mode) continue;
       tvec_name = trap_vec_reg.name();
       instr = {instr, $sformatf("la a0, %0s_handler", tvec_name.tolower())};
-      if(SATP_MODE != BARE && riscv_instr_pkg::supported_privileged_mode[i] != MACHINE_MODE) begin
+      if (SATP_MODE != BARE && riscv_instr_pkg::supported_privileged_mode[i] != MACHINE_MODE) begin
         // For supervisor and user mode, use virtual address instead of physical address.
         // Virtual address starts from address 0x0, here only the lower 20 bits are kept
         // as virtual address offset.
@@ -607,12 +622,12 @@
       if(riscv_instr_pkg::supported_privileged_mode[i] < cfg.init_privileged_mode) continue;
       case(riscv_instr_pkg::supported_privileged_mode[i])
         MACHINE_MODE:
-          gen_trap_handler_section("m", MCAUSE, MTVEC, MTVAL, MEPC, MSCRATCH, MSTATUS);
+          gen_trap_handler_section("m", MCAUSE, MTVEC, MTVAL, MEPC, MSCRATCH, MSTATUS, MIE, MIP);
         SUPERVISOR_MODE:
-          gen_trap_handler_section("s", SCAUSE, STVEC, STVAL, SEPC, SSCRATCH, SSTATUS);
+          gen_trap_handler_section("s", SCAUSE, STVEC, STVAL, SEPC, SSCRATCH, SSTATUS, SIE, SIP);
         USER_MODE:
           if(riscv_instr_pkg::support_umode_trap)
-            gen_trap_handler_section("u", UCAUSE, UTVEC, UTVAL, UEPC, USCRATCH, USTATUS);
+            gen_trap_handler_section("u", UCAUSE, UTVEC, UTVAL, UEPC, USCRATCH, USTATUS, UIE, UIP);
       endcase
     end
     // Ebreak handler
@@ -621,6 +636,12 @@
     gen_ecall_handler();
     // Illegal instruction handler
     gen_illegal_instr_handler();
+    // Instruction fault handler
+    gen_instr_fault_handler();
+    // Load fault handler
+    gen_load_fault_handler();
+    // Store fault handler
+    gen_store_fault_handler();
     // Generate page table fault handling routine
     // Page table fault is always handled in machine mode, as virtual address translation may be
     // broken when page fault happens.
@@ -639,12 +660,13 @@
   virtual function void gen_trap_handler_section(string mode,
                                             privileged_reg_t cause, privileged_reg_t tvec,
                                             privileged_reg_t tval, privileged_reg_t epc,
-                                            privileged_reg_t scratch, privileged_reg_t status);
+                                            privileged_reg_t scratch, privileged_reg_t status,
+                                            privileged_reg_t ie, privileged_reg_t ip);
     bit is_interrupt = 'b1;
     string tvec_name;
     string instr[$];
     if (cfg.mtvec_mode == VECTORED) begin
-      gen_interrupt_vector_table(mode, status, cause, scratch, instr);
+      gen_interrupt_vector_table(mode, status, cause, ie, ip, scratch, instr);
     end else begin
       // Push user mode GPR to kernel stack before executing exception handling, this is to avoid
       // exception handling routine modify user program state unexpectedly
@@ -691,11 +713,11 @@
              "beq a1, a2, ecall_handler",
              // Page table fault or access fault conditions
              $sformatf("li a2, 0x%0x", INSTRUCTION_ACCESS_FAULT),
-             "beq a1, a2, pt_fault_handler",
+             "beq a1, a2, instr_fault_handler",
              $sformatf("li a2, 0x%0x", LOAD_ACCESS_FAULT),
-             "beq a1, a2, pt_fault_handler",
+             "beq a1, a2, load_fault_handler",
              $sformatf("li a2, 0x%0x", STORE_AMO_ACCESS_FAULT),
-             "beq a1, a2, pt_fault_handler",
+             "beq a1, a2, store_fault_handler",
              $sformatf("li a2, 0x%0x", INSTRUCTION_PAGE_FAULT),
              "beq a1, a2, pt_fault_handler",
              $sformatf("li a2, 0x%0x", LOAD_PAGE_FAULT),
@@ -716,6 +738,8 @@
   virtual function void gen_interrupt_vector_table(string           mode,
                                                    privileged_reg_t status,
                                                    privileged_reg_t cause,
+                                                   privileged_reg_t ie,
+                                                   privileged_reg_t ip,
                                                    privileged_reg_t scratch,
                                                    ref string       instr[$]);
 
@@ -727,22 +751,27 @@
     instr = {instr, ".option norvc;",
                     $sformatf("j %0smode_exception_handler", mode)};
     // Redirect the interrupt to the corresponding interrupt handler
-    for (int i = 1; i < 16; i++) begin
+    for (int i = 1; i < max_interrupt_vector_num; i++) begin
       instr.push_back($sformatf("j %0smode_intr_vector_%0d", mode, i));
     end
     instr = {instr, ".option rvc;"};
-    for (int i = 1; i < 16; i++) begin
+    for (int i = 1; i < max_interrupt_vector_num; i++) begin
       string intr_handler[$];
       push_gpr_to_kernel_stack(status, scratch, cfg.mstatus_mprv, intr_handler);
-      gen_signature_handshake(intr_handler, CORE_STATUS, HANDLING_IRQ);
+      gen_signature_handshake(.instr(intr_handler), .signature_type(CORE_STATUS), .core_status(HANDLING_IRQ));
       intr_handler = {intr_handler,
-               $sformatf("csrr a1, 0x%0x # %0s", cause, cause.name()),
-               // Terminate the test if xCause[31] != 0 (indicating exception)
-               $sformatf("bltz a1, 1f"),
-               // TODO(taliu) write xCause to the signature address
+                      $sformatf("csrr a1, 0x%0x # %0s", cause, cause.name()),
+                      // Terminate the test if xCause[31] != 0 (indicating exception)
+                      $sformatf("srli a1, a1, 0x%0x", XLEN-1),
+                      $sformatf("beqz a1, 1f")};
+      gen_signature_handshake(.instr(intr_handler), .signature_type(WRITE_CSR), .csr(status));
+      gen_signature_handshake(.instr(intr_handler), .signature_type(WRITE_CSR), .csr(cause));
+      gen_signature_handshake(.instr(intr_handler), .signature_type(WRITE_CSR), .csr(ie));
+      gen_signature_handshake(.instr(intr_handler), .signature_type(WRITE_CSR), .csr(ip));
                // Jump to commmon interrupt handling routine
-               $sformatf("j %0smode_intr_handler", mode),
-               "1: j test_done"};
+      intr_handler = {intr_handler,
+                      $sformatf("j %0smode_intr_handler", mode),
+                      "1: j test_done"};
       gen_section($sformatf("%0smode_intr_vector_%0d", mode, i), intr_handler);
     end
   endfunction
@@ -768,9 +797,11 @@
   // guarantees that epc + 4 is a valid instruction boundary
   // TODO: Support random operations in debug mode
   // TODO: Support ebreak exception delegation
+  // TODO: handshake the correct Xcause CSR based on delegation privil. mode
   virtual function void gen_ebreak_handler();
     string instr[$];
-    gen_signature_handshake(instr, CORE_STATUS, HANDLING_EXCEPTION);
+    gen_signature_handshake(instr, CORE_STATUS, EBREAK_EXCEPTION);
+    gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(MCAUSE));
     instr = {instr,
             "csrr  x31, mepc",
             "addi  x31, x31, 4",
@@ -787,9 +818,11 @@
   // know the illegal instruction is compressed or not. This hanlder just simply adds the PC by
   // 4 and resumes execution. The way that the illegal instruction is injected guarantees that
   // PC + 4 is a valid instruction boundary.
+  // TODO: handshake the corret Xcause CSR based on delegation setup
   virtual function void gen_illegal_instr_handler();
     string instr[$];
-    gen_signature_handshake(instr, CORE_STATUS, HANDLING_EXCEPTION);
+    gen_signature_handshake(instr, CORE_STATUS, ILLEGAL_INSTR_EXCEPTION);
+    gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(MCAUSE));
     instr = {instr,
             "csrr  x31, mepc",
             "addi  x31, x31, 4",
@@ -800,6 +833,36 @@
     gen_section("illegal_instr_handler", instr);
   endfunction
 
+  // TODO: handshake correct csr based on delegation
+  virtual function void gen_instr_fault_handler();
+    string instr[$];
+    gen_signature_handshake(instr, CORE_STATUS, INSTR_FAULT_EXCEPTION);
+    gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(MCAUSE));
+    pop_gpr_from_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, instr);
+    instr.push_back("mret");
+    gen_section("instr_fault_handler", instr);
+  endfunction
+
+  // TODO: handshake correct csr based on delegation
+  virtual function void gen_load_fault_handler();
+    string instr[$];
+    gen_signature_handshake(instr, CORE_STATUS, LOAD_FAULT_EXCEPTION);
+    gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(MCAUSE));
+    pop_gpr_from_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, instr);
+    instr.push_back("mret");
+    gen_section("load_fault_handler", instr);
+  endfunction
+
+  // TODO: handshake correct csr based on delegation
+  virtual function void gen_store_fault_handler();
+    string instr[$];
+    gen_signature_handshake(instr, CORE_STATUS, STORE_FAULT_EXCEPTION);
+    gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(MCAUSE));
+    pop_gpr_from_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, instr);
+    instr.push_back("mret");
+    gen_section("store_fault_handler", instr);
+  endfunction
+
   //---------------------------------------------------------------------------------------
   // Page table setup
   //---------------------------------------------------------------------------------------
@@ -810,7 +873,7 @@
   // all the other super pages are link PTE.
   virtual function void create_page_table();
     string instr[];
-    if((SATP_MODE != BARE) && (cfg.init_privileged_mode != MACHINE_MODE)) begin
+    if(cfg.virtual_addr_translation_on) begin
       page_table_list = riscv_page_table_list#(SATP_MODE)::
                         type_id::create("page_table_list");
       page_table_list.cfg = cfg;
@@ -830,10 +893,12 @@
   virtual function void gen_page_table_section();
     string page_table_section[$];
     if(page_table_list != null) begin
+      instr_stream.push_back(".pushsection .page_table,\"aw\",@progbits;");
       foreach(page_table_list.page_table[i]) begin
         page_table_list.page_table[i].gen_page_table_section(page_table_section);
         instr_stream = {instr_stream, page_table_section};
       end
+      instr_stream.push_back(".popsection;");
     end
   endfunction
 
@@ -841,6 +906,10 @@
   // In this case, the core will write to a specific location as the response to the interrupt, and
   // external PLIC unit can detect this response and process the interrupt clean up accordingly.
   virtual function void gen_plic_section(ref string interrupt_handler_instr[$]);
+    // Utilize the memory mapped handshake scheme to signal the testbench that the interrupt
+    // handling has been completed and we are about to xRET out of the handler
+    gen_signature_handshake(.instr(interrupt_handler_instr), .signature_type(CORE_STATUS),
+                            .core_status(FINISHED_IRQ));
   endfunction
 
   // Interrupt handler routine
@@ -924,6 +993,11 @@
 
   // Dump performance CSRs if applicable
   virtual function void dump_perf_stats();
+    foreach(implemented_csr[i]) begin
+      if (implemented_csr[i] inside {[MCYCLE:MHPMCOUNTER31H]}) begin
+        gen_signature_handshake(.instr(instr_stream), .signature_type(WRITE_CSR), .csr(implemented_csr[i]));
+      end
+    end
   endfunction
 
   // Write the generated program to a file
@@ -943,39 +1017,34 @@
                                         input signature_type_t signature_type,
                                         core_status_t core_status = INITIALIZED,
                                         test_result_t test_result = TEST_FAIL,
-                                        privileged_reg_t csr = MSCRATCH);
+                                        privileged_reg_t csr = MSCRATCH,
+                                        string addr_label = "");
     if (cfg.require_signature_addr) begin
-      string str;
-      str = $sformatf("li x%0d, 0x%0h", cfg.signature_addr_reg, cfg.signature_addr);
-      instr.push_back(str);
+      string str[$];
+      str = {$sformatf("li x%0d, 0x%0h", cfg.signature_addr_reg, cfg.signature_addr)};
+      instr = {instr, str};
       case (signature_type)
         // A single data word is written to the signature address.
         // Bits [7:0] contain the signature_type of CORE_STATUS, and the upper
         // XLEN-8 bits contain the core_status_t data.
         CORE_STATUS: begin
-          str = $sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, core_status);
-          instr.push_back(str);
-          str = $sformatf("slli x%0d, x%0d, 8", cfg.signature_data_reg, cfg.signature_data_reg);
-          instr.push_back(str);
-          str = $sformatf("addi x%0d, x%0d, 0x%0h", cfg.signature_data_reg,
-                          cfg.signature_data_reg, signature_type);
-          instr.push_back(str);
-          str = $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg);
-          instr.push_back(str);
+          str = {$sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, core_status),
+                 $sformatf("slli x%0d, x%0d, 8", cfg.signature_data_reg, cfg.signature_data_reg),
+                 $sformatf("addi x%0d, x%0d, 0x%0h", cfg.signature_data_reg,
+                           cfg.signature_data_reg, signature_type),
+                 $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg)};
+          instr = {instr, str};
         end
         // A single data word is written to the signature address.
         // Bits [7:0] contain the signature_type of TEST_RESULT, and the upper
         // XLEN-8 bits contain the test_result_t data.
         TEST_RESULT: begin
-          str = $sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, test_result);
-          instr.push_back(str);
-          str = $sformatf("slli x%0d, x%0d, 8", cfg.signature_data_reg, cfg.signature_data_reg);
-          instr.push_back(str);
-          str = $sformatf("addi x%0d, x%0d, 0x%0h", cfg.signature_data_reg,
-                          cfg.signature_data_reg, signature_type);
-          instr.push_back(str);
-          str = $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg);
-          instr.push_back(str);
+          str = {$sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, test_result),
+                 $sformatf("slli x%0d, x%0d, 8", cfg.signature_data_reg, cfg.signature_data_reg),
+                 $sformatf("addi x%0d, x%0d, 0x%0h", cfg.signature_data_reg,
+                           cfg.signature_data_reg, signature_type),
+                 $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg)};
+          instr = {instr, str};
         end
         // The first write to the signature address contains just the
         // signature_type of WRITE_GPR.
@@ -983,13 +1052,12 @@
         // each writing the data contained in one GPR, starting from x0 as the
         // first write, and ending with x31 as the 32nd write.
         WRITE_GPR: begin
-          str = $sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, signature_type);
-          instr.push_back(str);
-          str = $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg);
-          instr.push_back(str);
+          str = {$sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, signature_type),
+                 $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg)};
+          instr = {instr, str};
           for(int i = 0; i < 32; i++) begin
-            str = $sformatf("sw x%0x, 0(x%0d)", i, cfg.signature_addr_reg);
-            instr.push_back(str);
+            str = {$sformatf("sw x%0x, 0(x%0d)", i, cfg.signature_addr_reg)};
+            instr = {instr, str};
           end
         end
         // The first write to the signature address contains the
@@ -998,19 +1066,14 @@
         // It is followed by a second write to the signature address,
         // containing the data stored in the specified CSR.
         WRITE_CSR: begin
-          str = $sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, csr);
-          instr.push_back(str);
-          str = $sformatf("slli x%0d, x%0d, 8", cfg.signature_data_reg, cfg.signature_data_reg);
-          instr.push_back(str);
-          str = $sformatf("addi x%0d, x%0d, 0x%0h", cfg.signature_data_reg,
-                          cfg.signature_data_reg, signature_type);
-          instr.push_back(str);
-          str = $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg);
-          instr.push_back(str);
-          str = $sformatf("csrr x%0d, 0x%0h", cfg.signature_data_reg, csr);
-          instr.push_back(str);
-          str = $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg);
-          instr.push_back(str);
+          str = {$sformatf("li x%0d, 0x%0h", cfg.signature_data_reg, csr),
+                 $sformatf("slli x%0d, x%0d, 8", cfg.signature_data_reg, cfg.signature_data_reg),
+                 $sformatf("addi x%0d, x%0d, 0x%0h", cfg.signature_data_reg,
+                           cfg.signature_data_reg, signature_type),
+                 $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg),
+                 $sformatf("csrr x%0d, 0x%0h", cfg.signature_data_reg, csr),
+                 $sformatf("sw x%0d, 0(x%0d)", cfg.signature_data_reg, cfg.signature_addr_reg)};
+          instr = {instr, str};
         end
         default: begin
           `uvm_fatal(`gfn, "signature_type is not defined")
@@ -1025,6 +1088,7 @@
 
   virtual function void add_directed_instr_stream(string name, int unsigned ratio);
     directed_instr_stream_ratio[name] = ratio;
+    `uvm_info(`gfn, $sformatf("Adding directed instruction stream:%0s ratio:%0d/1000", name, ratio), UVM_LOW)
   endfunction
 
   virtual function void get_directed_instr_stream();
@@ -1048,7 +1112,7 @@
   virtual function void generate_directed_instr_stream(input string label,
                                                        input int unsigned original_instr_cnt,
                                                        input int unsigned min_insert_cnt = 0,
-                                                       input bit access_u_mode_mem = 1,
+                                                       input bit kernel_mode = 0,
                                                        output riscv_instr_stream instr_stream[]);
     uvm_object object_h;
     riscv_rand_instr_stream new_instr_stream;
@@ -1062,6 +1126,14 @@
       if(instr_insert_cnt <= min_insert_cnt) begin
         instr_insert_cnt = min_insert_cnt;
       end
+      `ifdef DSIM
+        // Temporarily skip loop instruction for dsim as it cannot support dynamic array
+        // randomization
+        if (uvm_is_match("*loop*", instr_stream_name)) begin
+          `uvm_info(`gfn, $sformatf("%0s is skipped", instr_stream_name), UVM_LOW)
+          continue;
+        end
+      `endif
       `uvm_info(get_full_name(), $sformatf("Insert directed instr stream %0s %0d/%0d times",
                                  instr_stream_name, instr_insert_cnt, original_instr_cnt), UVM_LOW)
       for(int i = 0; i < instr_insert_cnt; i++) begin
@@ -1073,7 +1145,7 @@
         if($cast(new_instr_stream, object_h)) begin
           new_instr_stream.cfg = cfg;
           new_instr_stream.label = $sformatf("%0s_instr_%0d", label, idx);
-          new_instr_stream.access_u_mode_mem = access_u_mode_mem;
+          new_instr_stream.kernel_mode = kernel_mode;
           `DV_CHECK_RANDOMIZE_FATAL(new_instr_stream)
           instr_stream = {instr_stream, new_instr_stream};
         end else begin
@@ -1085,45 +1157,84 @@
     instr_stream.shuffle();
   endfunction
 
-  // Generate sub-program in binary format, this is needed for illegal and HINT instruction
-  function void gen_bin_program();
-    if (bin_program != null) begin
-      string str;
-      instr_stream.push_back("instr_bin:");
-      instr_stream.push_back(".align 12");
-      foreach (instr_binary[i]) begin
-        if (((i+1) % 8 == 0) || (i == instr_binary.size() - 1)) begin
-          if (str != "")
-            instr_stream.push_back($sformatf(".word %0s, %0s", str, instr_binary[i]));
-          else
-            instr_stream.push_back($sformatf(".word %0s", instr_binary[i]));
-          str = "";
-        end else begin
-          if (str != "") begin
-            str = {str, ", ", instr_binary[i]};
-          end else begin
-            str = instr_binary[i];
-          end
-        end
-      end
-    end
-  endfunction
+  //---------------------------------------------------------------------------------------
+  // Generate the debug rom, and any related programs
+  //---------------------------------------------------------------------------------------
 
   // Generate the program in the debug ROM
   // Processor will fetch instruction from here upon receiving debug request from debug module
   virtual function void gen_debug_rom();
-    string push_gpr[$];
-    string pop_gpr[$];
     string instr[$];
+    string debug_end[$];
     string dret;
     string debug_sub_program_name[$] = {};
+    string str[$];
     if (riscv_instr_pkg::support_debug_mode) begin
-      // Signal that the core entered the debug rom regardless of whether the
-      // main debug rom program has been generated
-      gen_signature_handshake(instr, CORE_STATUS, IN_DEBUG_MODE);
-      format_section(instr);
+      dret = {format_string(" ", LABEL_STR_LEN), "dret"};
       // The main debug rom
-      if (cfg.gen_debug_section) begin
+      if (!cfg.gen_debug_section) begin
+        // If the debug section should not be generated, we just populate it
+        // with a dret instruction.
+        instr = {dret};
+        gen_section("debug_rom", instr);
+      end else begin
+        if (cfg.enable_ebreak_in_debug_rom) begin
+          // As execution of ebreak in D mode causes core to
+          // re-enter D mode, this directed sequence will be a loop that ensures the
+          // ebreak instruction will only be executed once to prevent infinitely
+          // looping back to the beginning of the debug rom.
+          // Write dscratch to random GPR and branch to debug_end if greater
+          // than 0, for ebreak loops.
+          // Use dscratch1 to store original GPR value.
+          str = {$sformatf("csrw 0x%0x, x%0d", DSCRATCH1, cfg.scratch_reg),
+                 $sformatf("csrr x%0d, 0x%0x", cfg.scratch_reg, DSCRATCH0)};
+          instr = {instr, str};
+          // send dpc and dcsr to testbench, as this handshake will be
+          // executed twice due to the ebreak loop, there should be no change
+          // in their values as by the Debug Mode Spec Ch. 4.1.8
+          gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(DCSR));
+          gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(DPC));
+          str = {$sformatf("beq x%0d, x0, 1f", cfg.scratch_reg),
+                 $sformatf("j debug_end"),
+                 $sformatf("1: csrr x%0d, 0x%0x", cfg.scratch_reg, DSCRATCH1)};
+          instr = {instr, str};
+        end
+        // Need to save off GPRs to avoid modifying program flow
+        push_gpr_to_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, instr);
+        // Signal that the core entered debug rom only if the rom is actually
+        // being filled with random instructions to prevent stress tests from
+        // having to execute unnecessary push/pop of GPRs on the stack ever
+        // time a debug request is sent
+        gen_signature_handshake(instr, CORE_STATUS, IN_DEBUG_MODE);
+        if (cfg.set_dcsr_ebreak) begin
+          // We want to set dcsr.ebreak(m/s/u) to 1'b1, depending on what modes
+          // are available.
+          // TODO(udinator) - randomize the dcsr.ebreak setup
+          gen_dcsr_ebreak(instr);
+        end
+        // Check dcsr.cause, and update dpc by 0x4 if the cause is ebreak, as
+        // ebreak will set set dpc to its own address, which will cause an
+        // infinite loop.
+        str = {$sformatf("csrr x%0d, 0x%0x", cfg.scratch_reg, DCSR),
+               $sformatf("slli x%0d, x%0d, 0x17", cfg.scratch_reg, cfg.scratch_reg),
+               $sformatf("srli x%0d, x%0d, 0x1d", cfg.scratch_reg, cfg.scratch_reg),
+               $sformatf("li x%0d, 0x1", cfg.signature_data_reg),
+               $sformatf("bne x%0d, x%0d, 2f", cfg.scratch_reg, cfg.signature_data_reg)};
+        instr = {instr, str};
+        increment_csr(DPC, 4, instr);
+        str = {"2: nop"};
+        instr = {instr, str};
+        // write DCSR to the testbench for any analysis
+        gen_signature_handshake(.instr(instr), .signature_type(WRITE_CSR), .csr(DCSR));
+        // Increment dscratch0 by 1 to update the loop counter for all ebreak
+        // tests
+        if (cfg.enable_ebreak_in_debug_rom || cfg.set_dcsr_ebreak) begin
+          // Add 1 to dscratch0
+          increment_csr(DSCRATCH0, 1, instr);
+          str = {$sformatf("csrr x%0d, 0x%0x", cfg.scratch_reg, DSCRATCH1)};
+          instr = {instr, str};
+        end
+        format_section(instr);
         gen_sub_program(debug_sub_program, debug_sub_program_name,
                         cfg.num_debug_sub_program, 1'b1, "debug_sub");
         debug_program = riscv_instr_sequence::type_id::create("debug_program");
@@ -1136,17 +1247,28 @@
                       cfg.num_debug_sub_program);
         debug_program.post_process_instr();
         debug_program.generate_instr_stream(.no_label(1'b1));
-        // Need to save off GPRs to avoid modifying program flow
-        push_gpr_to_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, push_gpr);
-        format_section(push_gpr);
-        pop_gpr_from_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, pop_gpr);
-        format_section(pop_gpr);
-        instr = {push_gpr, instr, debug_program.instr_string_list, pop_gpr};
         insert_sub_program(debug_sub_program, instr_stream);
+        instr = {instr, debug_program.instr_string_list};
+        gen_section("debug_rom", instr);
+        // Set dscratch0 back to 0x0 to prepare for the next entry into debug
+        // mode, and write dscratch0 and dcsr to the testbench for any
+        // analysis
+        if (cfg.enable_ebreak_in_debug_rom) begin
+          str = {$sformatf("csrwi 0x%0x, 0x0", DSCRATCH0)};
+          debug_end = {debug_end, str};
+        end
+        pop_gpr_from_kernel_stack(MSTATUS, MSCRATCH, cfg.mstatus_mprv, debug_end);
+        // We have been using dscratch1 to store the
+        // value of our given scratch register for use in ebreak loop, so we
+        // need to restore its value before returning from D mode
+        if (cfg.enable_ebreak_in_debug_rom) begin
+          str = {$sformatf("csrr x%0d, 0x%0x", cfg.scratch_reg, DSCRATCH1)};
+          debug_end = {debug_end, str};
+        end
+        format_section(debug_end);
+        debug_end = {debug_end, dret};
+        gen_section("debug_end", debug_end);
       end
-      dret = {format_string(" ", LABEL_STR_LEN), "dret"};
-      instr = {instr, dret};
-      gen_section("debug_rom", instr);
     end
   endfunction
 
@@ -1159,4 +1281,38 @@
     end
   endfunction
 
+  // Set dcsr.ebreak(m/s/u)
+  // TODO(udinator) - randomize the setup for these fields
+  virtual function void gen_dcsr_ebreak(ref string instr[$]);
+    string str;
+    if (MACHINE_MODE inside {riscv_instr_pkg::supported_privileged_mode}) begin
+      str = $sformatf("li x%0d, 0x8000", cfg.scratch_reg);
+      instr.push_back(str);
+      str = $sformatf("csrs dcsr, x%0d", cfg.scratch_reg);
+      instr.push_back(str);
+    end
+    if (SUPERVISOR_MODE inside {riscv_instr_pkg::supported_privileged_mode}) begin
+      str = $sformatf("li x%0d, 0x2000", cfg.scratch_reg);
+      instr.push_back(str);
+      str = $sformatf("csrs dcsr, x%0d", cfg.scratch_reg);
+      instr.push_back(str);
+    end
+    if (USER_MODE inside {riscv_instr_pkg::supported_privileged_mode}) begin
+      str = $sformatf("li x%0d, 0x1000", cfg.scratch_reg);
+      instr.push_back(str);
+      str = $sformatf("csrs dcsr, x%0d", cfg.scratch_reg);
+      instr.push_back(str);
+    end
+  endfunction
+
+  virtual function void increment_csr(privileged_reg_t csr, int val, ref string instr[$]);
+    string str;
+    str = $sformatf("csrr x%0d, 0x%0x", cfg.scratch_reg, csr);
+    instr.push_back(str);
+    str = $sformatf("addi x%0d, x%0d, 0x%0x", cfg.scratch_reg, cfg.scratch_reg, val);
+    instr.push_back(str);
+    str = $sformatf("csrw 0x%0x, x%0d", csr, cfg.scratch_reg);
+    instr.push_back(str);
+  endfunction
+
 endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_callstack_gen.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_callstack_gen.sv
index 31f4235..6acd90f 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_callstack_gen.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_callstack_gen.sv
@@ -78,12 +78,16 @@
   riscv_program program_h[];
   // Maximum call stack level
   int max_stack_level = 50;
+`ifdef DSIM
+  // Call stack level of each program
+  bit[10:0] stack_level[];
+`else
   // Call stack level of each program
   rand bit[10:0] stack_level[];
 
   constraint program_stack_level_c {
-    stack_level.size() == program_cnt;
     // The stack level is assigned in ascending order to avoid call loop
+    stack_level.size() == program_cnt;
     stack_level[0] == 0;
     foreach(stack_level[i]) {
       if(i > 0) {
@@ -95,6 +99,8 @@
     }
   }
 
+`endif
+
   `uvm_object_utils(riscv_callstack_gen)
 
   function new (string name = "");
@@ -114,7 +120,16 @@
   // implemented with post randomize rather than constraints for performance considerations.
   // Solving a complex call stack with SV constraint could take considerable time for the solver.
   function void post_randomize();
-    int last_level = stack_level[program_cnt-1];
+    int last_level;
+    `ifdef DSIM
+      stack_level = new[program_cnt];
+      foreach (stack_level[i]) begin
+        if (i > 0) begin
+          stack_level[i] = stack_level[i-1] + $urandom_range(0,1);
+        end
+      end
+    `endif
+    last_level = stack_level[program_cnt-1];
     foreach(program_h[i]) begin
       program_h[i].program_id = i;
       program_h[i].call_stack_level = stack_level[i];
@@ -128,8 +143,14 @@
       int sub_program_id_pool[];
       int sub_program_cnt[];
       int idx;
-      program_list = stack_level.find_index() with (item == i);
-      next_program_list = stack_level.find_index() with (item == i+1);
+      for (int j=0; j<program_cnt; j++) begin
+        if (stack_level[j] == i) begin
+          program_list.push_back(j);
+        end
+        if (stack_level[j] == i+1) begin
+          next_program_list.push_back(j);
+        end
+      end
       // Randmly duplicate some sub programs in the pool to create a case that
       // one sub program is called by multiple caller. Also it's possible to call
       // the same sub program in one program multiple times.
@@ -147,19 +168,18 @@
       sub_program_id_pool.shuffle();
       sub_program_cnt = new[program_list.size()];
       `uvm_info(get_full_name(), $sformatf("%0d programs @Lv%0d-> %0d programs at next level",
-                program_list.size(), i, sub_program_id_pool.size()), UVM_HIGH)
+                program_list.size(), i, sub_program_id_pool.size()), UVM_LOW)
       // Distribute the programs of the next level among the programs of current level
       // Make sure all program has a caller so that no program is obsolete.
-      `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(sub_program_cnt,
-        sub_program_cnt.sum() == sub_program_id_pool.size();
-        foreach(sub_program_cnt[j]) {
-          sub_program_cnt[j] inside {[0: sub_program_id_pool.size()]};
-        })
+      foreach (sub_program_id_pool[j]) begin
+        int caller_id = $urandom_range(0, sub_program_cnt.size()-1);
+        sub_program_cnt[caller_id]++;
+      end
       foreach(program_list[j]) begin
         int id = program_list[j];
         program_h[id].sub_program_id = new[sub_program_cnt[j]];
         `uvm_info(get_full_name(), $sformatf("%0d sub programs are assigned to program[%0d]",
-                  sub_program_cnt[j], id), UVM_HIGH)
+                  sub_program_cnt[j], id), UVM_LOW)
         foreach(program_h[id].sub_program_id[k]) begin
           program_h[id].sub_program_id[k] = sub_program_id_pool[idx];
           idx++;
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_data_page_gen.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_data_page_gen.sv
index bb0c67f..e80ab35 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_data_page_gen.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_data_page_gen.sv
@@ -23,6 +23,7 @@
 
   riscv_instr_gen_config  cfg;
   string                  data_page_str[$];
+  mem_region_t          mem_region_setting[$];
 
   `uvm_object_utils(riscv_data_page_gen)
 
@@ -48,29 +49,48 @@
     end
   endfunction
 
-  // Generate the assembly code for the data section
+  // Generate data pages for all memory regions
   function void gen_data_page(data_pattern_t pattern, bit is_kernel = 1'b0);
     string tmp_str;
     bit [7:0] tmp_data[];
     int page_cnt;
     int page_size;
     data_page_str = {};
-    page_cnt = is_kernel ? riscv_instr_pkg::num_of_kernel_data_pages :
-                           riscv_instr_pkg::num_of_data_pages;
-    page_size = is_kernel ? riscv_instr_pkg::kernel_data_page_size :
-                            riscv_instr_pkg::data_page_size;
-    for(int section_idx = 0; section_idx < page_cnt; section_idx++) begin
-      if(is_kernel) begin
-        data_page_str.push_back($sformatf("kernel_data_page_%0d:", section_idx));
-      end else begin
-        data_page_str.push_back($sformatf("data_page_%0d:", section_idx));
+    if (is_kernel) begin
+      mem_region_setting = cfg.s_mem_region;
+    end else begin
+      mem_region_setting = cfg.mem_region;
+    end
+    if (is_kernel) begin
+      // All kernel data pages in the same section
+      data_page_str.push_back(".pushsection .kernel_data,\"aw\",@progbits;");
+    end
+    foreach (mem_region_setting[i]) begin
+      `uvm_info(`gfn, $sformatf("Generate data section: %0s size:0x%0x  xwr:0x%0x]",
+                                mem_region_setting[i].name,
+                                mem_region_setting[i].size_in_bytes,
+                                mem_region_setting[i].xwr), UVM_LOW)
+      if (!is_kernel) begin
+        data_page_str.push_back($sformatf(".pushsection .%0s,\"aw\",@progbits;",
+                                          mem_region_setting[i].name));
       end
-      data_page_str.push_back($sformatf(".align %0d", riscv_instr_pkg::data_page_alignment));
+      data_page_str.push_back($sformatf("%0s:", mem_region_setting[i].name));
+      page_size = mem_region_setting[i].size_in_bytes;
       for(int i = 0; i < page_size; i+= 32) begin
-        gen_data(.idx(i), .pattern(pattern), .num_of_bytes(32), .data(tmp_data));
+        if (page_size-i >= 32) begin
+          gen_data(.idx(i), .pattern(pattern), .num_of_bytes(32), .data(tmp_data));
+        end else begin
+          gen_data(.idx(i), .pattern(pattern), .num_of_bytes(page_size-i), .data(tmp_data));
+        end
         tmp_str = format_string($sformatf(".word %0s", format_data(tmp_data)), LABEL_STR_LEN);
         data_page_str.push_back(tmp_str);
       end
+      if (!is_kernel) begin
+        data_page_str.push_back(".popsection;");
+      end
+    end
+    if (is_kernel) begin
+      data_page_str.push_back(".popsection;");
     end
   endfunction
 
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_directed_instr_lib.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_directed_instr_lib.sv
index bd86547..3835832 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_directed_instr_lib.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_directed_instr_lib.sv
@@ -40,6 +40,51 @@
 
 endclass
 
+// Base class for memory access stream
+class riscv_mem_access_stream extends riscv_directed_instr_stream;
+
+  int             max_data_page_id;
+  mem_region_t    data_page[$];
+
+  `uvm_object_utils(riscv_mem_access_stream)
+  `uvm_object_new
+
+  function void pre_randomize();
+    if(kernel_mode) begin
+      data_page = cfg.s_mem_region;
+    end else begin
+      data_page = cfg.mem_region;
+    end
+    max_data_page_id = data_page.size();
+  endfunction
+
+  // Use "la" instruction to initialize the base regiseter
+  virtual function void add_rs1_init_la_instr(riscv_reg_t gpr, int id, int base = 0);
+    riscv_pseudo_instr la_instr;
+    la_instr = riscv_pseudo_instr::type_id::create("la_instr");
+    la_instr.pseudo_instr_name = LA;
+    la_instr.rd = gpr;
+    if(kernel_mode) begin
+      la_instr.imm_str = $sformatf("%s+%0d", cfg.s_mem_region[id].name, base);
+    end else begin
+      la_instr.imm_str = $sformatf("%s+%0d", cfg.mem_region[id].name, base);
+    end
+    instr_list.push_front(la_instr);
+  endfunction
+
+  // Insert some other instructions to mix with mem_access instruction
+  virtual function void add_mixed_instr(int instr_cnt);
+    riscv_instr_base instr;
+    setup_allowed_instr(1, 1);
+    for(int i = 0; i < instr_cnt; i ++) begin
+      instr = riscv_instr_base::type_id::create("instr");
+      randomize_instr(instr);
+      insert_instr(instr);
+    end
+  endfunction
+
+endclass
+
 // Create a infinte zero instruction loop, test if we can interrupt or
 // enter debug mode while core is executing this loop
 class riscv_infinte_loop_instr extends riscv_directed_instr_stream;
@@ -90,34 +135,23 @@
 // For JAL, restore the stack before doing the jump
 class riscv_jump_instr extends riscv_rand_instr_stream;
 
-  rand riscv_instr_base    jump;
-  rand riscv_instr_base    addi;
-  rand riscv_pseudo_instr  la;
-  rand riscv_rand_instr    branch;
-  rand int                 imm;
-  rand bit                 enable_branch;
-  rand int                 mixed_instr_cnt;
-  riscv_instr_base         stack_exit_instr[];
-  string                   target_program_label;
-  int                      idx;
+  riscv_instr_base     jump;
+  riscv_instr_base     addi;
+  riscv_pseudo_instr   la;
+  riscv_instr_base     branch;
+  rand riscv_reg_t     gpr;
+  rand int             imm;
+  rand bit             enable_branch;
+  rand int             mixed_instr_cnt;
+  riscv_instr_base     stack_exit_instr[];
+  string               target_program_label;
+  int                  idx;
+  bit                  use_jalr;
 
   constraint instr_c {
-    solve jump.instr_name before addi.imm;
-    solve jump.instr_name before addi.rs1;
-    jump.instr_name dist {JAL := 1, JALR := 1};
-    jump.rd == RA;
-    !(addi.rs1 inside {cfg.reserved_regs, ZERO});
-    addi.rs1 == la.rd;
-    addi.rd  == la.rd;
-    // Avoid using negative offset -1024
-    addi.imm != 'hFFFF_FC00;
-    addi.imm != 1024;
-    jump.imm == ~addi.imm + 1;
-    jump.rs1 == addi.rd;
-    addi.instr_name == ADDI;
-    branch.category == BRANCH;
-    la.pseudo_instr_name == LA;
-    soft mixed_instr_cnt inside {[5:10]};
+    !(gpr inside {cfg.reserved_regs, ZERO});
+    imm inside {[-1023:1023]};
+    mixed_instr_cnt inside {[5:10]};
   }
 
   `uvm_object_utils(riscv_jump_instr)
@@ -127,21 +161,33 @@
     jump = riscv_instr_base::type_id::create("jump");
     la = riscv_pseudo_instr::type_id::create("la");
     addi = riscv_instr_base::type_id::create("addi");
-    branch = riscv_rand_instr::type_id::create("branch");
-    instr_list.rand_mode(0);
-  endfunction
-
-  function void pre_randomize();
-    branch.cfg = cfg;
+    branch = riscv_instr_base::type_id::create("branch");
   endfunction
 
   function void post_randomize();
     riscv_instr_base instr[];
+    `DV_CHECK_RANDOMIZE_WITH_FATAL(jump,
+      (use_jalr) -> (instr_name == JALR);
+      instr_name dist {JAL := 1, JALR := 9};
+      rd == RA;
+      rs1 == gpr;
+    )
+    `DV_CHECK_RANDOMIZE_WITH_FATAL(addi,
+      rs1 == gpr;
+      instr_name == ADDI;
+      rd  == gpr;
+    )
+    `DV_CHECK_RANDOMIZE_WITH_FATAL(branch,
+      instr_name inside {BEQ, BNE, BLT, BGE, BLTU, BGEU};)
+    la.pseudo_instr_name = LA;
+    la.imm_str = target_program_label;
+    la.rd = gpr;
     // Generate some random instructions to mix with jump instructions
-    reserved_rd = {addi.rs1};
+    reserved_rd = {gpr};
     initialize_instr_list(mixed_instr_cnt);
     gen_instr(1'b1);
-    la.imm_str = target_program_label;
+    addi.imm_str = $sformatf("%0d", imm);
+    jump.imm_str = $sformatf("%0d", -imm);
     // The branch instruction is always inserted right before the jump instruction to avoid
     // skipping other required instructions like restore stack, load jump base etc.
     // The purse of adding the branch instruction here is to cover branch -> jump scenario.
@@ -188,8 +234,9 @@
   endfunction
 
   function void init();
-    // Save RA, T0 and all reserved loop regs
-    saved_regs = {RA, T0, cfg.loop_regs};
+    // Save RA, T0
+    reserved_rd = {RA, T0};
+    saved_regs = {RA, T0};
     num_of_reg_to_save = saved_regs.size();
     if(num_of_reg_to_save * (XLEN/8) > stack_len) begin
       `uvm_fatal(get_full_name(), $sformatf("stack len [%0d] is not enough to store %d regs",
@@ -232,8 +279,12 @@
       // Cover jal -> branch scenario, the branch is added before push stack operation
       branch_instr = riscv_rand_instr::type_id::create("branch_instr");
       branch_instr.cfg = cfg;
-      `DV_CHECK_RANDOMIZE_WITH_FATAL(branch_instr,
-                                     category == BRANCH;)
+      `ifdef DSIM
+        `DV_CHECK_RANDOMIZE_WITH_FATAL(branch_instr,
+                                       instr_name inside {[BEQ:BGEU], C_BEQZ, C_BNEZ};)
+      `else
+        `DV_CHECK_RANDOMIZE_WITH_FATAL(branch_instr, category == BRANCH;)
+      `endif
       branch_instr.imm_str = push_start_label;
       branch_instr.branch_assigned = 1'b1;
       push_stack_instr[0].label = push_start_label;
@@ -266,6 +317,7 @@
   endfunction
 
   function void init();
+    reserved_rd = {RA, T0};
     num_of_reg_to_save = saved_regs.size();
     if(num_of_reg_to_save * 4 > stack_len) begin
       `uvm_fatal(get_full_name(), $sformatf("stack len [%0d] is not enough to store %d regs",
@@ -337,7 +389,8 @@
     backward_branch_instr_stream.initialize_instr_list(branch_instr_stream_len);
   endfunction
 
-  virtual function void gen_instr(bit no_branch = 1'b0, bit no_load_store = 1'b1);
+  virtual function void gen_instr(bit no_branch = 1'b0, bit no_load_store = 1'b1,
+                                  bit is_debug_program = 1'b0);
     int branch_offset;
     super.gen_instr(1'b1);
     forward_branch_instr_stream.gen_instr();
@@ -414,7 +467,6 @@
 
   function new(string name = "");
     super.new(name);
-    instr_list.rand_mode(0);
     li_instr = riscv_pseudo_instr::type_id::create("li_instr");
     csr_instr = riscv_instr_base::type_id::create("csr_instr");
     ip = riscv_privil_reg::type_id::create("ip");
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_illegal_instr.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_illegal_instr.sv
index 2cd25c6..b476433 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_illegal_instr.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_illegal_instr.sv
@@ -39,9 +39,10 @@
                                  7'b0100011,
                                  7'b0110111,
                                  7'b1100011,
+                                 7'b0110011,
                                  7'b1100111,
-                                 7'b1101111,
-                                 7'b1110011};
+                                 7'b1110011,
+                                 7'b1101111};
 
   rand illegal_instr_type_e  exception;
   rand bit [31:0]            instr_bin;
@@ -59,6 +60,8 @@
     solve opcode before instr_bin;
     solve func3 before instr_bin;
     solve func7 before instr_bin;
+    solve c_msb before instr_bin;
+    solve c_op before instr_bin;
     if (compressed) {
       instr_bin[1:0] == c_op;
       instr_bin[15:13] == c_msb;
@@ -108,10 +111,23 @@
 
   constraint hint_instr_c {
     if (exception == kHintInstr) {
+      // C.ADDI
       ((c_msb == 3'b000) && (c_op == 2'b01) && ({instr_bin[12], instr_bin[6:2]} == 6'b0)) ||
+      // C.LI
       ((c_msb == 3'b010) && (c_op == 2'b01) && (instr_bin[11:7] == 5'b0)) ||
-      ((c_msb == 3'b011) && (c_op == 2'b01) && (instr_bin[11:7] == 5'b0)) ||
-      ((c_msb == 3'b100) && (c_op == 2'b10) && (instr_bin[12:7] == 6'b0) &&
+      // C.SRAI64, C.SRLI64
+      ((c_msb == 3'b100) && (c_op == 2'b01) && (instr_bin[12:11] == 2'b00) &&
+                                               (instr_bin[6:2] == 5'b0)) ||
+      // C.LUI
+      ((c_msb == 3'b011) && (c_op == 2'b01) && (instr_bin[11:7] == 5'b0) &&
+                                               ({instr_bin[12], instr_bin[6:2]} != 6'b0)) ||
+      // C.SLLI
+      ((c_msb == 3'b000) && (c_op == 2'b10) && (instr_bin[11:7] == 5'b0))  ||
+      // C.SLLI64
+      ((c_msb == 3'b000) && (c_op == 2'b10) && (instr_bin[11:7] != 5'b0) && !instr_bin[12] &&
+                                               (instr_bin[6:2] == 0))  ||
+      // C.ADD
+      ((c_msb == 3'b100) && (c_op == 2'b10) && (instr_bin[11:7] == 5'b0) && instr_bin[12] &&
                                                (instr_bin[6:2] != 0));
     }
   }
@@ -213,9 +229,6 @@
     if (riscv_instr_pkg::RV32A inside {riscv_instr_pkg::supported_isa}) begin
       legal_opcode = {legal_opcode, 7'b0101111};
     end
-    if (riscv_instr_pkg::RV32M inside {riscv_instr_pkg::supported_isa}) begin
-      legal_opcode = {legal_opcode, 7'b0110011};
-    end
     if ((riscv_instr_pkg::RV64I inside {riscv_instr_pkg::supported_isa}) ||
          riscv_instr_pkg::RV64M inside {riscv_instr_pkg::supported_isa}) begin
       legal_opcode = {legal_opcode, 7'b0111011};
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_base.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_base.sv
index 9f9bf87..58f1046 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_base.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_base.sv
@@ -92,6 +92,7 @@
         imm_len == 8;
       }
     }
+    imm_len <= 20;
   }
 
   constraint imm_val_c {
@@ -113,7 +114,7 @@
     if (instr_name == C_JR) {
       rs1 != ZERO;
     }
-    if (instr_name == C_MV) {
+    if (instr_name inside {C_ADD, C_MV}) {
       rs2 != ZERO;
     }
   }
@@ -128,21 +129,9 @@
     }
   }
 
-  constraint fence_c {
-    if (instr_name == FENCE) {
-      rs1 == ZERO;
-      rd  == ZERO;
-      imm == 0;
-    }
-    if (instr_name == FENCEI) {
-      rs1 == ZERO;
-      rd  == ZERO;
-      imm == 0;
-    }
-  }
-
   // Cannot shift more than the width of the bus
   constraint shift_imm_val_c {
+    solve category before imm;
     if(category == SHIFT) {
       if(group == RV64I) {
         // The new instruction in RV64I only handles 32 bits value
@@ -237,13 +226,14 @@
   `add_instr(JALR,   I_FORMAT, JUMP, RV32I)
   // SYNCH instructions
   `add_instr(FENCE,   I_FORMAT, SYNCH, RV32I)
-  `add_instr(FENCEI,  I_FORMAT, SYNCH, RV32I)
+  `add_instr(FENCE_I,  I_FORMAT, SYNCH, RV32I)
   // SYSTEM instructions
   `add_instr(ECALL,   I_FORMAT, SYSTEM, RV32I)
   `add_instr(EBREAK,  I_FORMAT, SYSTEM, RV32I)
   `add_instr(URET,    I_FORMAT, SYSTEM, RV32I)
   `add_instr(SRET,    I_FORMAT, SYSTEM, RV32I)
   `add_instr(MRET,    I_FORMAT, SYSTEM, RV32I)
+  `add_instr(DRET,    I_FORMAT, SYSTEM, RV32I)
   `add_instr(WFI,     I_FORMAT, INTERRUPT, RV32I)
   // CSR instructions
   `add_instr(CSRRW,  R_FORMAT, CSR, RV32I, UIMM)
@@ -330,7 +320,7 @@
   `add_instr(C_LI,       CI_FORMAT, ARITHMETIC, RV32C)
   `add_instr(C_LUI,      CI_FORMAT, ARITHMETIC, RV32C, NZUIMM)
   `add_instr(C_SUB,      CS_FORMAT, ARITHMETIC, RV32C)
-  `add_instr(C_ADD,      CS_FORMAT, ARITHMETIC, RV32C)
+  `add_instr(C_ADD,      CR_FORMAT, ARITHMETIC, RV32C)
   `add_instr(C_NOP,      CI_FORMAT, ARITHMETIC, RV32C)
   `add_instr(C_MV,       CR_FORMAT, ARITHMETIC, RV32C)
   `add_instr(C_ANDI,     CB_FORMAT, LOGICAL, RV32C)
@@ -392,17 +382,17 @@
   `add_instr(AMOMAXU_W, R_FORMAT, AMO, RV32A)
 
   // RV64A
-  `add_instr(LR_D,      R_FORMAT, LOAD, RV32A)
-  `add_instr(SC_D,      R_FORMAT, STORE, RV32A)
-  `add_instr(AMOSWAP_D, R_FORMAT, AMO, RV32A)
-  `add_instr(AMOADD_D,  R_FORMAT, AMO, RV32A)
-  `add_instr(AMOAND_D,  R_FORMAT, AMO, RV32A)
-  `add_instr(AMOOR_D,   R_FORMAT, AMO, RV32A)
-  `add_instr(AMOXOR_D,  R_FORMAT, AMO, RV32A)
-  `add_instr(AMOMIN_D,  R_FORMAT, AMO, RV32A)
-  `add_instr(AMOMAX_D,  R_FORMAT, AMO, RV32A)
-  `add_instr(AMOMINU_D, R_FORMAT, AMO, RV32A)
-  `add_instr(AMOMAXU_D, R_FORMAT, AMO, RV32A)
+  `add_instr(LR_D,      R_FORMAT, LOAD, RV64A)
+  `add_instr(SC_D,      R_FORMAT, STORE, RV64A)
+  `add_instr(AMOSWAP_D, R_FORMAT, AMO, RV64A)
+  `add_instr(AMOADD_D,  R_FORMAT, AMO, RV64A)
+  `add_instr(AMOAND_D,  R_FORMAT, AMO, RV64A)
+  `add_instr(AMOOR_D,   R_FORMAT, AMO, RV64A)
+  `add_instr(AMOXOR_D,  R_FORMAT, AMO, RV64A)
+  `add_instr(AMOMIN_D,  R_FORMAT, AMO, RV64A)
+  `add_instr(AMOMAX_D,  R_FORMAT, AMO, RV64A)
+  `add_instr(AMOMINU_D, R_FORMAT, AMO, RV64A)
+  `add_instr(AMOMAXU_D, R_FORMAT, AMO, RV64A)
 
   // Supervisor Instructions
   `add_instr(SFENCE_VMA, R_FORMAT,SYNCH,RV32I)
@@ -420,15 +410,21 @@
         update_imm_str();
       end
     end
-    if (format inside {R_FORMAT, S_FORMAT, B_FORMAT, CSS_FORMAT, CS_FORMAT}) begin
+    if (format inside {R_FORMAT, S_FORMAT, B_FORMAT, CSS_FORMAT, CS_FORMAT, CR_FORMAT}) begin
       has_rs2 = 1'b1;
     end
-    if (!(format inside {J_FORMAT, U_FORMAT, CJ_FORMAT, CSS_FORMAT})) begin
+    if (!(format inside {J_FORMAT, U_FORMAT, CJ_FORMAT, CSS_FORMAT, CR_FORMAT, CI_FORMAT})) begin
       has_rs1 = 1'b1;
     end
     if (!(format inside {CJ_FORMAT, CB_FORMAT, CS_FORMAT, CSS_FORMAT, B_FORMAT, S_FORMAT})) begin
       has_rd = 1'b1;
     end
+    if (category == CSR) begin
+      has_rs2 = 1'b0;
+      if (instr_name inside {CSRRWI, CSRRSI, CSRRCI}) begin
+        has_rs1 = 1'b0;
+      end
+    end
   endfunction
 
   function void mask_imm();
@@ -469,16 +465,35 @@
   function riscv_reg_t gen_rand_gpr(riscv_reg_t included_reg[] = {},
                                     riscv_reg_t excluded_reg[] = {});
     riscv_reg_t gpr;
-    `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(gpr,
-                                       if (is_compressed) {
-                                         gpr inside {[S0:A5]};
-                                       }
-                                       if (excluded_reg.size() != 0) {
-                                         !(gpr inside {excluded_reg});
-                                       }
-                                       if (included_reg.size() != 0) {
-                                         gpr inside {included_reg};
-                                       })
+    int unsigned i;
+    riscv_reg_t legal_gpr[$];
+    if (included_reg.size() > 0) begin
+      legal_gpr = included_reg;
+      while (is_compressed && (i < legal_gpr.size())) begin
+        if (legal_gpr[i] < S0 || legal_gpr[i] > A5) begin
+          legal_gpr.delete(i);
+        end else begin
+          i++;
+        end
+      end
+    end else if (is_compressed) begin
+      legal_gpr = riscv_instr_pkg::compressed_gpr;
+    end else begin
+      legal_gpr = riscv_instr_pkg::all_gpr;
+    end
+    if (excluded_reg.size() > 0) begin
+      i = 0;
+      while (i < legal_gpr.size()) begin
+        if (legal_gpr[i] inside {excluded_reg}) begin
+          legal_gpr.delete(i);
+        end else begin
+          i++;
+        end
+      end
+    end
+    `DV_CHECK_FATAL(legal_gpr.size() > 0)
+    `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(i, i < legal_gpr.size();)
+    gpr = legal_gpr[i];
     return gpr;
   endfunction
 
@@ -521,9 +536,13 @@
         I_FORMAT: // instr rd,rs1,imm
           if(instr_name == NOP)
             asm_str = "nop";
+          else if(instr_name == C_NOP)
+            asm_str = "c.nop";
+          else if(instr_name == WFI)
+            asm_str = "wfi";
           else if(instr_name == FENCE)
             asm_str = $sformatf("fence"); // TODO: Support all fence combinations
-          else if(instr_name == FENCEI)
+          else if(instr_name == FENCE_I)
             asm_str = "fence.i";
           else if(category == LOAD) // Use psuedo instruction format
             asm_str = $sformatf("%0s%0s, %0s(%0s)", asm_str, rd.name(), get_imm(), rs1.name());
@@ -599,10 +618,10 @@
       MULH, MULHSU, MULHU, DIV, DIVU, REM, REMU                    : get_opcode = 7'b0110011;
       ADDIW, SLLIW, SRLIW, SRAIW                                   : get_opcode = 7'b0011011;
       MULH, MULHSU, MULHU, DIV, DIVU, REM, REMU                    : get_opcode = 7'b0110011;
-      FENCE, FENCEI                                                : get_opcode = 7'b0001111;
+      FENCE, FENCE_I                                               : get_opcode = 7'b0001111;
       ECALL, EBREAK, CSRRW, CSRRS, CSRRC, CSRRWI, CSRRSI, CSRRCI   : get_opcode = 7'b1110011;
       ADDW, SUBW, SLLW, SRLW, SRAW, MULW, DIVW, DIVUW, REMW, REMUW : get_opcode = 7'b0111011;
-      ECALL, EBREAK, URET, SRET, MRET, WFI, SFENCE_VMA             : get_opcode = 7'b1110011;
+      ECALL, EBREAK, URET, SRET, MRET, DRET, WFI, SFENCE_VMA       : get_opcode = 7'b1110011;
       default : `uvm_fatal(`gfn, $sformatf("Unsupported instruction %0s", instr_name.name()))
     endcase
   endfunction
@@ -661,7 +680,7 @@
       OR         : get_func3 = 3'b110;
       AND        : get_func3 = 3'b111;
       FENCE      : get_func3 = 3'b000;
-      FENCEI     : get_func3 = 3'b001;
+      FENCE_I    : get_func3 = 3'b001;
       ECALL      : get_func3 = 3'b000;
       EBREAK     : get_func3 = 3'b000;
       CSRRW      : get_func3 = 3'b001;
@@ -744,7 +763,7 @@
       C_SWSP     : get_func3 = 3'b110;
       C_FSWSP    : get_func3 = 3'b111;
       C_SDSP     : get_func3 = 3'b111;
-      ECALL, EBREAK, URET, SRET, MRET, WFI, SFENCE_VMA : get_func3 = 3'b000;
+      ECALL, EBREAK, URET, SRET, MRET, DRET, WFI, SFENCE_VMA : get_func3 = 3'b000;
       default : `uvm_fatal(`gfn, $sformatf("Unsupported instruction %0s", instr_name.name()))
     endcase
   endfunction
@@ -765,7 +784,7 @@
       OR     : get_func7 = 7'b0000000;
       AND    : get_func7 = 7'b0000000;
       FENCE  : get_func7 = 7'b0000000;
-      FENCEI : get_func7 = 7'b0000000;
+      FENCE_I : get_func7 = 7'b0000000;
       ECALL  : get_func7 = 7'b0000000;
       EBREAK : get_func7 = 7'b0000000;
       SLLIW  : get_func7 = 7'b0000000;
@@ -794,6 +813,7 @@
       URET   : get_func7 = 7'b0000000;
       SRET   : get_func7 = 7'b0001000;
       MRET   : get_func7 = 7'b0011000;
+      DRET   : get_func7 = 7'b0111101;
       WFI    : get_func7 = 7'b0001000;
       SFENCE_VMA: get_func7 = 7'b0001001;
       default : `uvm_fatal(`gfn, $sformatf("Unsupported instruction %0s", instr_name.name()))
@@ -812,7 +832,7 @@
             binary = $sformatf("%8h", {imm[31:12], rd,  get_opcode()});
         end
         I_FORMAT: begin
-          if(instr_name inside {FENCE, FENCEI})
+          if(instr_name inside {FENCE, FENCE_I})
             binary = $sformatf("%8h", {17'b0, get_func3(), 5'b0, get_opcode()});
           else if(category == CSR)
             binary = $sformatf("%8h", {csr[10:0], imm[4:0], get_func3(), rd, get_opcode()});
@@ -820,6 +840,8 @@
             binary = $sformatf("%8h", {get_func7(), 18'b0, get_opcode()});
           else if(instr_name inside {URET, SRET, MRET})
             binary = $sformatf("%8h", {get_func7(), 5'b10, 13'b0, get_opcode()});
+          else if(instr_name inside {DRET})
+            binary = $sformatf("%8h", {get_func7(), 5'b10010, 13'b0, get_opcode()});
           else if(instr_name == EBREAK)
             binary = $sformatf("%8h", {get_func7(), 5'b01, 13'b0, get_opcode()});
           else if(instr_name == WFI)
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_cov_item.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_cov_item.sv
new file mode 100644
index 0000000..064e00c
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_cov_item.sv
@@ -0,0 +1,229 @@
+class riscv_instr_cov_item extends riscv_instr_base;
+
+  typedef enum bit[1:0] {
+    POSITIVE, NEGATIVE
+  } operand_sign_e;
+
+  typedef enum bit[1:0] {
+    EQUAL, LARGER, SMALLER
+  } compare_result_e;
+
+  typedef enum bit [1:0] {
+    IDENTICAL, OPPOSITE, SIMILAR, DIFFERENT
+  } logical_similarity_e;
+
+  typedef enum bit[2:0] {
+    NORMAL_VAL, MIN_VAL, MAX_VAL, ZERO_VAL
+  } special_val_e;
+
+  rand bit [XLEN-1:0]   rs1_value;
+  rand bit [XLEN-1:0]   rs2_value;
+  rand bit [XLEN-1:0]   rd_value;
+  bit [31:0]            binary;
+  bit [XLEN-1:0]        pc;
+  bit [XLEN-1:0]        mem_addr;
+
+  bit                   unaligned_pc;
+  bit                   unaligned_mem_access;
+  bit                   compressed;
+  bit                   branch_hit;
+  operand_sign_e        rs1_sign;
+  operand_sign_e        rs2_sign;
+  operand_sign_e        imm_sign;
+  operand_sign_e        rd_sign;
+  hazard_e              gpr_hazard;
+  hazard_e              lsu_hazard;
+  special_val_e         rs1_special_val;
+  special_val_e         rs2_special_val;
+  special_val_e         rd_special_val;
+  special_val_e         imm_special_val;
+  compare_result_e      compare_result;
+  logical_similarity_e  logical_similarity;
+  string                trace;
+
+  `uvm_object_utils(riscv_instr_cov_item)
+  `uvm_object_new
+
+  virtual function void pre_sample();
+    unaligned_pc = (pc[1:0] != 2'b00);
+    rs1_sign = get_operand_sign(rs1_value);
+    rs2_sign = get_operand_sign(rs2_value);
+    rd_sign = get_operand_sign(rd_value);
+    imm_sign = get_imm_sign(imm);
+    rs1_special_val = get_operand_special_val(rs1_value);
+    rd_special_val = get_operand_special_val(rd_value);
+    rs2_special_val = get_operand_special_val(rs2_value);
+    if ((format != R_FORMAT) && (format != CR_FORMAT)) begin
+      imm_special_val = get_imm_special_val(imm);
+    end
+    if (category inside {COMPARE, BRANCH}) begin
+      compare_result = get_compare_result();
+    end
+    if (category inside {LOAD, STORE}) begin
+      unaligned_mem_access = is_unaligned_mem_access();
+      if (unaligned_mem_access) begin
+        `uvm_info(`gfn, $sformatf("Unaligned: %0s, mem_addr:%0x", instr_name.name(), mem_addr), UVM_LOW)
+      end
+    end
+    if (category == LOGICAL) begin
+      logical_similarity = get_logical_similarity();
+    end
+    if (category == BRANCH) begin
+      branch_hit = is_branch_hit();
+    end
+  endfunction
+
+  function operand_sign_e get_operand_sign(bit [XLEN-1:0] value);
+    if (value[XLEN-1]) begin
+      return NEGATIVE;
+    end else begin
+      return POSITIVE;
+    end
+  endfunction
+
+  function bit is_unaligned_mem_access();
+    if ((instr_name inside {LWU, LD, SD, C_LD, C_SD}) && (mem_addr % 8 != 0)) begin
+      return 1'b1;
+    end else if ((instr_name inside {LW, SW, C_LW, C_SW}) && (mem_addr % 4 != 0)) begin
+      return 1'b1;
+    end else if ((instr_name inside {LH, LHU, SH}) && (mem_addr % 2 != 0)) begin
+      return 1'b1;
+    end begin
+      return 1'b0;
+    end
+  endfunction
+
+  function operand_sign_e get_imm_sign(bit [31:0] value);
+    if (value[31]) begin
+      return NEGATIVE;
+    end else begin
+      return POSITIVE;
+    end
+  endfunction
+
+  function special_val_e get_operand_special_val(bit [XLEN-1:0] value);
+    if (value == 0) begin
+      return ZERO_VAL;
+    end else if (value == '1 << (XLEN-1)) begin
+      return MIN_VAL;
+    end else if (value == '1 >> 1) begin
+      return MAX_VAL;
+    end else begin
+      return NORMAL_VAL;
+    end
+  endfunction
+
+  function special_val_e get_imm_special_val(bit [31:0] value);
+    void'(randomize(imm_len));
+    if (value == 0) begin
+      return ZERO_VAL;
+    end else if (format == U_FORMAT) begin
+      // unsigend immediate value
+      bit [31:0] max_val;
+      max_val = (1 << imm_len)-1;
+      if (value == '0) begin
+        return MIN_VAL;
+      end
+      if (value == max_val) begin
+        return MAX_VAL;
+      end
+    end else begin
+      // signed immediate value
+      int signed max_val, min_val;
+      max_val =  2 ** (imm_len-1) - 1;
+      min_val = -2 ** (imm_len-1);
+      if (min_val == $signed(value)) begin
+        return MIN_VAL;
+      end
+      if (max_val == $signed(value)) begin
+        return MAX_VAL;
+      end
+    end
+    return NORMAL_VAL;
+  endfunction
+
+  function compare_result_e get_compare_result();
+    bit [XLEN-1:0] val1, val2;
+    val1 = rs1_value;
+    val2 = (format == I_FORMAT) ? imm : rs2_value;
+    if (val1 == val2) begin
+      return EQUAL;
+    end else if (val1 < val2) begin
+      return SMALLER;
+    end else begin
+      return LARGER;
+    end
+  endfunction
+
+  function bit is_branch_hit();
+    case(instr_name)
+      BEQ    : is_branch_hit = (rs1_value == rs2_value);
+      C_BEQZ : is_branch_hit = (rs1_value == 0);
+      BNE    : is_branch_hit = (rs1_value == rs2_value);
+      C_BNEZ : is_branch_hit = (rs1_value != 0);
+      BLT    : is_branch_hit = ($signed(rs1_value) <  $signed(rs2_value));
+      BGE    : is_branch_hit = ($signed(rs1_value) >  $signed(rs2_value));
+      BLTU   : is_branch_hit = (rs1_value < rs2_value);
+      BGEU   : is_branch_hit = (rs1_value > rs2_value);
+      BGEU   : is_branch_hit = (rs1_value > rs2_value);
+      default: `uvm_error(get_name(), $sformatf("Unexpected instr %0s", instr_name.name()))
+    endcase
+    return is_branch_hit;
+  endfunction
+
+  function logical_similarity_e get_logical_similarity();
+    bit [XLEN-1:0] val1, val2;
+    int bit_difference;
+    val1 = rs1_value;
+    val2 = (format == I_FORMAT) ? imm : rs2_value;
+    bit_difference = $countones(val1 ^ val2);
+    if (val1 == val2)
+      return IDENTICAL;
+    else if (bit_difference == 32)
+      return OPPOSITE;
+    else if (bit_difference < 5)
+      return SIMILAR;
+    else
+      return DIFFERENT;
+  endfunction
+
+  function void check_hazard_condition(riscv_instr_cov_item pre_instr);
+    riscv_reg_t gpr;
+    if (pre_instr.has_rd) begin
+      if ((has_rs1 && (rs1 == pre_instr.rd)) || (has_rs2 && (rs2 == pre_instr.rd))) begin
+        gpr_hazard = RAW_HAZARD;
+      end else if (has_rd && (rd == pre_instr.rd)) begin
+        gpr_hazard = WAW_HAZARD;
+      end else if (has_rd && ((pre_instr.has_rs1 && (pre_instr.rs1 == rd)) ||
+                              (pre_instr.has_rs2 && (pre_instr.rs2 == rd)))) begin
+        gpr_hazard = WAR_HAZARD;
+      end else begin
+        gpr_hazard = NO_HAZARD;
+      end
+    end
+    if (category == LOAD) begin
+      if ((pre_instr.category == STORE) && (pre_instr.mem_addr == mem_addr)) begin
+        lsu_hazard = RAW_HAZARD;
+      end else begin
+        lsu_hazard = NO_HAZARD;
+      end
+    end
+    if (category == STORE) begin
+      if ((pre_instr.category == STORE) && (pre_instr.mem_addr == mem_addr)) begin
+        lsu_hazard = WAW_HAZARD;
+      end else if ((pre_instr.category == LOAD) && (pre_instr.mem_addr == mem_addr)) begin
+        lsu_hazard = WAR_HAZARD;
+      end else begin
+        lsu_hazard = NO_HAZARD;
+      end
+    end
+    `uvm_info(`gfn, $sformatf("Pre:%0s, Cur:%0s, Hazard: %0s/%0s",
+                              pre_instr.convert2asm(), this.convert2asm(),
+                              gpr_hazard.name(), lsu_hazard.name()), UVM_FULL)
+  endfunction
+
+  virtual function void sample_cov();
+    pre_sample();
+  endfunction
+
+endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_cover_group.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_cover_group.sv
new file mode 100644
index 0000000..5ac78ec
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_cover_group.sv
@@ -0,0 +1,924 @@
+`define INSTR_CG_BEGIN(INSTR_NAME) \
+  covergroup ``INSTR_NAME``_cg with function sample(riscv_instr_cov_item instr);
+
+`define R_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rs2         : coverpoint instr.rs2; \
+    cp_rd          : coverpoint instr.rd;  \
+    cp_rs1_sign    : coverpoint instr.rs1_sign; \
+    cp_rs2_sign    : coverpoint instr.rs2_sign; \
+    cp_rd_sign     : coverpoint instr.rd_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard; \
+
+`define CMP_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rd          : coverpoint instr.rd;  \
+    cp_rs1_sign    : coverpoint instr.rs1_sign; \
+    cp_result      : coverpoint instr.rd_value[0]; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard; \
+
+`define SB_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rs2         : coverpoint instr.rs2; \
+    cp_rs1_sign    : coverpoint instr.rs1_sign; \
+    cp_rs2_sign    : coverpoint instr.rs2_sign; \
+    cp_imm_sign    : coverpoint instr.imm_sign; \
+    cp_branch_hit  : coverpoint instr.branch_hit; \
+    cp_sign_cross  : cross cp_rs1_sign, cp_rs2_sign, cp_imm_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    }
+
+`define STORE_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rs2         : coverpoint instr.rs2; \
+    cp_imm_sign    : coverpoint instr.imm_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    } \
+    cp_lsu_harzard : coverpoint instr.lsu_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, WAR_HAZARD, WAW_HAZARD}; \
+    }
+
+`define LOAD_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rd          : coverpoint instr.rd; \
+    cp_imm_sign    : coverpoint instr.imm_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard; \
+    cp_lsu_harzard : coverpoint instr.lsu_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    }
+
+`define I_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rd          : coverpoint instr.rd; \
+    cp_rs1_sign    : coverpoint instr.rs1_sign; \
+    cp_rd_sign     : coverpoint instr.rd_sign; \
+    cp_imm_sign    : coverpoint instr.imm_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard;
+
+`define U_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rd          : coverpoint instr.rd; \
+    cp_rd_sign     : coverpoint instr.rd_sign; \
+    cp_imm_sign    : coverpoint instr.imm_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard;
+
+`define CSR_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_csr         : coverpoint instr.csr { \
+      bins csr[] = cp_csr with (is_implemented_csr(item)); \
+    } \
+    cp_rs1         : coverpoint instr.rs1; \
+    cp_rd          : coverpoint instr.rd; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard;
+
+`define CR_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs2         : coverpoint instr.rs2; \
+    cp_rd          : coverpoint instr.rd; \
+    cp_rs2_sign    : coverpoint instr.rs2_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard;
+
+`define CI_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rd       : coverpoint instr.rd; \
+    cp_imm_sign : coverpoint instr.imm_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, WAR_HAZARD, WAW_HAZARD}; \
+    }
+
+`define CSS_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_rs2      : coverpoint instr.rs2; \
+    cp_imm_sign : coverpoint instr.imm_sign; \
+    cp_rs2_sign : coverpoint instr.rs2_sign; \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    }
+
+`define CIW_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_imm_sign : coverpoint instr.imm_sign; \
+    cp_rd       : coverpoint instr.rd { \
+      bins gpr[] = cp_rd with (is_compressed_gpr(riscv_reg_t'(item))); \
+    } \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, WAR_HAZARD, WAW_HAZARD}; \
+    }
+
+`define CL_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_imm_sign : coverpoint instr.imm_sign; \
+    cp_rs1      : coverpoint instr.rs1 { \
+      bins gpr[] = cp_rs1 with (is_compressed_gpr(riscv_reg_t'(item))); \
+    } \
+    cp_rd       : coverpoint instr.rd { \
+      bins gpr[] = cp_rd with (is_compressed_gpr(riscv_reg_t'(item))); \
+    } \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard; \
+    cp_lsu_harzard : coverpoint instr.lsu_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    }
+
+`define CS_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_imm_sign : coverpoint instr.imm_sign; \
+    cp_rs1      : coverpoint instr.rs1 { \
+      bins gpr[] = cp_rs1 with (is_compressed_gpr(riscv_reg_t'(item))); \
+    } \
+    cp_rs2      : coverpoint instr.rs2 { \
+      bins gpr[] = cp_rs2 with (is_compressed_gpr(riscv_reg_t'(item))); \
+    } \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    } \
+    cp_lsu_harzard : coverpoint instr.lsu_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, WAR_HAZARD, WAW_HAZARD}; \
+    }
+
+
+`define CB_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_imm_sign : coverpoint instr.imm_sign; \
+    cp_rs1      : coverpoint instr.rs1 { \
+      bins gpr[] = cp_rs1 with (is_compressed_gpr(riscv_reg_t'(item))); \
+    } \
+    cp_gpr_harzard : coverpoint instr.gpr_hazard { \
+      bins valid_hazard[] = {NO_HAZARD, RAW_HAZARD}; \
+    }
+
+`define CJ_INSTR_CG_BEGIN(INSTR_NAME) \
+  `INSTR_CG_BEGIN(INSTR_NAME) \
+    cp_imm_sign : coverpoint instr.imm_sign;
+
+`define CG_END endgroup
+
+class riscv_instr_cover_group#(privileged_reg_t implemented_pcsr[] =
+                               riscv_instr_pkg::implemented_csr);
+
+  riscv_instr_gen_config  cfg;
+  riscv_instr_cov_item    cur_instr;
+  riscv_instr_cov_item    pre_instr;
+  riscv_instr_name_t      instr_list[$];
+  int unsigned            instr_cnt;
+  int unsigned            branch_instr_cnt;
+  bit [4:0]               branch_hit_history; // The last 5 branch result
+  privileged_reg_t        privil_csr[$];
+
+  ///////////// RV32I instruction functional coverage //////////////
+
+  // Arithmetic instructions
+  `R_INSTR_CG_BEGIN(add)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign, cp_rd_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(sub)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign, cp_rd_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(addi)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign, cp_rd_sign;
+  `CG_END
+
+  `U_INSTR_CG_BEGIN(lui)
+    cp_sign_cross: cross cp_imm_sign, cp_rd_sign;
+  `CG_END
+
+  `U_INSTR_CG_BEGIN(auipc)
+    cp_sign_cross: cross cp_imm_sign, cp_rd_sign;
+  `CG_END
+
+  // Shift instructions
+  `R_INSTR_CG_BEGIN(sra)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(sll)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(srl)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(srai)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(slli)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(srli)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  // Logical instructions
+  `R_INSTR_CG_BEGIN(xor)
+    cp_logical   : coverpoint instr.logical_similarity;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(or)
+    cp_logical   : coverpoint instr.logical_similarity;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(and)
+    cp_logical   : coverpoint instr.logical_similarity;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(xori)
+    cp_logical   : coverpoint instr.logical_similarity;
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(ori)
+    cp_logical   : coverpoint instr.logical_similarity;
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(andi)
+    cp_logical   : coverpoint instr.logical_similarity;
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  // Compare instructions
+  `CMP_INSTR_CG_BEGIN(slt)
+    cp_rs2        : coverpoint instr.rs2;
+    cp_rs2_sign   : coverpoint instr.rs2_sign;
+    cp_sign_cross : cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `CMP_INSTR_CG_BEGIN(sltu)
+    cp_rs2        : coverpoint instr.rs2;
+    cp_rs2_sign   : coverpoint instr.rs2_sign;
+    cp_sign_cross : cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `CMP_INSTR_CG_BEGIN(slti)
+    cp_imm_sign   : coverpoint instr.imm_sign;
+    cp_sign_cross : cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `CMP_INSTR_CG_BEGIN(sltiu)
+    cp_imm_sign   : coverpoint instr.imm_sign;
+    cp_sign_cross : cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  // Branch instruction
+  `SB_INSTR_CG_BEGIN(beq)
+  `CG_END
+
+  `SB_INSTR_CG_BEGIN(bne)
+  `CG_END
+
+  `SB_INSTR_CG_BEGIN(blt)
+  `CG_END
+
+  `SB_INSTR_CG_BEGIN(bge)
+  `CG_END
+
+  `SB_INSTR_CG_BEGIN(bltu)
+  `CG_END
+
+  `SB_INSTR_CG_BEGIN(bgeu)
+  `CG_END
+
+  // Load instructions
+  `LOAD_INSTR_CG_BEGIN(lb)
+  `CG_END
+
+  `LOAD_INSTR_CG_BEGIN(lh)
+    cp_align: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  `LOAD_INSTR_CG_BEGIN(lw)
+    cp_align: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  `LOAD_INSTR_CG_BEGIN(lbu)
+  `CG_END
+
+  `LOAD_INSTR_CG_BEGIN(lhu)
+    cp_align: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  // Store instruction
+  `STORE_INSTR_CG_BEGIN(sb)
+  `CG_END
+
+  `STORE_INSTR_CG_BEGIN(sh)
+    cp_misalign: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  `STORE_INSTR_CG_BEGIN(sw)
+    cp_misalign: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  // CSR instructions
+  `CSR_INSTR_CG_BEGIN(csrrw)
+    cp_rs2 : coverpoint instr.rs1;
+  `CG_END
+
+  `CSR_INSTR_CG_BEGIN(csrrs)
+    cp_rs2 : coverpoint instr.rs1;
+  `CG_END
+
+  `CSR_INSTR_CG_BEGIN(csrrc)
+    cp_rs2 : coverpoint instr.rs1;
+  `CG_END
+
+  `CSR_INSTR_CG_BEGIN(csrrwi)
+    cp_imm_sign : coverpoint instr.imm_sign;
+  `CG_END
+
+  `CSR_INSTR_CG_BEGIN(csrrsi)
+    cp_imm_sign : coverpoint instr.imm_sign;
+  `CG_END
+
+  `CSR_INSTR_CG_BEGIN(csrrci)
+    cp_imm_sign : coverpoint instr.imm_sign;
+  `CG_END
+
+  // RV32M
+
+  `R_INSTR_CG_BEGIN(mul)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(mulh)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(mulhsu)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(mulhu)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(div)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(divu)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(rem)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(remu)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  // RV64M
+
+  `R_INSTR_CG_BEGIN(mulw)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(divw)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(divuw)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(remw)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(remuw)
+    cp_rs2_val   : coverpoint instr.rs2_special_val;
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  // RV64I
+  `LOAD_INSTR_CG_BEGIN(lwu)
+    cp_align: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  `LOAD_INSTR_CG_BEGIN(ld)
+    cp_align: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  `STORE_INSTR_CG_BEGIN(sd)
+    cp_misalign: coverpoint instr.unaligned_mem_access;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(sraw)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(sllw)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(srlw)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(sraiw)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(slliw)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(srliw)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(addw)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign, cp_rd_sign;
+  `CG_END
+
+  `R_INSTR_CG_BEGIN(subw)
+    cp_sign_cross: cross cp_rs1_sign, cp_rs2_sign, cp_rd_sign;
+  `CG_END
+
+  `I_INSTR_CG_BEGIN(addiw)
+    cp_sign_cross: cross cp_rs1_sign, cp_imm_sign, cp_rd_sign;
+  `CG_END
+
+  // RV32C
+
+  `CL_INSTR_CG_BEGIN(c_lw)
+  `CG_END
+
+  `CL_INSTR_CG_BEGIN(c_lwsp)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_sw)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_swsp)
+  `CG_END
+
+  `CIW_INSTR_CG_BEGIN(c_addi4spn)
+  `CG_END
+
+  `CI_INSTR_CG_BEGIN(c_addi)
+  `CG_END
+
+  `CI_INSTR_CG_BEGIN(c_addi16sp)
+  `CG_END
+
+  `CI_INSTR_CG_BEGIN(c_li)
+  `CG_END
+
+  `CI_INSTR_CG_BEGIN(c_lui)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_sub)
+  `CG_END
+
+  `CR_INSTR_CG_BEGIN(c_add)
+  `CG_END
+
+  `CR_INSTR_CG_BEGIN(c_mv)
+  `CG_END
+
+  `CB_INSTR_CG_BEGIN(c_andi)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_xor)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_or)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_and)
+  `CG_END
+
+  `CB_INSTR_CG_BEGIN(c_beqz)
+  `CG_END
+
+  `CB_INSTR_CG_BEGIN(c_bnez)
+  `CG_END
+
+  `CB_INSTR_CG_BEGIN(c_srli)
+  `CG_END
+
+  `CB_INSTR_CG_BEGIN(c_srai)
+  `CG_END
+
+  `CI_INSTR_CG_BEGIN(c_slli)
+  `CG_END
+
+  `CJ_INSTR_CG_BEGIN(c_j)
+  `CG_END
+
+  `CJ_INSTR_CG_BEGIN(c_jal)
+  `CG_END
+
+  `CR_INSTR_CG_BEGIN(c_jr)
+  `CG_END
+
+  `CR_INSTR_CG_BEGIN(c_jalr)
+  `CG_END
+
+  // RV64C
+
+  `CL_INSTR_CG_BEGIN(c_ld)
+  `CG_END
+
+  `CL_INSTR_CG_BEGIN(c_ldsp)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_sd)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_sdsp)
+  `CG_END
+
+  `CI_INSTR_CG_BEGIN(c_addiw)
+  `CG_END
+
+  `CS_INSTR_CG_BEGIN(c_subw)
+  `CG_END
+
+  `CR_INSTR_CG_BEGIN(c_addw)
+  `CG_END
+
+  `INSTR_CG_BEGIN(hint)
+    cp_hint : coverpoint instr.binary[15:0] {
+      wildcard bins addi    = {16'b0000_1xxx_x000_0001,
+                               16'b0000_x1xx_x000_0001,
+                               16'b0000_xx1x_x000_0001,
+                               16'b0000_xxx1_x000_0001,
+                               16'b0000_xxxx_1000_0001};
+      wildcard bins li      = {16'b010x_0000_0xxx_xx01};
+      wildcard bins lui     = {16'b011x_0000_0xxx_xx01};
+      wildcard bins srli64  = {16'b1000_00xx_x000_0001};
+      wildcard bins srai64  = {16'b1000_01xx_x000_0001};
+      wildcard bins slli    = {16'b000x_0000_0xxx_xx10};
+      wildcard bins slli64  = {16'b0000_xxxx_x000_0010};
+      wildcard bins mv      = {16'b1000_0000_01xx_xx10,
+                               16'b1000_0000_0x1x_xx10,
+                               16'b1000_0000_0xx1_xx10,
+                               16'b1000_0000_0xxx_1x10,
+                               16'b1000_0000_0xxx_x110};
+      wildcard bins add     = {16'b1001_0000_01xx_xx10,
+                               16'b1001_0000_0x1x_xx10,
+                               16'b1001_0000_0xx1_xx10,
+                               16'b1001_0000_0xxx_1x10,
+                               16'b1001_0000_0xxx_x110};
+    }
+  `CG_END
+
+  // Branch hit history
+  covergroup branch_hit_history_cg;
+    coverpoint branch_hit_history;
+  endgroup
+
+  // Instruction transition for all supported instructions
+  /* TODO: Refine the transition functional coverage, not all combinations are interesting
+  covergroup instr_trans_cg with function sample();
+    cp_instr: coverpoint instr_name {
+      bins instr[] = cp_instr with (is_supported_instr(riscv_instr_name_t'(item)));
+    }
+    cp_pre_instr: coverpoint pre_instr_name {
+      // This is a helper coverpoint for cross coverpoint below, it should not be counted when
+      // calculate the coverage score
+      type_option.weight = 0;
+      bins instr[] = cp_pre_instr with (is_supported_instr(riscv_instr_name_t'(item)));
+    }
+    cp_trans: cross cp_pre_instr, cp_instr {
+      // Cover all instruction transitions, except for below system instructions
+      ignore_bins ignore = binsof(cp_instr) intersect {ECALL, URET, SRET, SRET, DRET} ||
+                           binsof(cp_pre_instr) intersect {ECALL, URET, SRET, SRET, DRET};
+    }
+  endgroup
+  */
+
+  // TODO: Add covergroup for various hazard conditions
+
+  function new(riscv_instr_gen_config cfg);
+    this.cfg = cfg;
+    cur_instr = riscv_instr_cov_item::type_id::create("cur_instr");
+    pre_instr = riscv_instr_cov_item::type_id::create("pre_instr");
+    build_instr_list();
+    hint_cg = new();
+    // RV32I instruction functional coverage instantiation
+    add_cg = new();
+    sub_cg = new();
+    addi_cg = new();
+    lui_cg = new();
+    auipc_cg = new();
+    sll_cg = new();
+    srl_cg = new();
+    sra_cg = new();
+    slli_cg = new();
+    srli_cg = new();
+    srai_cg = new();
+    and_cg = new();
+    or_cg = new();
+    xor_cg = new();
+    andi_cg = new();
+    ori_cg = new();
+    xori_cg = new();
+    slt_cg = new();
+    sltu_cg = new();
+    slti_cg = new();
+    sltiu_cg = new();
+    beq_cg = new();
+    bne_cg = new();
+    blt_cg = new();
+    bge_cg = new();
+    bgeu_cg = new();
+    bltu_cg = new();
+    lb_cg = new();
+    lh_cg = new();
+    lw_cg = new();
+    lbu_cg = new();
+    lhu_cg = new();
+    sb_cg = new();
+    sh_cg = new();
+    sw_cg = new();
+    csrrw_cg = new();
+    csrrs_cg = new();
+    csrrc_cg = new();
+    csrrwi_cg = new();
+    csrrsi_cg = new();
+    csrrci_cg = new();
+    // instr_trans_cg = new();
+    branch_hit_history_cg = new();
+    if (RV32M inside {supported_isa}) begin
+      mul_cg = new();
+      mulh_cg = new();
+      mulhsu_cg = new();
+      mulhu_cg = new();
+      div_cg = new();
+      divu_cg = new();
+      rem_cg = new();
+    end
+    if (RV64M inside {supported_isa}) begin
+      mulw_cg = new();
+      divw_cg = new();
+      divuw_cg = new();
+      remw_cg = new();
+      remuw_cg = new();
+    end
+    if (RV64I inside {supported_isa}) begin
+      lwu_cg = new();
+      ld_cg = new();
+      sd_cg = new();
+      sllw_cg = new();
+      slliw_cg = new();
+      srlw_cg = new();
+      srliw_cg = new();
+      sraw_cg = new();
+      sraiw_cg = new();
+      addw_cg = new();
+      addiw_cg = new();
+      subw_cg = new();
+    end
+    if (RV32C inside {supported_isa}) begin
+      c_lw_cg = new();
+      c_sw_cg = new();
+      c_lwsp_cg = new();
+      c_swsp_cg = new();
+      c_addi4spn_cg = new();
+      c_addi_cg = new();
+      c_addi16sp_cg = new();
+      c_li_cg = new();
+      c_lui_cg = new();
+      c_sub_cg = new();
+      c_add_cg = new();
+      c_mv_cg = new();
+      c_andi_cg = new();
+      c_xor_cg = new();
+      c_or_cg = new();
+      c_and_cg = new();
+      c_beqz_cg = new();
+      c_bnez_cg = new();
+      c_srli_cg = new();
+      c_srai_cg = new();
+      c_slli_cg = new();
+      c_j_cg = new();
+      c_jal_cg = new();
+      c_jr_cg = new();
+      c_jalr_cg = new();
+    end
+    if (RV64C inside {supported_isa}) begin
+      c_ld_cg = new();
+      c_sd_cg = new();
+      c_ldsp_cg = new();
+      c_sdsp_cg = new();
+      c_addiw_cg = new();
+      c_subw_cg = new();
+      c_addw_cg = new();
+    end
+  endfunction
+
+  function void sample(riscv_instr_cov_item instr);
+    instr_cnt += 1;
+    if (instr_cnt > 1) begin
+      instr.check_hazard_condition(pre_instr);
+    end
+    if (instr.binary[1:0] != 2'b11) begin
+      hint_cg.sample(instr);
+    end
+    case (instr.instr_name)
+      ADD        : add_cg.sample(instr);
+      SUB        : sub_cg.sample(instr);
+      ADDI       : addi_cg.sample(instr);
+      LUI        : lui_cg.sample(instr);
+      AUIPC      : auipc_cg.sample(instr);
+      SLL        : sll_cg.sample(instr);
+      SRL        : srl_cg.sample(instr);
+      SRA        : sra_cg.sample(instr);
+      SLLI       : slli_cg.sample(instr);
+      SRLI       : srli_cg.sample(instr);
+      SRAI       : srai_cg.sample(instr);
+      AND        : and_cg.sample(instr);
+      OR         : or_cg.sample(instr);
+      XOR        : xor_cg.sample(instr);
+      ANDI       : andi_cg.sample(instr);
+      ORI        : ori_cg.sample(instr);
+      XORI       : xori_cg.sample(instr);
+      SLT        : slt_cg.sample(instr);
+      SLTU       : sltu_cg.sample(instr);
+      SLTI       : slti_cg.sample(instr);
+      SLTIU      : sltiu_cg.sample(instr);
+      BEQ        : beq_cg.sample(instr);
+      BNE        : bne_cg.sample(instr);
+      BLT        : blt_cg.sample(instr);
+      BGE        : bge_cg.sample(instr);
+      BLTU       : bltu_cg.sample(instr);
+      BGEU       : bgeu_cg.sample(instr);
+      LW         : lw_cg.sample(instr);
+      LH         : lh_cg.sample(instr);
+      LB         : lb_cg.sample(instr);
+      LBU        : lbu_cg.sample(instr);
+      LHU        : lhu_cg.sample(instr);
+      SW         : sw_cg.sample(instr);
+      SH         : sh_cg.sample(instr);
+      SB         : sb_cg.sample(instr);
+      CSRRW      : csrrw_cg.sample(instr);
+      CSRRS      : csrrs_cg.sample(instr);
+      CSRRC      : csrrc_cg.sample(instr);
+      CSRRWI     : csrrwi_cg.sample(instr);
+      CSRRSI     : csrrsi_cg.sample(instr);
+      CSRRCI     : csrrci_cg.sample(instr);
+      MUL        : mul_cg.sample(instr);
+      MULH       : mulh_cg.sample(instr);
+      MULHSU     : mulhsu_cg.sample(instr);
+      MULHU      : mulhu_cg.sample(instr);
+      DIV        : div_cg.sample(instr);
+      DIVU       : divu_cg.sample(instr);
+      REM        : rem_cg.sample(instr);
+      MULW       : mulw_cg.sample(instr);
+      DIVW       : divw_cg.sample(instr);
+      DIVUW      : divuw_cg.sample(instr);
+      REMW       : remw_cg.sample(instr);
+      REMUW      : remuw_cg.sample(instr);
+      LWU        : lwu_cg.sample(instr);
+      LD         : ld_cg.sample(instr);
+      SD         : sd_cg.sample(instr);
+      SLLW       : sllw_cg.sample(instr);
+      SLLIW      : slliw_cg.sample(instr);
+      SRLW       : srlw_cg.sample(instr);
+      SRLIW      : srliw_cg.sample(instr);
+      SRAW       : sraw_cg.sample(instr);
+      SRAIW      : sraiw_cg.sample(instr);
+      ADDW       : addw_cg.sample(instr);
+      ADDIW      : addiw_cg.sample(instr);
+      SUBW       : subw_cg.sample(instr);
+      C_LW       : c_lw_cg.sample(instr);
+      C_SW       : c_sw_cg.sample(instr);
+      C_LWSP     : c_lwsp_cg.sample(instr);
+      C_SWSP     : c_swsp_cg.sample(instr);
+      C_ADDI4SPN : c_addi4spn_cg.sample(instr);
+      C_ADDI     : c_addi_cg.sample(instr);
+      C_ADDI16SP : c_addi16sp_cg.sample(instr);
+      C_LI       : c_li_cg.sample(instr);
+      C_LUI      : c_lui_cg.sample(instr);
+      C_SUB      : c_sub_cg.sample(instr);
+      C_ADD      : c_add_cg.sample(instr);
+      C_MV       : c_mv_cg.sample(instr);
+      C_ANDI     : c_andi_cg.sample(instr);
+      C_XOR      : c_xor_cg.sample(instr);
+      C_OR       : c_or_cg.sample(instr);
+      C_AND      : c_and_cg.sample(instr);
+      C_BEQZ     : c_beqz_cg.sample(instr);
+      C_BNEZ     : c_bnez_cg.sample(instr);
+      C_SRLI     : c_srli_cg.sample(instr);
+      C_SRAI     : c_srai_cg.sample(instr);
+      C_SLLI     : c_slli_cg.sample(instr);
+      C_J        : c_j_cg.sample(instr);
+      C_JAL      : c_jal_cg.sample(instr);
+      C_JR       : c_jr_cg.sample(instr);
+      C_JALR     : c_jalr_cg.sample(instr);
+      C_LD       : c_ld_cg.sample(instr);
+      C_SD       : c_sd_cg.sample(instr);
+      C_LDSP     : c_ldsp_cg.sample(instr);
+      C_SDSP     : c_sdsp_cg.sample(instr);
+      C_SUBW     : c_subw_cg.sample(instr);
+      C_ADDW     : c_addw_cg.sample(instr);
+      C_ADDIW    : c_addiw_cg.sample(instr);
+    endcase
+    if (instr.category == BRANCH) begin
+      branch_hit_history = (branch_hit_history << 1) | instr.branch_hit;
+      branch_instr_cnt += 1;
+      if (branch_instr_cnt >= $bits(branch_hit_history)) begin
+        branch_hit_history_cg.sample();
+      end
+    end
+    if (instr_cnt > 1) begin
+      // instr_trans_cg.sample();
+    end
+    pre_instr.copy_base_instr(instr);
+    pre_instr.mem_addr = instr.mem_addr;
+  endfunction
+
+  // Check if the privileged CSR is implemented
+  virtual function bit is_implemented_csr(bit [11:0] pcsr);
+    if (pcsr inside {implemented_pcsr}) begin
+      return 1'b1;
+    end else begin
+      return 1'b0;
+    end
+  endfunction
+
+  // Check if the instruction is supported
+  virtual function bit is_supported_instr(riscv_instr_name_t name);
+    if (name inside {instr_list}) begin
+      return 1'b1;
+    end else begin
+      return 1'b0;
+    end
+  endfunction
+
+  // Check if the instruction is supported
+  virtual function bit is_compressed_gpr(riscv_reg_t gpr);
+    if (gpr inside {[S0:A5]}) begin
+      return 1'b1;
+    end else begin
+      return 1'b0;
+    end
+  endfunction
+
+  // Build the supported instruction list based on the core setting
+  virtual function void build_instr_list();
+    riscv_instr_name_t instr_name;
+    instr_name = instr_name.first;
+    foreach (riscv_instr_pkg::implemented_csr[i]) begin
+      privil_csr.push_back(riscv_instr_pkg::implemented_csr[i]);
+    end
+    do begin
+      riscv_instr_base instr;
+      if (!(instr_name inside {unsupported_instr}) && (instr_name != INVALID_INSTR)) begin
+        instr = riscv_instr_base::type_id::create("instr");
+        if (!instr.randomize() with {instr_name == local::instr_name;}) begin
+          `uvm_fatal("riscv_instr_cover_group",
+                     $sformatf("Instruction %0s randomization failure", instr_name.name()))
+        end
+        if ((instr.group inside {supported_isa}) &&
+            (instr.group inside {RV32I, RV32M, RV64M, RV64I, RV32C, RV64C})) begin
+          if (((instr_name inside {URET}) && !support_umode_trap) ||
+              ((instr_name inside {SRET, SFENCE_VMA}) &&
+              !(SUPERVISOR_MODE inside {supported_privileged_mode})) ||
+              ((instr_name inside {DRET}) && !support_debug_mode)) begin
+            instr_name = instr_name.next;
+            continue;
+          end
+          `uvm_info("riscv_instr_cover_group", $sformatf("Adding [%s] %s to the list",
+                    instr.group.name(), instr.instr_name.name()), UVM_HIGH)
+          instr_list.push_back(instr_name);
+        end
+      end
+      instr_name = instr_name.next;
+    end
+    while (instr_name != instr_name.first);
+  endfunction
+
+  function void reset();
+    instr_cnt = 0;
+    branch_instr_cnt = 0;
+    branch_hit_history = '0;
+  endfunction
+
+endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_gen_config.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_gen_config.sv
index 7ce2bc9..74de574 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_gen_config.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_gen_config.sv
@@ -39,9 +39,6 @@
   // Pattern of data section: RAND_DATA, ALL_ZERO, INCR_VAL
   rand data_pattern_t    data_page_pattern;
 
-  // Max depth for the nested loops
-  rand bit [1:0]         max_nested_loop;
-
   // Associate array for delegation configuration for each exception and interrupt
   // When the bit is 1, the corresponding delegation is enabled.
   rand bit               m_mode_exception_delegation[exception_cause_t];
@@ -52,6 +49,10 @@
   // Priviledged mode after boot
   rand privileged_mode_t init_privileged_mode;
 
+  rand bit[XLEN-1:0]     mstatus, mie,
+                         sstatus, sie,
+                         ustatus, uie;
+
   // Key fields in xSTATUS
   // Memory protection bits
   rand bit               mstatus_mprv;
@@ -69,12 +70,44 @@
   bit                    check_misa_init_val = 1'b0;
   bit                    check_xstatus = 1'b1;
 
+  // Virtual address translation is on for this test
+  rand bit               virtual_addr_translation_on;
+
+  //-----------------------------------------------------------------------------
+  //  User space memory region and stack setting
+  //-----------------------------------------------------------------------------
+
+  mem_region_t mem_region[$] = '{
+    '{name:"region_0", size_in_bytes: 4096,      xwr: 3'b111},
+    '{name:"region_1", size_in_bytes: 4096 * 4,  xwr: 3'b111},
+    '{name:"region_2", size_in_bytes: 4096 * 2,  xwr: 3'b111},
+    '{name:"region_3", size_in_bytes: 512,       xwr: 3'b111},
+    '{name:"region_4", size_in_bytes: 4096,      xwr: 3'b111}
+  };
+
+  // Stack section word length
+  int stack_len = 5000;
+
+  //-----------------------------------------------------------------------------
+  // Kernel section setting, used by supervisor mode programs
+  //-----------------------------------------------------------------------------
+
+  mem_region_t s_mem_region[$] = '{
+    '{name:"s_region_0", size_in_bytes: 4096, xwr: 3'b111},
+    '{name:"s_region_1", size_in_bytes: 4096, xwr: 3'b111}};
+
+  // Kernel Stack section word length
+  int kernel_stack_len = 4000;
+
+  // Number of instructions for each kernel program
+  int kernel_program_instr_cnt = 400;
+
   //-----------------------------------------------------------------------------
   // Instruction list based on the config, generate by build_instruction_template
   //-----------------------------------------------------------------------------
   riscv_instr_base       instr_template[riscv_instr_name_t];
   riscv_instr_name_t     basic_instr[$];
-  riscv_instr_name_t     instr_group[riscv_instr_cateogry_t][$];
+  riscv_instr_name_t     instr_group[riscv_instr_group_t][$];
   riscv_instr_name_t     instr_category[riscv_instr_cateogry_t][$];
 
   //-----------------------------------------------------------------------------
@@ -88,16 +121,16 @@
   // For tests doesn't involve load/store, the data section generation could be skipped
   bit                    no_data_page;
   // Options to turn off some specific types of instructions
-  bit                    no_branch_jump;   // No branch/jump instruction
-  bit                    no_load_store;    // No load/store instruction
-  bit                    no_csr_instr;     // No csr instruction
-  bit                    no_ebreak = 1;    // No ebreak instruction
-  bit                    no_fence;         // No fence instruction
-  bit                    no_wfi = 1;       // No WFI instruction
+  bit                    no_branch_jump;     // No branch/jump instruction
+  bit                    no_load_store;      // No load/store instruction
+  bit                    no_csr_instr;       // No csr instruction
+  bit                    no_ebreak = 1;      // No ebreak instruction
+  bit                    no_dret = 1;        // No dret instruction
+  bit                    no_fence;           // No fence instruction
+  bit                    no_wfi = 1;         // No WFI instruction
   bit                    enable_unaligned_load_store;
-  bit                    enable_illegal_instruction;
-  bit                    enable_hint_instruction;
-  int                    bin_program_instr_cnt = 200;
+  int                    illegal_instr_ratio;
+  int                    hint_instr_ratio;
   // Directed boot privileged mode, u, m, s
   string                 boot_mode_opts;
   int                    enable_page_table_exception;
@@ -106,10 +139,15 @@
   string                 asm_test_suffix;
   // Enable interrupt bit in MSTATUS (MIE, SIE, UIE)
   int                    enable_interrupt;
+  // Generate a bare program without any init/exit/error handling/page table routines
+  // The generated program can be integrated with a larger program.
+  // Note that the bare mode program is not expected to run in standalone mode
+  bit                    bare_program_mode;
   // Enable accessing illegal CSR instruction
   // - Accessing non-existence CSR
   // - Accessing CSR with wrong privileged mode
   bit                    enable_illegal_csr_instruction;
+  bit                    randomize_csr = 0;
   // sfence support
   bit                    allow_sfence_exception = 0;
   // Interrupt/Exception Delegation
@@ -123,16 +161,24 @@
   bit                    require_signature_addr = 1'b0;
   rand riscv_reg_t       signature_addr_reg;
   rand riscv_reg_t       signature_data_reg;
-  bit                    gen_debug_section = 1'b0;
+  // Register that will be used to handle any DCSR operations inside of the
+  // debug rom
+  rand riscv_reg_t       scratch_reg;
   // Enable a full or empty debug_rom section.
   // Full debug_rom will contain random instruction streams.
   // Empty debug_rom will contain just dret instruction and will return immediately.
   // Will be empty by default.
-  bit                    empty_debug_section = 1'b0;
+  bit                    gen_debug_section = 1'b0;
+  // Enable generation of a directed sequence of instructions containing
+  // ebreak inside the debug_rom.
+  // Disabled by default.
+  bit                    enable_ebreak_in_debug_rom = 1'b0;
+  // Enable setting dcsr.ebreak(m/s/u)
+  bit                    set_dcsr_ebreak = 1'b0;
   // Number of sub programs in the debug rom
   int                    num_debug_sub_program = 0;
   // Stack space allocated to each program, need to be enough to store necessary context
-  // Example: RA, SP, T0, loop registers
+  // Example: RA, SP, T0
   int                    min_stack_len_per_program = 10 * (XLEN/8);
   int                    max_stack_len_per_program = 16 * (XLEN/8);
   // Maximum branch distance, avoid skipping large portion of the code
@@ -142,9 +188,6 @@
   // Reserved registers
   // Default reserved registers, only used by special instructions
   riscv_reg_t            default_reserved_regs[];
-  // Reserve some registers for loop counter, make sure the loop can execute
-  // in a determinstic way and not affected by other random instructions
-  rand riscv_reg_t       loop_regs[];
   // All reserved regs
   riscv_reg_t            reserved_regs[];
 
@@ -153,17 +196,6 @@
   constraint default_c {
     sub_program_instr_cnt.size() == num_of_sub_program;
     debug_sub_program_instr_cnt.size() == num_debug_sub_program;
-    if (riscv_instr_pkg::support_debug_mode) {
-      main_program_instr_cnt + sub_program_instr_cnt.sum()
-                             + debug_program_instr_cnt
-                             + debug_sub_program_instr_cnt.sum() == instr_cnt;
-      debug_program_instr_cnt inside {[100 : 300]};
-      foreach(debug_sub_program_instr_cnt[i]) {
-        debug_sub_program_instr_cnt[i] inside {[100 : 300]};
-      }
-    } else {
-      main_program_instr_cnt + sub_program_instr_cnt.sum() == instr_cnt;
-    }
     main_program_instr_cnt inside {[10 : instr_cnt]};
     foreach(sub_program_instr_cnt[i]) {
       sub_program_instr_cnt[i] inside {[10 : instr_cnt]};
@@ -180,6 +212,29 @@
     }
   }
 
+  constraint debug_mode_c {
+      if (riscv_instr_pkg::support_debug_mode) {
+        debug_program_instr_cnt inside {[100 : 300]};
+        foreach(debug_sub_program_instr_cnt[i]) {
+          debug_sub_program_instr_cnt[i] inside {[100 : 300]};
+        }
+      }
+    `ifndef DSIM
+       main_program_instr_cnt + sub_program_instr_cnt.sum() == instr_cnt;
+    `else
+       // dsim has some issue supporting sum(), use some approximate constraint to generate
+       // instruction cnt
+       if (num_of_sub_program > 0) {
+         main_program_instr_cnt inside {[10:instr_cnt/2]};
+         foreach (sub_program_instr_cnt[i]) {
+           sub_program_instr_cnt[i] inside {[10:instr_cnt/num_of_sub_program]};
+         }
+       } else {
+         main_program_instr_cnt == instr_cnt;
+       }
+    `endif
+  }
+
   // Boot privileged mode distribution
   constraint boot_privileged_mode_dist_c {
     // Boot to higher privileged mode more often
@@ -232,7 +287,7 @@
   // You can modify this constraint if your ISS support different set of delegations
   constraint delegation_c {
     foreach(m_mode_exception_delegation[i]) {
-      if(!support_supervisor_mode) {
+      if(!support_supervisor_mode || no_delegation) {
         m_mode_exception_delegation[i] == 0;
       }
       if(!(i inside {INSTRUCTION_ADDRESS_MISALIGNED, BREAKPOINT, ECALL_UMODE,
@@ -241,7 +296,7 @@
       }
     }
     foreach(m_mode_interrupt_delegation[i]) {
-      if(!support_supervisor_mode) {
+      if(!support_supervisor_mode || no_delegation) {
         m_mode_interrupt_delegation[i] == 0;
       }
       if(!(i inside {S_SOFTWARE_INTR, S_TIMER_INTR, S_EXTERNAL_INTR})) {
@@ -250,23 +305,33 @@
     }
   }
 
-  constraint reserved_reg_c {
-    unique {loop_regs};
-    foreach(loop_regs[i]) {
-      !(loop_regs[i] inside {default_reserved_regs});
+  constraint reserve_scratch_reg_c {
+    scratch_reg != ZERO;
+    foreach (default_reserved_regs[i]) {
+      signature_data_reg != default_reserved_regs[i];
+      signature_addr_reg != default_reserved_regs[i];
     }
-    !(signature_addr_reg inside {ZERO, default_reserved_regs, loop_regs});
-    !(signature_data_reg inside {ZERO, default_reserved_regs, loop_regs});
-    signature_addr_reg != signature_data_reg;
   }
 
-  constraint legal_loop_regs_c {
-    soft max_nested_loop != 0;
-    // One register for loop counter, one for loop limit
-    loop_regs.size() == max_nested_loop*2;
-    unique {loop_regs};
-    foreach(loop_regs[i]) {
-      loop_regs[i] != ZERO;
+  constraint signature_addr_c {
+    if (require_signature_addr) {
+      foreach (default_reserved_regs[i]) {
+        signature_addr_reg != default_reserved_regs[i];
+        signature_data_reg != default_reserved_regs[i];
+      }
+      signature_data_reg != scratch_reg;
+      signature_addr_reg != scratch_reg;
+      signature_data_reg != ZERO;
+      signature_addr_reg != ZERO;
+    }
+  }
+
+  constraint addr_translaction_c {
+    solve init_privileged_mode before virtual_addr_translation_on;
+    if ((init_privileged_mode != MACHINE_MODE) && (SATP_MODE != BARE)) {
+      virtual_addr_translation_on == 1'b1;
+    } else {
+      virtual_addr_translation_on == 1'b0;
     }
   }
 
@@ -287,6 +352,7 @@
     get_int_arg_value("+num_of_sub_program=", num_of_sub_program);
     get_int_arg_value("+instr_cnt=", instr_cnt);
     get_bool_arg_value("+no_ebreak=", no_ebreak);
+    get_bool_arg_value("+no_dret=", no_dret);
     get_bool_arg_value("+no_wfi=", no_wfi);
     get_bool_arg_value("+no_branch_jump=", no_branch_jump);
     get_bool_arg_value("+no_load_store=", no_load_store);
@@ -297,17 +363,21 @@
     get_bool_arg_value("+no_directed_instr=", no_directed_instr);
     get_bool_arg_value("+no_fence=", no_fence);
     get_bool_arg_value("+no_delegation=", no_delegation);
+    get_int_arg_value("+illegal_instr_ratio=", illegal_instr_ratio);
+    get_int_arg_value("+hint_instr_ratio=", hint_instr_ratio);
     get_bool_arg_value("+enable_unaligned_load_store=", enable_unaligned_load_store);
-    get_bool_arg_value("+enable_illegal_instruction=", enable_illegal_instruction);
-    get_bool_arg_value("+enable_hint_instruction=", enable_hint_instruction);
     get_bool_arg_value("+force_m_delegation=", force_m_delegation);
     get_bool_arg_value("+force_s_delegation=", force_s_delegation);
     get_bool_arg_value("+require_signature_addr=", require_signature_addr);
+    get_bool_arg_value("+randomize_csr=", randomize_csr);
     if (this.require_signature_addr) begin
       get_hex_arg_value("+signature_addr=", signature_addr);
     end
     get_bool_arg_value("+gen_debug_section=", gen_debug_section);
+    get_bool_arg_value("+bare_program_mode=", bare_program_mode);
     get_int_arg_value("+num_debug_sub_program=", num_debug_sub_program);
+    get_bool_arg_value("+enable_ebreak_in_debug_rom=", enable_ebreak_in_debug_rom);
+    get_bool_arg_value("+set_dcsr_ebreak=", set_dcsr_ebreak);
     if(inst.get_arg_value("+boot_mode=", boot_mode_opts)) begin
       `uvm_info(get_full_name(), $sformatf(
                 "Got boot mode option - %0s", boot_mode_opts), UVM_LOW)
@@ -367,10 +437,8 @@
   // Reserve below registers for special purpose instruction
   // The other normal instruction cannot use them as destination register
   virtual function void setup_default_reserved_regs();
-    default_reserved_regs = {RA, // x1, return address
-                             SP, // x2, stack pointer (user stack)
-                             TP, // x4, thread pointer, used as kernel stack pointer
-                             T0  // x5, alternative link pointer
+    default_reserved_regs = {SP, // x2, stack pointer (user stack)
+                             TP  // x4, thread pointer, used as kernel stack pointer
                              };
   endfunction
 
@@ -383,9 +451,9 @@
 
   function void post_randomize();
     // Setup the list all reserved registers
-    reserved_regs = {default_reserved_regs, loop_regs};
+    reserved_regs = {default_reserved_regs, scratch_reg};
     // Need to save all loop registers, and RA/T0
-    min_stack_len_per_program = (max_nested_loop * 2 + 2) * (XLEN/8);
+    min_stack_len_per_program = 2 * (XLEN/8);
     // Check if the setting is legal
     check_setting();
   endfunction
@@ -439,10 +507,13 @@
   endfunction
 
   // Build instruction template
-  virtual function void build_instruction_template();
+  virtual function void build_instruction_template(bit skip_instr_exclusion = 0);
     riscv_instr_name_t instr_name;
     riscv_instr_name_t excluded_instr[$];
-    get_excluded_instr(excluded_instr);
+    excluded_instr = {INVALID_INSTR};
+    if (!skip_instr_exclusion) begin
+      get_excluded_instr(excluded_instr);
+    end
     instr_name = instr_name.first;
     do begin
       riscv_instr_base instr;
@@ -452,9 +523,6 @@
         if (instr.group inside {supported_isa}) begin
           `uvm_info(`gfn, $sformatf("Adding [%s] %s to the list",
                           instr.group.name(), instr.instr_name.name()), UVM_HIGH)
-          if (instr.category inside {SHIFT, ARITHMETIC, LOGICAL, COMPARE}) begin
-            basic_instr.push_back(instr_name);
-          end
           instr_group[instr.group].push_back(instr_name);
           instr_category[instr.category].push_back(instr_name);
           instr_template[instr_name] = instr;
@@ -463,14 +531,29 @@
       instr_name = instr_name.next;
     end
     while (instr_name != instr_name.first);
+  endfunction
+
+  virtual function void build_instruction_list();
+    basic_instr = {instr_category[SHIFT], instr_category[ARITHMETIC],
+                   instr_category[LOGICAL], instr_category[COMPARE]};
     if (no_ebreak == 0) begin
       basic_instr = {basic_instr, EBREAK};
+      foreach(riscv_instr_pkg::supported_isa[i]) begin
+        if (riscv_instr_pkg::supported_isa[i] inside {RV32C, RV64C, RV128C, RV32DC, RV32FC}) begin
+          basic_instr = {basic_instr, C_EBREAK};
+          break;
+        end
+      end
+    end
+    if (no_dret == 0) begin
+      basic_instr = {basic_instr, DRET};
     end
     if (no_fence == 0) begin
       basic_instr = {basic_instr, instr_category[SYNCH]};
     end
     // TODO: Support CSR instruction in other mode
     if ((no_csr_instr == 0) && (init_privileged_mode == MACHINE_MODE)) begin
+      `uvm_info(`gfn, $sformatf("Adding CSR instr, mode: %0s", init_privileged_mode.name()), UVM_LOW)
       basic_instr = {basic_instr, instr_category[CSR]};
     end
     if (no_wfi == 0) begin
@@ -479,7 +562,6 @@
   endfunction
 
   virtual function void get_excluded_instr(ref riscv_instr_name_t excluded[$]);
-    excluded = {excluded, INVALID_INSTR};
     // Below instrutions will modify stack pointer, not allowed in normal instruction stream.
     // It can be used in stack operation instruction stream.
     excluded = {excluded, C_SWSP, C_SDSP, C_ADDI16SP};
@@ -487,7 +569,7 @@
       excluded = {excluded, SFENCE_VMA};
     end
     if (no_fence) begin
-      excluded = {excluded, FENCE, FENCEI, SFENCE_VMA};
+      excluded = {excluded, FENCE, FENCE_I, SFENCE_VMA};
     end
     // TODO: Support C_ADDI4SPN
     excluded = {excluded, C_ADDI4SPN};
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_pkg.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_pkg.sv
index d76ae8a..187ffd2 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_pkg.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_pkg.sv
@@ -14,17 +14,25 @@
  * limitations under the License.
  */
 
+
 package riscv_instr_pkg;
 
+  `include "dv_defines.svh"
+  `include "riscv_defines.svh"
+  `include "uvm_macros.svh"
+
   import uvm_pkg::*;
   import riscv_signature_pkg::*;
 
-  `include "uvm_macros.svh"
-  `include "dv_defines.svh"
-  `include "riscv_defines.svh"
-
   `define include_file(f) `include `"f`"
 
+  // Data section setting
+  typedef struct {
+    string         name;
+    int unsigned   size_in_bytes;
+    bit [2:0]      xwr; // Excutable,Writable,Readale
+  } mem_region_t;
+
   typedef enum bit [3:0] {
     BARE = 4'b0000,
     SV32 = 4'b0001,
@@ -114,7 +122,7 @@
     AND,
     NOP,
     FENCE,
-    FENCEI,
+    FENCE_I,
     ECALL,
     EBREAK,
     CSRRW,
@@ -261,6 +269,7 @@
     AMOMINU_D,
     AMOMAXU_D,
     // Supervisor instruction
+    DRET,
     MRET,
     URET,
     SRET,
@@ -437,7 +446,7 @@
     SIP             = 'h144,  // Supervisor interrupt pending
     SATP            = 'h180,  // Supervisor address translation and protection
     // Machine mode register
-    MVENDORID      = 'hF11,  // Vendor ID
+    MVENDORID       = 'hF11,  // Vendor ID
     MARCHID         = 'hF12,  // Architecture ID
     MIMPID          = 'hF13,  // Implementation ID
     MHARTID         = 'hF14,  // Hardware thread ID
@@ -535,6 +544,7 @@
     MHPMCOUNTER29H  = 'hB9D,  // Upper 32 bits of HPMCOUNTER29, RV32I only
     MHPMCOUNTER30H  = 'hB9E,  // Upper 32 bits of HPMCOUNTER30, RV32I only
     MHPMCOUNTER31H  = 'hB9F,  // Upper 32 bits of HPMCOUNTER31, RV32I only
+    MCOUNTINHIBIT   = 'h320,  // Machine counter-inhibit register
     MHPMEVENT3      = 'h323,  // Machine performance-monitoring event selector
     MHPMEVENT4      = 'h324,  // Machine performance-monitoring event selector
     MHPMEVENT5      = 'h325,  // Machine performance-monitoring event selector
@@ -570,7 +580,8 @@
     TDATA3          = 'h7A3,  // Third Debug/Trace trigger data register
     DCSR            = 'h7B0,  // Debug control and status register
     DPC             = 'h7B1,  // Debug PC
-    DSCRATCH        = 'h7B2   // Debug scratch register
+    DSCRATCH0       = 'h7B2,  // Debug scratch register
+    DSCRATCH1       = 'h7B3   // Debug scratch register
   } privileged_reg_t;
 
   typedef enum bit [5:0] {
@@ -589,7 +600,6 @@
   } privileged_level_t;
 
   typedef enum bit [1:0] {
-    WIRI, // Reserved Writes Ignored, Reads Ignore Value
     WPRI, // Reserved Writes Preserve Values, Reads Ignore Value
     WLRL, // Write/Read Only Legal Values
     WARL  // Write Any Values, Reads Legal Values
@@ -675,11 +685,14 @@
     MISA_EXT_Z
   } misa_ext_t;
 
-  `ifndef RISCV_CORE_SETTING
-    `define RISCV_CORE_SETTING ../setting/riscv_core_setting.sv
-  `endif
+  typedef enum bit [1:0] {
+    NO_HAZARD,
+    RAW_HAZARD,
+    WAR_HAZARD,
+    WAW_HAZARD
+  } hazard_e;
 
-  `include_file(`RISCV_CORE_SETTING)
+  `include "riscv_core_setting.sv"
 
   typedef bit [15:0] program_id_t;
 
@@ -688,10 +701,10 @@
   parameter bit [XLEN - 1 : 0] SUM_BIT_MASK  = 'h1 << 18;
   parameter bit [XLEN - 1 : 0] MPP_BIT_MASK  = 'h3 << 11;
 
-  parameter IMM25_WIDTH       = 25;
-  parameter IMM12_WIDTH       = 12;
-  parameter INSTR_WIDTH       = 32;
-  parameter DATA_WIDTH        = 32;
+  parameter IMM25_WIDTH = 25;
+  parameter IMM12_WIDTH = 12;
+  parameter INSTR_WIDTH = 32;
+  parameter DATA_WIDTH  = 32;
 
   // Parameters for output assembly program formatting
   parameter MAX_INSTR_STR_LEN = 11;
@@ -772,10 +785,10 @@
         instr.push_back($sformatf("srli sp, sp, %0d", XLEN - MAX_USED_VADDR_BITS));
       end
     end
-    // Reserve space from kernel stack to save all 32 GPR
-    instr.push_back($sformatf("1: addi sp, sp, -%0d", 32 * (XLEN/8)));
+    // Reserve space from kernel stack to save all 32 GPR except for x0
+    instr.push_back($sformatf("1: addi sp, sp, -%0d", 31 * (XLEN/8)));
     // Push all GPRs to kernel stack
-    for(int i = 0; i < 32; i++) begin
+    for(int i = 1; i < 32; i++) begin
       instr.push_back($sformatf("%0s  x%0d, %0d(sp)", store_instr, i, i * (XLEN/8)));
     end
   endfunction
@@ -787,11 +800,11 @@
                                                     ref string instr[$]);
     string load_instr = (XLEN == 32) ? "lw" : "ld";
     // Pop user mode GPRs from kernel stack
-    for(int i = 0; i < 32; i++) begin
+    for(int i = 1; i < 32; i++) begin
       instr.push_back($sformatf("%0s  x%0d, %0d(sp)", load_instr, i, i * (XLEN/8)));
     end
     // Restore kernel stack pointer
-    instr.push_back($sformatf("addi sp, sp, %0d", 32 * (XLEN/8)));
+    instr.push_back($sformatf("addi sp, sp, %0d", 31 * (XLEN/8)));
     if (scratch inside {implemented_csr}) begin
       // Move SP to TP
       instr.push_back("add tp, sp, zero");
@@ -800,6 +813,12 @@
     end
   endfunction
 
+  riscv_reg_t all_gpr[] = {ZERO, RA, SP, GP, TP, T0, T1, T2, S0, S1, A0,
+                           A1, A2, A3, A4, A5, A6, A7, S2, S3, S4, S5, S6,
+                           S7, S8, S9, S10, S11, T3, T4, T5, T6};
+
+  riscv_reg_t compressed_gpr[] = {S0, S1, A0, A1, A2, A3, A4, A5};
+
   `include "riscv_instr_base.sv"
   `include "riscv_instr_gen_config.sv"
   `include "riscv_illegal_instr.sv"
@@ -820,9 +839,8 @@
   `include "riscv_amo_instr_lib.sv"
   `include "riscv_instr_sequence.sv"
   `include "riscv_asm_program_gen.sv"
-
-  `ifdef RISCV_DV_EXT_FILE_LIST
-    `include_file(`RISCV_DV_EXT_FILE_LIST)
-  `endif
+  `include "riscv_instr_cov_item.sv"
+  `include "riscv_instr_cover_group.sv"
+  `include "user_extension.svh"
 
 endpackage
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_sequence.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_sequence.sv
index b29be22..1e22677 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_sequence.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_sequence.sv
@@ -78,7 +78,8 @@
                                instr_stream.instr_list.size()), UVM_LOW)
     // Do not generate load/store instruction here
     // The load/store instruction will be inserted as directed instruction stream
-    instr_stream.gen_instr(.no_branch(no_branch), .no_load_store(1'b1));
+    instr_stream.gen_instr(.no_branch(no_branch), .no_load_store(1'b1),
+                           .is_debug_program(is_debug_program));
     if(!is_main_program) begin
       gen_stack_enter_instr();
       gen_stack_exit_instr();
@@ -132,7 +133,9 @@
   virtual function void post_process_instr();
     int i;
     int label_idx;
-    int branch_target[string] = '{default: 0};
+    int branch_cnt;
+    int unsigned branch_idx[];
+    int branch_target[int] = '{default: 0};
     // Insert directed instructions, it's randomly mixed with the random instruction stream.
     foreach (directed_instr[i]) begin
       instr_stream.insert_instr_stream(directed_instr[i].instr_list);
@@ -169,6 +172,11 @@
       end
     end
     // Generate branch target
+    branch_idx = new[30];
+    `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(branch_idx,
+                                       foreach(branch_idx[i]) {
+                                         branch_idx[i] inside {[1:cfg.max_branch_step]};
+                                       })
     while(i < instr_stream.instr_list.size()) begin
       if((instr_stream.instr_list[i].category == BRANCH) &&
         (!instr_stream.instr_list[i].branch_assigned) &&
@@ -179,11 +187,15 @@
         // reserved loop registers
         int branch_target_label;
         int branch_byte_offset;
-        `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(branch_target_label,
-          branch_target_label >= instr_stream.instr_list[i].idx+1;
-          branch_target_label <= label_idx-1;
-          branch_target_label <= instr_stream.instr_list[i].idx+cfg.max_branch_step;,
-          "Cannot randomize branch_target_label")
+        branch_target_label = instr_stream.instr_list[i].idx + branch_idx[branch_cnt];
+        if (branch_target_label >= label_idx) begin
+          branch_target_label = label_idx-1;
+        end
+        branch_cnt++;
+        if (branch_cnt == branch_idx.size()) begin
+          branch_cnt = 0;
+          branch_idx.shuffle();
+        end
         `uvm_info(get_full_name(),
                   $sformatf("Processing branch instruction[%0d]:%0s # %0d -> %0d",
                   i, instr_stream.instr_list[i].convert2asm(),
@@ -230,14 +242,11 @@
     jump_instr.cfg = cfg;
     jump_instr.label = label_name;
     jump_instr.idx = idx;
-    `DV_CHECK_RANDOMIZE_WITH_FATAL(jump_instr,
-      if(is_main_program) {
-        jump_instr.jump.rd == RA;
-      },
-      "Cannot randomize jump_instr")
+    jump_instr.use_jalr = is_main_program;
+    `DV_CHECK_RANDOMIZE_FATAL(jump_instr)
     instr_stream.insert_instr_stream(jump_instr.instr_list);
     `uvm_info(get_full_name(), $sformatf("%0s -> %0s...done",
-              jump_instr.jump.instr_name.name(), label_name), UVM_LOW)
+              jump_instr.jump.instr_name.name(), target_label), UVM_LOW)
   endfunction
 
   // Convert the instruction stream to the string format.
@@ -266,6 +275,7 @@
       str = {prefix, instr_stream.instr_list[i].convert2asm()};
       instr_string_list.push_back(str);
     end
+    insert_illegal_hint_instr();
     prefix = format_string($sformatf("%0d:", i), LABEL_STR_LEN);
     if(!is_main_program) begin
       str = {prefix, "ret"};
@@ -273,53 +283,36 @@
     end
   endfunction
 
-  // Convert the instruction stream to binary format
-  function void generate_binary_stream(ref string binary[$]);
-    string instr_bin;
-    string remaining_bin;
+  function void insert_illegal_hint_instr();
+    int bin_instr_cnt;
+    int idx;
     string str;
-    illegal_instr.cfg = cfg;
-    foreach (instr_stream.instr_list[i]) begin
-      if (instr_stream.instr_list[i].is_illegal_instr) begin
-        // Replace the original instruction with illegal instruction binary
+    illegal_instr.init(cfg);
+    bin_instr_cnt = instr_cnt * cfg.illegal_instr_ratio / 1000;
+    if (bin_instr_cnt >= 0) begin
+      `uvm_info(`gfn, $sformatf("Injecting %0d illegal instructions, ratio %0d/100",
+                      bin_instr_cnt, cfg.illegal_instr_ratio), UVM_LOW)
+      repeat (bin_instr_cnt) begin
         `DV_CHECK_RANDOMIZE_WITH_FATAL(illegal_instr,
-                                       exception != kHintInstr;
-                                       compressed == instr_stream.instr_list[i].is_compressed;)
-        str = illegal_instr.get_bin_str();
-        `uvm_info(`gfn, $sformatf("Inject %0s [%0d] %0s replaced with %0s",
-                                  illegal_instr.exception.name(), i,
-                                  instr_stream.instr_list[i].convert2bin() ,str), UVM_HIGH)
-      end else if (instr_stream.instr_list[i].is_hint_instr) begin
-        // Replace the original instruction with HINT instruction binary
-        `DV_CHECK_RANDOMIZE_WITH_FATAL(illegal_instr,
-                                       exception == kHintInstr;
-                                       compressed == instr_stream.instr_list[i].is_compressed;)
-        str = illegal_instr.get_bin_str();
-        `uvm_info(`gfn, $sformatf("Inject %0s [%0d] %0s replaced with %0s",
-                                  illegal_instr.exception.name(), i,
-                                  instr_stream.instr_list[i].convert2bin() ,str), UVM_HIGH)
-      end else begin
-        str = instr_stream.instr_list[i].convert2bin();
+                                       exception != kHintInstr;)
+        str = {indent, $sformatf(".4byte 0x%s # %0s",
+                       illegal_instr.get_bin_str(), illegal_instr.exception.name())};
+        idx = $urandom_range(0, instr_string_list.size());
+        instr_string_list.insert(idx, str);
       end
-      instr_bin = {str, remaining_bin};
-      // Handle various instruction alignment
-      if (instr_bin.len() == 8) begin
-        binary.push_back({"0x", instr_bin});
-        remaining_bin = "";
-      end else if (instr_bin.len() == 12) begin
-        binary.push_back({"0x", instr_bin.substr(4, 11)});
-        remaining_bin = instr_bin.substr(0, 3);
-      end else if (instr_bin.len() == 4) begin
-        remaining_bin = instr_bin;
-      end else begin
-        `uvm_fatal(`gfn, $sformatf("Unexpected binary length :%0d", instr_bin.len()))
-      end
-      `uvm_info("BIN", $sformatf("%0s : %0s", instr_stream.instr_list[i].convert2bin(),
-                                 instr_stream.instr_list[i].convert2asm()), UVM_HIGH)
     end
-    // Attach a C_NOP(0x0001) to make the last entry 32b
-    if (remaining_bin != "") begin
-      binary.push_back({"0x0001", remaining_bin});
+    bin_instr_cnt = instr_cnt * cfg.hint_instr_ratio / 1000;
+    if (bin_instr_cnt >= 0) begin
+      `uvm_info(`gfn, $sformatf("Injecting %0d HINT instructions, ratio %0d/100",
+                      bin_instr_cnt, cfg.illegal_instr_ratio), UVM_LOW)
+      repeat (bin_instr_cnt) begin
+        `DV_CHECK_RANDOMIZE_WITH_FATAL(illegal_instr,
+                                       exception == kHintInstr;)
+        str = {indent, $sformatf(".2byte 0x%s # %0s",
+                       illegal_instr.get_bin_str(), illegal_instr.exception.name())};
+        idx = $urandom_range(0, instr_string_list.size());
+        instr_string_list.insert(idx, str);
+      end
     end
   endfunction
 
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_stream.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_stream.sv
index 3441c7b..a412ee0 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_stream.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_instr_stream.sv
@@ -20,11 +20,14 @@
 // instruction, mix two instruction streams etc.
 class riscv_instr_stream extends uvm_object;
 
-  rand riscv_instr_base instr_list[$];
+  riscv_instr_base      instr_list[$];
   int unsigned          instr_cnt;
   string                label = "";
   // User can specify a small group of available registers to generate various hazard condition
   rand riscv_reg_t      avail_regs[];
+  // Some additional reserved registers that should not be used as rd register
+  // by this instruction stream
+  riscv_reg_t           reserved_rd[];
 
   `uvm_object_utils(riscv_instr_stream)
   `uvm_object_new
@@ -95,9 +98,17 @@
     if(replace) begin
       new_instr[0].label = instr_list[idx].label;
       new_instr[0].has_label = instr_list[idx].has_label;
-      instr_list = {instr_list[0:idx-1], new_instr, instr_list[idx+1:current_instr_cnt-1]};
+      if (idx == 0) begin
+        instr_list = {new_instr, instr_list[idx+1:current_instr_cnt-1]};
+      end else begin
+        instr_list = {instr_list[0:idx-1], new_instr, instr_list[idx+1:current_instr_cnt-1]};
+      end
     end else begin
-      instr_list = {instr_list[0:idx-1], new_instr, instr_list[idx:current_instr_cnt-1]};
+      if (idx == 0) begin
+        instr_list = {new_instr, instr_list[idx:current_instr_cnt-1]};
+      end else begin
+        instr_list = {instr_list[0:idx-1], new_instr, instr_list[idx:current_instr_cnt-1]};
+      end
     end
   endfunction
 
@@ -112,10 +123,10 @@
     `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(insert_instr_position,
       foreach(insert_instr_position[i]) {
         insert_instr_position[i] inside {[0:current_instr_cnt-1]};
-        if(i > 0) {
-          insert_instr_position[i] >= insert_instr_position[i-1];
-        }
       })
+    if (insert_instr_position.size() > 0) begin
+      insert_instr_position.sort();
+    end
     if(contained) begin
       insert_instr_position[0] = 0;
       if(new_instr_cnt > 1)
@@ -144,23 +155,9 @@
 class riscv_rand_instr_stream extends riscv_instr_stream;
 
   riscv_instr_gen_config  cfg;
-  bit                     access_u_mode_mem = 1'b1;
-  int                     max_load_store_offset;
-  int                     max_data_page_id;
+  bit                     kernel_mode;
   riscv_instr_name_t      allowed_instr[$];
 
-  // Some additional reserved registers that should not be used as rd register
-  // by this instruction stream
-  riscv_reg_t             reserved_rd[];
-
-  constraint avoid_reserved_rd_c {
-    if(reserved_rd.size() > 0) {
-      foreach(instr_list[i]) {
-        !(instr_list[i].rd inside {reserved_rd});
-      }
-    }
-  }
-
   `uvm_object_utils(riscv_rand_instr_stream)
   `uvm_object_new
 
@@ -172,17 +169,7 @@
     end
   endfunction
 
-  function void pre_randomize();
-    if(access_u_mode_mem) begin
-      max_load_store_offset = riscv_instr_pkg::data_page_size;
-      max_data_page_id = riscv_instr_pkg::num_of_data_pages;
-    end else begin
-      max_load_store_offset = riscv_instr_pkg::kernel_data_page_size;
-      max_data_page_id = riscv_instr_pkg::num_of_kernel_data_pages;
-    end
-  endfunction
-
-  virtual function setup_allowed_instr(bit no_branch = 1'b0, bit no_load_store = 1'b1);
+  virtual function void setup_allowed_instr(bit no_branch = 1'b0, bit no_load_store = 1'b1);
     allowed_instr = cfg.basic_instr;
     if (no_branch == 0) begin
       allowed_instr = {allowed_instr, cfg.instr_category[BRANCH]};
@@ -192,10 +179,11 @@
     end
   endfunction
 
-  virtual function void gen_instr(bit no_branch = 1'b0, bit no_load_store = 1'b1);
+  virtual function void gen_instr(bit no_branch = 1'b0, bit no_load_store = 1'b1,
+                                  bit is_debug_program = 1'b0);
     setup_allowed_instr(no_branch, no_load_store);
     foreach(instr_list[i]) begin
-      randomize_instr(instr_list[i]);
+      randomize_instr(instr_list[i], is_debug_program);
     end
     // Do not allow branch instruction as the last instruction because there's no
     // forward branch target
@@ -206,21 +194,30 @@
   endfunction
 
   function void randomize_instr(riscv_instr_base instr,
+                                bit is_in_debug = 1'b0,
                                 bit skip_rs1 = 1'b0,
                                 bit skip_rs2 = 1'b0,
                                 bit skip_rd  = 1'b0,
                                 bit skip_imm = 1'b0,
                                 bit skip_csr = 1'b0);
     riscv_instr_name_t instr_name;
-    `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(instr_name,
+    // if set_dcsr_ebreak is set, we do not want to generate any ebreak
+    // instructions inside the debug_rom
+    if (!cfg.enable_ebreak_in_debug_rom && is_in_debug) begin
+      `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(instr_name,
+                                        instr_name inside {allowed_instr};
+                                        !(instr_name inside {EBREAK, C_EBREAK});)
+    end else begin
+      `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(instr_name,
                                        instr_name inside {allowed_instr};)
+    end
     instr.copy_base_instr(cfg.instr_template[instr_name]);
     `uvm_info(`gfn, $sformatf("%s: rs1:%0d, rs2:%0d, rd:%0d, imm:%0d",
                               instr.instr_name.name(),
                               instr.has_rs1,
                               instr.has_rs2,
                               instr.has_rd,
-                              instr.has_imm), UVM_HIGH)
+                              instr.has_imm), UVM_FULL)
     if (instr.has_imm && !skip_imm) begin
       instr.gen_rand_imm();
     end
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_load_store_instr_lib.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_load_store_instr_lib.sv
index f019616..4c570fc 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_load_store_instr_lib.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_load_store_instr_lib.sv
@@ -16,70 +16,85 @@
 
 // Base class for all load/store instruction stream
 
-class riscv_load_store_base_instr_stream extends riscv_directed_instr_stream;
+class riscv_load_store_base_instr_stream extends riscv_mem_access_stream;
+
+  typedef enum bit [1:0] {
+    NARROW,
+    HIGH,
+    MEDIUM,
+    SPARSE
+  } locality_e;
 
   rand int unsigned  num_load_store;
   rand int unsigned  num_mixed_instr;
   rand int           base;
-  rand int           offset[];
-  rand int           addr[];
+  int                offset[];
+  int                addr[];
   rand int unsigned  data_page_id;
   rand riscv_reg_t   rs1_reg;
+  rand locality_e    locality;
+  rand int           max_load_store_offset;
 
   `uvm_object_utils(riscv_load_store_base_instr_stream)
 
-  constraint size_c {
-    offset.size() == num_load_store;
-    addr.size() == num_load_store;
-  }
-
   constraint rs1_c {
     !(rs1_reg inside {cfg.reserved_regs, reserved_rd, ZERO});
   }
 
   constraint addr_c {
+    solve data_page_id before max_load_store_offset;
+    solve max_load_store_offset before base;
     data_page_id < max_data_page_id;
-    base inside {[0 : max_load_store_offset-1]};
-    foreach(offset[i]) {
-      addr[i] == base + offset[i];
-      // Make sure address is still valid
-      addr[i] inside {[0 : max_load_store_offset - 1]};
-      offset[i] inside {[-2048:2047]};
+    foreach (data_page[i]) {
+      if (i == data_page_id) {
+        max_load_store_offset == data_page[i].size_in_bytes;
+      }
     }
+    base inside {[0 : max_load_store_offset-1]};
   }
 
   function new(string name = "");
     super.new(name);
-    instr_list.rand_mode(0);
+  endfunction
+
+  virtual function void randomize_offset();
+    int offset_, addr_;
+    offset = new[num_load_store];
+    addr = new[num_load_store];
+    for (int i=0; i<num_load_store; i++) begin
+      if (!std::randomize(offset_, addr_) with {
+        // Locality
+        if (locality == NARROW) {
+          soft offset_ inside {[-16:16]};
+        } else if (locality == HIGH) {
+          soft offset_ inside {[-64:64]};
+        } else if (locality == MEDIUM) {
+          soft offset_ inside {[-256:256]};
+        } else if (locality == SPARSE) {
+          soft offset_ inside {[-2048:2047]};
+        }
+        addr_ == base + offset_;
+        addr_ inside {[0 : max_load_store_offset - 1]};
+      }) begin
+        `uvm_fatal(`gfn, "Cannot randomize load/store offset")
+      end
+      offset[i] = offset_;
+      addr[i] = addr_;
+    end
   endfunction
 
   function void post_randomize();
+    randomize_offset();
     // rs1 cannot be modified by other instructions
     if(!(rs1_reg inside {reserved_rd})) begin
       reserved_rd = {reserved_rd, rs1_reg};
     end
     gen_load_store_instr();
-    add_mixed_instr();
-    add_rs1_init_la_instr();
+    add_mixed_instr(num_mixed_instr);
+    add_rs1_init_la_instr(rs1_reg, data_page_id, base);
     super.post_randomize();
   endfunction
 
-  // Use "la" instruction to initialize the base regiseter
-  virtual function void add_rs1_init_la_instr();
-    riscv_pseudo_instr la_instr;
-    la_instr = riscv_pseudo_instr::type_id::create("la_instr");
-    `DV_CHECK_RANDOMIZE_WITH_FATAL(la_instr,
-                                   pseudo_instr_name == LA;
-                                   rd == rs1_reg;,
-                                   "Cannot randomize la_instr")
-    if(access_u_mode_mem) begin
-      la_instr.imm_str = $sformatf("data_page_%0d+%0d", data_page_id, base);
-    end else begin
-      la_instr.imm_str = $sformatf("kernel_data_page_%0d+%0d", data_page_id, base);
-    end
-    instr_list.push_front(la_instr);
-  endfunction
-
   // Generate each load/store instruction
   virtual function void gen_load_store_instr();
     bit enable_compressed_load_store;
@@ -105,7 +120,7 @@
         allowed_instr = {LH, LHU, SH, allowed_instr};
       end
       if (!cfg.enable_unaligned_load_store) begin
-        if (addr[i][1:0] == 2'b00) begin
+        if (addr[i] % 4 == 0) begin
           allowed_instr = {LW, SW, allowed_instr};
           if((offset[i] inside {[0:127]}) && (offset[i] % 4 == 0) &&
              (RV32C inside {riscv_instr_pkg::supported_isa}) &&
@@ -113,7 +128,7 @@
             allowed_instr = {C_LW, C_SW, allowed_instr};
           end
         end
-        if ((XLEN >= 64) && (addr[i][2:0] == 3'b000)) begin
+        if ((XLEN >= 64) && (addr[i] % 8 == 0)) begin
           allowed_instr = {LWU, LD, SD, allowed_instr};
           if((offset[i] inside {[0:255]}) && (offset[i] % 8 == 0) &&
              (RV64C inside {riscv_instr_pkg::supported_isa} &&
@@ -145,17 +160,6 @@
     end
   endfunction
 
-  // Insert some other instructions to mix with load/store instruction
-  virtual function void add_mixed_instr();
-    riscv_instr_base instr;
-    setup_allowed_instr(1, 1);
-    for(int i = 0; i < num_mixed_instr; i ++) begin
-      instr = riscv_instr_base::type_id::create("instr");
-      randomize_instr(instr);
-      insert_instr(instr);
-    end
-  endfunction
-
 endclass
 
 // A single load/store instruction
@@ -253,27 +257,11 @@
       addr[i] = temp_addr;
     end
   endfunction
-
-endclass
-
-// Back-to-back access to the same cache line
-class riscv_cache_line_stress_instr_stream extends riscv_load_store_stress_instr_stream;
-
-  constraint same_cache_line_c {
-    base % riscv_instr_pkg::dcache_line_size_in_bytes == 0;
-    foreach(offset[i]) {
-      offset[i] inside {[0 : riscv_instr_pkg::dcache_line_size_in_bytes-1]};
-    }
-  }
-
-  `uvm_object_utils(riscv_cache_line_stress_instr_stream)
-  `uvm_object_new
-
 endclass
 
 // Back to back access to multiple data pages
 // This is useful to test data TLB switch and replacement
-class riscv_multi_page_load_store_instr_stream extends riscv_directed_instr_stream;
+class riscv_multi_page_load_store_instr_stream extends riscv_mem_access_stream;
 
   riscv_load_store_stress_instr_stream load_store_instr_stream[];
   rand int unsigned num_of_instr_stream;
@@ -287,13 +275,17 @@
     data_page_id.size() == num_of_instr_stream;
     rs1_reg.size() == num_of_instr_stream;
     unique {rs1_reg};
-    unique {data_page_id};
-    num_of_instr_stream inside {[1 : max_data_page_id]};
     foreach(rs1_reg[i]) {
       !(rs1_reg[i] inside {cfg.reserved_regs, ZERO});
     }
   }
 
+  constraint page_c {
+    solve num_of_instr_stream before data_page_id;
+    num_of_instr_stream inside {[1 : max_data_page_id]};
+    unique {data_page_id};
+  }
+
   // Avoid accessing a large number of pages because we may run out of registers for rs1
   // Each page access needs a reserved register as the base address of load/store instruction
   constraint reasonable_c {
@@ -334,3 +326,20 @@
   endfunction
 
 endclass
+
+// Access the different locations of the same memory regions
+class riscv_mem_region_stress_test extends riscv_multi_page_load_store_instr_stream;
+
+  `uvm_object_utils(riscv_mem_region_stress_test)
+  `uvm_object_new
+
+  constraint page_c {
+    num_of_instr_stream inside {[2:5]};
+    foreach (data_page_id[i]) {
+      if (i > 0) {
+        data_page_id[i] == data_page_id[i-1];
+      }
+    }
+  }
+
+endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_loop_instr.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_loop_instr.sv
index b0fe8e1..ea173de 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_loop_instr.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_loop_instr.sv
@@ -25,8 +25,8 @@
   rand int                 loop_step_val[];
   rand int                 loop_limit_val[];
   rand bit [2:0]           num_of_nested_loop;
-  rand riscv_instr_name_t  branch_type[];
   rand int                 num_of_instr_in_loop;
+  rand riscv_instr_name_t  branch_type[];
   riscv_instr_base         loop_init_instr[];
   riscv_instr_base         loop_update_instr[];
   riscv_instr_base         loop_branch_instr[];
@@ -34,23 +34,37 @@
   // Aggregated loop instruction stream
   riscv_instr_base         loop_instr[];
 
-  constraint loop_c {
+  constraint legal_loop_regs_c {
     solve num_of_nested_loop before loop_cnt_reg;
     solve num_of_nested_loop before loop_limit_reg;
+    foreach (loop_cnt_reg[i]) {
+      loop_cnt_reg[i] != ZERO;
+      foreach (cfg.default_reserved_regs[j]) {
+        loop_cnt_reg[i] != cfg.default_reserved_regs[j];
+      }
+    }
+    foreach (loop_limit_reg[i]) {
+      loop_limit_reg[i] != ZERO;
+      foreach (cfg.default_reserved_regs[j]) {
+        loop_limit_reg[i] != cfg.default_reserved_regs[j];
+      }
+    }
+    unique {loop_cnt_reg, loop_limit_reg};
+    loop_cnt_reg.size() == num_of_nested_loop;
+    loop_limit_reg.size() == num_of_nested_loop;
+  }
+
+  constraint loop_c {
     solve num_of_nested_loop before loop_init_val;
     solve num_of_nested_loop before loop_step_val;
     solve num_of_nested_loop before loop_limit_val;
     num_of_instr_in_loop inside {[1:200]};
-    num_of_nested_loop inside {[1:cfg.max_nested_loop]};
-    loop_cnt_reg.size() == num_of_nested_loop;
-    loop_limit_reg.size() == num_of_nested_loop;
+    num_of_nested_loop inside {[1:2]};
     loop_init_val.size() == num_of_nested_loop;
     loop_step_val.size() == num_of_nested_loop;
     loop_limit_val.size() == num_of_nested_loop;
     branch_type.size() == num_of_nested_loop;
     foreach(loop_init_val[i]) {
-      loop_cnt_reg[i]   inside {cfg.loop_regs};
-      loop_limit_reg[i] inside {cfg.loop_regs};
       loop_init_val[i]  inside {[-10:10]};
       loop_limit_val[i] inside {[-20:20]};
       loop_step_val[i]  inside {[-10:10]};
@@ -74,13 +88,13 @@
         branch_type[i] inside {BGEU, BNE, BGE, BEQ};
       }
     }
-    unique {loop_cnt_reg, loop_limit_reg};
   }
 
   `uvm_object_utils(riscv_loop_instr)
   `uvm_object_new
 
   function void post_randomize();
+    reserved_rd = {loop_cnt_reg, loop_limit_reg};
     // Generate instructions that mixed with the loop instructions
     initialize_instr_list(num_of_instr_in_loop);
     gen_instr(1'b1);
@@ -113,6 +127,7 @@
       // Branch target instruction, can be anything
       loop_branch_target_instr[i] = riscv_rand_instr::type_id::create("loop_branch_target_instr");
       loop_branch_target_instr[i].cfg = cfg;
+      loop_branch_target_instr[i].reserved_rd = reserved_rd;
       `DV_CHECK_RANDOMIZE_WITH_FATAL(loop_branch_target_instr[i],
                                      !(category inside {LOAD, STORE, BRANCH, JUMP});,
                                      "Cannot randomize branch target instruction")
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table.sv
index 1f5d300..a7e7150 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table.sv
@@ -49,10 +49,9 @@
     string str;
     this.gen_page_table_binary();
     // Align the page table to 4K boundary
-    str = ".align 12";
-    instr.push_back(str);
-    str = $sformatf("%0s:", get_name());
-    instr.push_back(str);
+    instr = {instr,
+             ".align 12",
+             $sformatf("%0s:", get_name())};
     foreach(pte_binary[i]) begin
       if (i % 8 == 0) begin
         if (XLEN == 64) begin
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table_list.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table_list.sv
index 4a7b35d..1ce35ed 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table_list.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_page_table_list.sv
@@ -353,7 +353,8 @@
     // Fix kernel leaf PTE
     instr.push_back("fix_kernel_leaf_pte:");
     // - Load the starting virtual address of the kernel space
-    instr.push_back($sformatf("la x%0d, _kernel_start", tmp_reg));
+    instr.push_back($sformatf("la x%0d, _kernel_instr_start", tmp_reg));
+    // TODO: Fix kernel instruction/data pages separatedly
     instr.push_back($sformatf("slli x%0d, x%0d, %0d", tmp_reg, tmp_reg,
                     XLEN - MAX_USED_VADDR_BITS));
     instr.push_back($sformatf("srli x%0d, x%0d, %0d", tmp_reg, tmp_reg,
@@ -460,14 +461,14 @@
         end
       end
     end
-    // ---------------------------------------
-    // Set the kernel page u bit to 0
-    // ---------------------------------------
-    // Load the start and end address of the kernel space
+    // ---------------------------------------------------------------------------
+    // Set the kernel page u bit to 0 for supervisor mode instruction/data pages
+    // ---------------------------------------------------------------------------
     if (cfg.support_supervisor_mode) begin
       instr = {instr,
-               "la x20, _kernel_start",
-               "la x21, _kernel_end",
+               // Process kernel instruction pages
+               "la x20, _kernel_instr_start",
+               "la x21, _kernel_instr_end",
                // Get the VPN of the physical address
                $sformatf("slli x20, x20, %0d", XLEN - MAX_USED_VADDR_BITS),
                $sformatf("srli x20, x20, %0d", XLEN - MAX_USED_VADDR_BITS + 12),
@@ -480,7 +481,7 @@
                "add x20, x22, x20",
                "add x21, x22, x21",
                $sformatf("li x22, 0x%0x", ubit_mask),
-               "process_kernel_pte:",
+               "1:",
                // Load the PTE from the memory
                $sformatf("l%0s x23, 0(x20)", load_store_unit),
                // Unset U bit
@@ -490,7 +491,30 @@
                // Move to the next PTE
                $sformatf("addi x20, x20, %0d", XLEN/8),
                // If not the end of the kernel space, process the next PTE
-               "ble x20, x21, process_kernel_pte"};
+               "ble x20, x21, 1b",
+               // Process kernel data pages
+               "la x20, _kernel_data_start",
+               // Get the VPN of the physical address
+               $sformatf("slli x20, x20, %0d", XLEN - MAX_USED_VADDR_BITS),
+               $sformatf("srli x20, x20, %0d", XLEN - MAX_USED_VADDR_BITS + 12),
+               $sformatf("slli x20, x20, %0d", $clog2(XLEN)),
+               // Starting from the first 4KB leaf page table
+               $sformatf("la x22, page_table_%0d", get_1st_4k_table_id()),
+               "add x20, x22, x20",
+               $sformatf("li x22, 0x%0x", ubit_mask),
+               // Assume 20 PTEs for kernel data pages
+               $sformatf("addi x20, x20, %0d", 20 * XLEN/8),
+               "2:",
+               // Load the PTE from the memory
+               $sformatf("l%0s x23, 0(x20)", load_store_unit),
+               // Unset U bit
+               "and x23, x23, x22",
+               // Save PTE back to memory
+               $sformatf("l%0s x23, 0(x20)", load_store_unit),
+               // Move to the next PTE
+               $sformatf("addi x20, x20, %0d", XLEN/8),
+               // If not the end of the kernel space, process the next PTE
+               "ble x20, x21, 2b"};
     end
   endfunction
 
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privil_reg.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privil_reg.sv
index 4ae206a..423865a 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privil_reg.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privil_reg.sv
@@ -31,29 +31,29 @@
       MISA: begin
         privil_level = M_LEVEL;
         add_field("WARL0", 26, WARL);
-        add_field("WIRI", XLEN-28, WIRI);
+        add_field("WLRL", XLEN-28, WLRL);
         add_field("MXL", 2, WARL);
       end
       // Machine Vendor ID Register
       MVENDORID: begin
         privil_level = M_LEVEL;
-        add_field("OFFSET", 7, WIRI);
-        add_field("BANK", XLEN-7, WIRI);
+        add_field("OFFSET", 7, WPRI);
+        add_field("BANK", XLEN-7, WPRI);
       end
       // Machine Architecture ID Register
       MARCHID: begin
         privil_level = M_LEVEL;
-        add_field("ARCHITECTURE_ID", XLEN, WIRI);
+        add_field("ARCHITECTURE_ID", XLEN, WPRI);
       end
       // Machine Implementation ID Register
       MIMPID: begin
         privil_level = M_LEVEL;
-        add_field("IMPLEMENTATION", XLEN, WIRI);
+        add_field("IMPLEMENTATION", XLEN, WPRI);
       end
       // Hart ID Register
       MHARTID: begin
         privil_level = M_LEVEL;
-        add_field("HART_ID", XLEN, WIRI);
+        add_field("HART_ID", XLEN, WPRI);
       end
       // Machine Status Register
       MSTATUS: begin
@@ -136,7 +136,7 @@
         privil_level = M_LEVEL;
         add_field("USIP",   1,  WARL);
         add_field("SSIP",   1,  WARL);
-        add_field("WIRI0",  1,  WIRI);
+        add_field("WPRI0",  1,  WPRI);
         add_field("MSIP",   1,  WARL);
         add_field("UTIP",   1,  WARL);
         add_field("STIP",   1,  WARL);
@@ -144,9 +144,9 @@
         add_field("MTIP",   1,  WARL);
         add_field("UEIP",   1,  WARL);
         add_field("SEIP",   1,  WARL);
-        add_field("WIRI2",  1,  WIRI);
+        add_field("WPRI2",  1,  WPRI);
         add_field("MEIP",   1,  WARL);
-        add_field("WIRI3",  XLEN - 12,  WIRI);
+        add_field("WPRI3",  XLEN - 12,  WPRI);
       end
       // Machine interrupt-enable register
       MIE: begin
@@ -168,27 +168,27 @@
       // Cycle Count Register
       MCYCLE: begin
         privil_level = M_LEVEL;
-        add_field("MCYCLE", 64, WIRI);
+        add_field("MCYCLE", 64, WPRI);
       end
       // Instruction Count Register
       MINSTRET: begin
         privil_level = M_LEVEL;
-        add_field("MINSTRET", 64, WIRI);
+        add_field("MINSTRET", 64, WPRI);
       end
       // Cycle Count Register - RV32I only
       MCYCLEH: begin
         privil_level = M_LEVEL;
-        add_field("MCYCLEH", 32, WIRI);
+        add_field("MCYCLEH", 32, WPRI);
       end
       // Instruction Count Register - RV32I only
       MINSTRETH: begin
         privil_level = M_LEVEL;
-        add_field("MINSTRETH", 32, WIRI);
+        add_field("MINSTRETH", 32, WPRI);
       end
       // Hardware Performance Monitor Counters
       [MHPMCOUNTER3:MHPMCOUNTER31]: begin
         privil_level = M_LEVEL;
-        add_field($sformatf("%s", reg_name.name()), XLEN, WIRI);
+        add_field($sformatf("%s", reg_name.name()), XLEN, WARL);
       end
       // Hardware Performance Monitor Events
       [MHPMEVENT3:MHPMEVENT31]: begin
@@ -201,7 +201,7 @@
           `uvm_fatal(get_full_name(), $sformatf("Register %s is only in RV32I", reg_name.name()))
         end
         privil_level = M_LEVEL;
-        add_field($sformatf("%s", reg_name.name()), 32, WIRI);
+        add_field($sformatf("%s", reg_name.name()), 32, WARL);
       end
       // Machine Counter Enable Register
       MCOUNTEREN: begin
@@ -324,7 +324,7 @@
         privil_level = M_LEVEL;
         if(XLEN==64) begin
           add_field("ADDRESS", 54, WARL);
-          add_field("WIRI", 10, WIRI);
+          add_field("WARL", 10, WARL);
         end else begin
           add_field("ADDRESS", 32, WARL);
         end
@@ -560,16 +560,6 @@
       default:
         `uvm_fatal(get_full_name(), $sformatf("reg %0s is not supported yet", reg_name.name()))
     endcase
-    set_wiri_wpri_fields();
-  endfunction
-
-  // Hardwire all WIRI and WPRI fields to '0
-  virtual function void set_wiri_wpri_fields();
-    foreach(fld[i]) begin
-      if(fld[i].access_type inside {WIRI, WPRI}) begin
-        set_field(fld[i].get_name(), '0, 1'b1);
-      end
-    end
   endfunction
 
 endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privileged_common_seq.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privileged_common_seq.sv
index 9a8cffc..474b860 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privileged_common_seq.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_privileged_common_seq.sv
@@ -55,7 +55,15 @@
   virtual function void setup_mmode_reg(privileged_mode_t mode, ref riscv_privil_reg regs[$]);
     mstatus = riscv_privil_reg::type_id::create("mstatus");
     mstatus.init_reg(MSTATUS);
-    `DV_CHECK_RANDOMIZE_FATAL(mstatus, "cannot randomize mstatus");
+    if (cfg.randomize_csr) begin
+      mstatus.set_val({cfg.mstatus[XLEN-1:XLEN-21], cfg.mstatus_tvm, cfg.mstatus_mxr,
+                     cfg.mstatus_sum, cfg.mstatus_mprv, cfg.mstatus[16:0]});
+    end else begin
+      mstatus.set_field("MPRV", cfg.mstatus_mprv);
+      mstatus.set_field("MXR", cfg.mstatus_mxr);
+      mstatus.set_field("SUM", cfg.mstatus_sum);
+      mstatus.set_field("TVM", cfg.mstatus_tvm);
+    end
     if(XLEN==64) begin
       mstatus.set_field("UXL", 2'b10);
       mstatus.set_field("SXL", 2'b10);
@@ -64,16 +72,9 @@
     mstatus.set_field("FS", 0);
     mstatus.set_field("SD", 0);
     mstatus.set_field("UIE", 0);
-    mstatus.set_field("MPRV", cfg.mstatus_mprv);
-    mstatus.set_field("MXR", cfg.mstatus_mxr);
-    mstatus.set_field("SUM", cfg.mstatus_sum);
-    mstatus.set_field("TVM", cfg.mstatus_tvm);
     // Set the previous privileged mode as the target mode
     mstatus.set_field("MPP", mode);
-    if(mode == USER_MODE)
-      mstatus.set_field("SPP", 0);
-    else
-      mstatus.set_field("SPP", 1);
+    mstatus.set_field("SPP", 0);
     // Enable interrupt
     mstatus.set_field("MPIE", cfg.enable_interrupt);
     mstatus.set_field("MIE", cfg.enable_interrupt);
@@ -81,17 +82,27 @@
     mstatus.set_field("SIE",  cfg.enable_interrupt);
     mstatus.set_field("UPIE", cfg.enable_interrupt);
     mstatus.set_field("UIE", riscv_instr_pkg::support_umode_trap);
+    `uvm_info(`gfn, $sformatf("mstatus_val: 0x%0x", mstatus.get_val()), UVM_LOW)
     regs.push_back(mstatus);
     // Enable external and timer interrupt
     if (MIE inside {implemented_csr}) begin
       mie = riscv_privil_reg::type_id::create("mie");
       mie.init_reg(MIE);
+      if (cfg.randomize_csr) begin
+        mie.set_val(cfg.mie);
+      end
       mie.set_field("UEIE", cfg.enable_interrupt);
       mie.set_field("SEIE", cfg.enable_interrupt);
       mie.set_field("MEIE", cfg.enable_interrupt);
       mie.set_field("USIE", cfg.enable_interrupt);
       mie.set_field("SSIE", cfg.enable_interrupt);
       mie.set_field("MSIE", cfg.enable_interrupt);
+      // TODO(udinator) - since full CSRs are being randomized, it's necessary to hardwire the xTIE
+      // fields to 1'b0, as it causes some timer interrupts to be triggered in Spike after a certain
+      // amount of simulation time.
+      mie.set_field("MTIE", 1'b0);
+      mie.set_field("STIE", 1'b0);
+      mie.set_field("UTIE", 1'b0);
       regs.push_back(mie);
     end
   endfunction
@@ -100,6 +111,9 @@
     sstatus = riscv_privil_reg::type_id::create("sstatus");
     sstatus.init_reg(SSTATUS);
     `DV_CHECK_RANDOMIZE_FATAL(sstatus, "cannot randomize sstatus")
+    if (cfg.randomize_csr) begin
+      sstatus.set_val(cfg.sstatus);
+    end
     sstatus.set_field("SPIE", cfg.enable_interrupt);
     sstatus.set_field("SIE",  cfg.enable_interrupt);
     sstatus.set_field("UPIE", cfg.enable_interrupt);
@@ -111,19 +125,21 @@
     sstatus.set_field("FS", 0);
     sstatus.set_field("SD", 0);
     sstatus.set_field("UIE", 0);
-    if(mode == USER_MODE)
-      sstatus.set_field("SPP", 0);
-    else
-      sstatus.set_field("SPP", 1);
+    sstatus.set_field("SPP", 0);
     regs.push_back(sstatus);
     // Enable external and timer interrupt
     if (SIE inside {implemented_csr}) begin
       sie = riscv_privil_reg::type_id::create("sie");
       sie.init_reg(SIE);
+      if (cfg.randomize_csr) begin
+        sie.set_val(cfg.sie);
+      end
       sie.set_field("UEIE", cfg.enable_interrupt);
       sie.set_field("SEIE", cfg.enable_interrupt);
       sie.set_field("USIE", cfg.enable_interrupt);
       sie.set_field("SSIE", cfg.enable_interrupt);
+      sie.set_field("STIE", 1'b0);
+      sie.set_field("UTIE", 1'b0);
       regs.push_back(sie);
     end
   endfunction
@@ -132,14 +148,21 @@
     ustatus = riscv_privil_reg::type_id::create("ustatus");
     ustatus.init_reg(USTATUS);
     `DV_CHECK_RANDOMIZE_FATAL(ustatus, "cannot randomize ustatus")
+    if (cfg.randomize_csr) begin
+      ustatus.set_val(cfg.ustatus);
+    end
     ustatus.set_field("UIE", cfg.enable_interrupt);
     ustatus.set_field("UPIE", cfg.enable_interrupt);
     regs.push_back(ustatus);
     if (UIE inside {implemented_csr}) begin
       uie = riscv_privil_reg::type_id::create("uie");
       uie.init_reg(UIE);
+      if (cfg.randomize_csr) begin
+        uie.set_val(cfg.uie);
+      end
       uie.set_field("UEIE", cfg.enable_interrupt);
       uie.set_field("USIE", cfg.enable_interrupt);
+      uie.set_field("UTIE", 1'b0);
       regs.push_back(uie);
     end
   endfunction
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_rand_instr.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_rand_instr.sv
index b43f5fe..ce65c37 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_rand_instr.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_rand_instr.sv
@@ -62,7 +62,7 @@
       instr_name != SFENCE_VMA;
     }
     if(cfg.no_fence) {
-      !(instr_name inside {FENCE, FENCEI, SFENCE_VMA});
+      !(instr_name inside {FENCE, FENCE_I, SFENCE_VMA});
     }
     // TODO: Support C_ADDI4SPN
     instr_name != C_ADDI4SPN;
@@ -76,6 +76,9 @@
     if(cfg.no_wfi) {
       instr_name != WFI;
     }
+    if(cfg.no_dret) {
+      instr_name != DRET;
+    }
     // Below previleged instruction is not generated by default
     !(instr_name inside {ECALL, URET, SRET, MRET});
     if(cfg.no_load_store) {
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_reg.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_reg.sv
index 63d6e09..ea17cb2 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_reg.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_reg.sv
@@ -153,7 +153,4 @@
     end
   endfunction
 
-  virtual function void set_wiri_wpri_fields();
-  endfunction
-
 endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_signature_pkg.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_signature_pkg.sv
index 45194d2..3a4c420 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_signature_pkg.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/src/riscv_signature_pkg.sv
@@ -42,7 +42,13 @@
     IN_SUPERVISOR_MODE,
     IN_USER_MODE,
     HANDLING_IRQ,
-    HANDLING_EXCEPTION
+    FINISHED_IRQ,
+    HANDLING_EXCEPTION,
+    INSTR_FAULT_EXCEPTION,
+    ILLEGAL_INSTR_EXCEPTION,
+    LOAD_FAULT_EXCEPTION,
+    STORE_FAULT_EXCEPTION,
+    EBREAK_EXCEPTION
   } core_status_t;
 
   typedef enum bit {
@@ -50,5 +56,4 @@
     TEST_FAIL
   } test_result_t;
 
-
 endpackage
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_base_test.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_base_test.sv
index f1d8186..0969437 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_base_test.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_base_test.sv
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 // Base test
 class riscv_instr_base_test extends uvm_test;
 
@@ -22,17 +23,21 @@
   string                  asm_file_name = "riscv_asm_test";
   riscv_asm_program_gen   asm_gen;
   string                  instr_seq;
+  int                     start_idx;
 
   `uvm_component_utils(riscv_instr_base_test)
 
   function new(string name="", uvm_component parent=null);
     super.new(name, parent);
     void'($value$plusargs("asm_file_name=%0s", asm_file_name));
+    void'($value$plusargs("start_idx=%0d", start_idx));
   endfunction
 
   virtual function void build_phase(uvm_phase phase);
     super.build_phase(phase);
+    `uvm_info(`gfn, "Create configuration instance", UVM_LOW)
     cfg = riscv_instr_gen_config::type_id::create("cfg");
+    `uvm_info(`gfn, "Create configuration instance...done", UVM_LOW)
     uvm_config_db#(riscv_instr_gen_config)::set(null, "*", "instr_cfg", cfg);
     if(cfg.asm_test_suffix != "")
       asm_file_name = {asm_file_name, ".", cfg.asm_test_suffix};
@@ -63,43 +68,22 @@
     super.report_phase(phase);
   endfunction
 
-  function void get_directed_instr_stream_opts();
-    string cmd_opts_prefix;
-    string opts;
-    string opt[$];
-    int i = 0;
-    while(1) begin
-      cmd_opts_prefix = $sformatf("directed_instr_%0d", i);
-      if($value$plusargs({cmd_opts_prefix, "=%0s"}, opts)) begin
-        uvm_split_string(opts, ",", opt);
-        `DV_CHECK_FATAL(opt.size() == 2)
-        asm_gen.add_directed_instr_stream(opt[0], opt[1].atoi());
-      end else begin
-        break;
-      end
-      `uvm_info(`gfn, $sformatf("Got directed instr[%0d] %0s, ratio = %0s/1000",
-                                 i, opt[0], opt[1]), UVM_LOW)
-      i++;
-    end
-
-  endfunction
-
   virtual function void apply_directed_instr();
   endfunction
 
   task run_phase(uvm_phase phase);
     int fd;
+    cfg.build_instruction_template();
     for(int i = 0; i < cfg.num_of_tests; i++) begin
       string test_name;
-      cfg = riscv_instr_gen_config::type_id::create("cfg");
       randomize_cfg();
+      cfg.build_instruction_list();
       asm_gen = riscv_asm_program_gen::type_id::create("asm_gen");
-      get_directed_instr_stream_opts();
       asm_gen.cfg = cfg;
-      test_name = $sformatf("%0s.%0d.S", asm_file_name, i);
+      asm_gen.get_directed_instr_stream();
+      test_name = $sformatf("%0s_%0d.S", asm_file_name, i+start_idx);
       apply_directed_instr();
       `uvm_info(`gfn, "All directed instruction is applied", UVM_LOW)
-      cfg.build_instruction_template();
       asm_gen.gen_program();
       asm_gen.gen_test_file(test_name);
     end
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_cov_debug_test.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_cov_debug_test.sv
new file mode 100644
index 0000000..edd2cc2
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_cov_debug_test.sv
@@ -0,0 +1,29 @@
+// This test is only used to debug covergroup implementation
+
+class riscv_instr_cov_debug_test extends uvm_test;
+
+  riscv_instr_gen_config    cfg;
+  riscv_instr_cover_group   instr_cg;
+  riscv_instr_cov_item      instr;
+  int unsigned              num_of_iterations = 10000;
+
+  `uvm_component_utils(riscv_instr_cov_debug_test)
+  `uvm_component_new
+
+  task run_phase(uvm_phase phase);
+    bit [XLEN-1:0] rand_val;
+    void'($value$plusargs("num_of_iterations=%0d", num_of_iterations));
+    cfg = riscv_instr_gen_config::type_id::create("cfg");
+    instr = riscv_instr_cov_item::type_id::create("instr");
+    instr_cg = new(cfg);
+    repeat(20000) begin
+      void'(instr.randomize() with {group == RV32I;
+                                    csr inside {implemented_csr};});
+      `uvm_info(`gfn, instr.convert2asm(), UVM_LOW)
+      instr.pre_sample();
+      instr_cg.sample(instr);
+    end
+    `uvm_info("", "TEST PASSED", UVM_NONE);
+  endtask
+
+endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_cov_test.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_cov_test.sv
new file mode 100644
index 0000000..0f77567
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_cov_test.sv
@@ -0,0 +1,231 @@
+// This test read all trace CSV, and collect functional coverage from the instruction trace
+class riscv_instr_cov_test extends uvm_test;
+
+  typedef uvm_enum_wrapper#(riscv_instr_name_t) instr_enum;
+  typedef uvm_enum_wrapper#(riscv_reg_t) gpr_enum;
+  typedef uvm_enum_wrapper#(privileged_reg_t) preg_enum;
+
+  riscv_instr_gen_config    cfg;
+  riscv_instr_cover_group   instr_cg;
+  riscv_instr_cov_item      instr;
+  string                    trace_csv[$];
+  string                    trace[string];
+  int unsigned              entry_cnt;
+  int unsigned              total_entry_cnt;
+  int unsigned              skipped_cnt;
+  int unsigned              illegal_instr_cnt;
+
+  `uvm_component_utils(riscv_instr_cov_test)
+  `uvm_component_new
+
+  task run_phase(uvm_phase phase);
+    int i;
+    string args;
+    string csv;
+    string line;
+    string header[$];
+    string entry[$];
+    int fd;
+    while(1) begin
+      args = {$sformatf("trace_csv_%0d", i), "=%s"};
+      if ($value$plusargs(args, csv)) begin
+        trace_csv.push_back(csv);
+      end else begin
+        break;
+      end
+      i++;
+    end
+    cfg = riscv_instr_gen_config::type_id::create("cfg");
+    cfg.build_instruction_template(.skip_instr_exclusion(1));
+    instr = riscv_instr_cov_item::type_id::create("instr");
+    instr.rand_mode(0);
+    instr.no_hint_illegal_instr_c.constraint_mode(0);
+    instr.imm_val_c.constraint_mode(0);
+    instr_cg = new(cfg);
+    `uvm_info(`gfn, $sformatf("%0d CSV trace files to be processed", trace_csv.size()), UVM_LOW)
+    foreach (trace_csv[i]) begin
+      entry_cnt = 0;
+      instr_cg.reset();
+      `uvm_info(`gfn, $sformatf("Processing CSV trace[%0d]: %s", i, trace_csv[i]), UVM_LOW)
+      fd = $fopen(trace_csv[i], "r");
+      if (fd) begin
+        // Get the header line
+        if ($fgets(line, fd)) begin
+          split_string(line, ",", header);
+          `uvm_info(`gfn, $sformatf("Header: %0s", line), UVM_HIGH);
+        end else begin
+          `uvm_info(`gfn, $sformatf("Skipping empty trace file: %0s", trace_csv[i]), UVM_LOW)
+          continue;
+        end
+        while ($fgets(line, fd)) begin
+          split_string(line, ",", entry);
+          if (entry.size() != header.size()) begin
+            `uvm_info(`gfn, $sformatf("Skipping malformed entry[%0d] : %0s", entry_cnt, line), UVM_LOW)
+            skipped_cnt += 1;
+          end else begin
+            trace["csv_entry"] = line;
+            foreach (header[j]) begin
+              trace[header[j]] = entry[j];
+            end
+            post_process_trace();
+            if (trace["instr"] inside {"li", "ret", "la"}) continue;
+            if (uvm_is_match("amo*",trace["instr"]) ||
+                uvm_is_match("lr*" ,trace["instr"]) ||
+                uvm_is_match("sc*" ,trace["instr"])) begin
+              // TODO: Enable functional coverage for AMO test
+              continue;
+            end
+            if (!sample()) begin
+             `uvm_info(`gfn, $sformatf("Skipping illegal instr name: %0s [%0s]",
+                             trace["instr"], line), UVM_LOW)
+            end
+          end
+          entry_cnt += 1;
+        end
+      end else begin
+        `uvm_error(`gfn, $sformatf("%0s cannot be openned", trace_csv[i]))
+      end
+      `uvm_info(`gfn, $sformatf("[%s] : %0d instructions processed",
+                      trace_csv[i], entry_cnt), UVM_LOW)
+      total_entry_cnt += entry_cnt;
+    end
+    `uvm_info(`gfn, $sformatf("Finished processing %0d trace CSV, %0d instructions",
+                     trace_csv.size(), total_entry_cnt), UVM_LOW)
+    if ((skipped_cnt > 0) || (illegal_instr_cnt > 0)) begin
+      `uvm_error(`gfn, $sformatf("%0d instructions skipped, %0d illegal instruction",
+                       skipped_cnt, illegal_instr_cnt))
+
+    end else begin
+      `uvm_info(`gfn, "TEST PASSED", UVM_NONE);
+    end
+  endtask
+
+  virtual function void post_process_trace();
+  endfunction
+
+  function bit sample();
+    riscv_instr_name_t instr_name;
+    if (instr_enum::from_name(process_instr_name(trace["instr"]), instr_name)) begin
+      if (cfg.instr_template.exists(instr_name)) begin
+        instr.copy_base_instr(cfg.instr_template[instr_name]);
+        assign_trace_info_to_instr(instr);
+        instr.pre_sample();
+        instr_cg.sample(instr);
+        return 1'b1;
+      end
+    end
+    illegal_instr_cnt++;
+    return 1'b0;
+  endfunction
+
+  virtual function void assign_trace_info_to_instr(riscv_instr_cov_item instr);
+    riscv_reg_t gpr;
+    privileged_reg_t preg;
+    get_val(trace["addr"], instr.pc);
+    get_val(trace["binary"], instr.binary);
+    instr.trace = trace["instr_str"];
+    if (instr.instr_name inside {ECALL, EBREAK, FENCE, FENCE_I, NOP,
+                                 C_NOP, WFI, MRET, C_EBREAK}) begin
+      return;
+    end
+    if (instr.has_rs2) begin
+      if (get_gpr(trace["rs2"], gpr)) begin
+        instr.rs2 = gpr;
+        get_val(trace["rs2_val"], instr.rs2_value);
+      end else begin
+        `uvm_error(`gfn, $sformatf("Unrecoganized rs2: [%0s] (%0s)",
+                                   trace["rs2"], trace["csv_entry"]))
+      end
+    end
+    if (instr.has_rd) begin
+      if (get_gpr(trace["rd"], gpr)) begin
+        instr.rd = gpr;
+        get_val(trace["rd_val"], instr.rd_value);
+      end else begin
+        `uvm_error(`gfn, $sformatf("Unrecoganized rd: [%0s] (%0s)",
+                                   trace["rd"], trace["csv_entry"]))
+      end
+    end
+    if (instr.has_rs1) begin
+      if (instr.format inside {CI_FORMAT, CR_FORMAT, CB_FORMAT}) begin
+        instr.rs1 = instr.rd;
+      end else begin
+        if (get_gpr(trace["rs1"], gpr)) begin
+          instr.rs1 = gpr;
+          get_val(trace["rs1_val"], instr.rs1_value);
+        end else begin
+          `uvm_error(`gfn, $sformatf("Unrecoganized rs1: [%0s] (%0s)",
+                                     trace["rs1"], trace["csv_entry"]))
+        end
+      end
+    end
+    if (instr.has_imm) begin
+      get_val(trace["imm"], instr.imm);
+    end
+    if (instr.category == CSR) begin
+      if (preg_enum::from_name(trace["csr"].toupper(), preg)) begin
+        instr.csr = preg;
+      end else begin
+        get_val(trace["csr"], instr.csr);
+      end
+    end
+    if (instr.category inside {LOAD, STORE}) begin
+      if (XLEN == 32) begin
+        instr.mem_addr = instr.rs1_value + instr.imm;
+      end else begin
+        bit [XLEN-32-1:0] padding;
+        if (instr.imm[31]) begin
+          padding = '1;
+        end else begin
+          padding = '0;
+        end
+        instr.mem_addr = instr.rs1_value + {padding, instr.imm};
+      end
+    end
+  endfunction
+
+  function bit get_gpr(input string str, output riscv_reg_t gpr);
+    str = str.toupper();
+    if (gpr_enum::from_name(str, gpr)) begin
+      return 1'b1;
+    end else begin
+      return 1'b0;
+    end
+  endfunction
+
+  function void get_val(input string str, output bit [XLEN-1:0] val);
+    val = str.atohex();
+  endfunction
+
+  function string process_instr_name(string instr_name);
+    instr_name = instr_name.toupper();
+    foreach (instr_name[i]) begin
+      if (instr_name[i] == ".") begin
+        instr_name[i] = "_";
+      end
+    end
+    return instr_name;
+  endfunction
+
+  function void split_string(string str, byte step, ref string result[$]);
+    string tmp_str;
+    int i;
+    bit in_quote;
+    result = {};
+    while (i < str.len()) begin
+      if (str[i] == "\"") begin
+        in_quote = ~in_quote;
+      end else if ((str[i] == step) && !in_quote) begin
+        result.push_back(tmp_str);
+        tmp_str = "";
+      end else begin
+        tmp_str = {tmp_str, str[i]};
+      end
+      if (i == str.len()-1) begin
+        result.push_back(tmp_str);
+      end
+      i++;
+    end
+  endfunction
+
+endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_gen_tb_top.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_gen_tb_top.sv
index b889d01..8d54d05 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_gen_tb_top.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_gen_tb_top.sv
@@ -16,8 +16,6 @@
 
 module riscv_instr_gen_tb_top;
 
-  `include "uvm_macros.svh"
-
   import uvm_pkg::*;
   import riscv_instr_test_pkg::*;
 
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_lib.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_lib.sv
index e4be2f4..4a3bee2 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_lib.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_lib.sv
@@ -23,8 +23,7 @@
   virtual function void randomize_cfg();
     cfg.instr_cnt = 10000;
     cfg.num_of_sub_program = 5;
-    `DV_CHECK_RANDOMIZE_WITH_FATAL(cfg,
-                                   max_nested_loop == 2;)
+    `DV_CHECK_RANDOMIZE_FATAL(cfg)
     `uvm_info(`gfn, $sformatf("riscv_instr_gen_config is randomized:\n%0s",
                     cfg.sprint()), UVM_LOW)
   endfunction
@@ -35,8 +34,8 @@
     asm_gen.add_directed_instr_stream("riscv_loop_instr", 4);
     asm_gen.add_directed_instr_stream("riscv_hazard_instr_stream", 4);
     asm_gen.add_directed_instr_stream("riscv_load_store_hazard_instr_stream", 4);
-    asm_gen.add_directed_instr_stream("riscv_cache_line_stress_instr_stream", 4);
     asm_gen.add_directed_instr_stream("riscv_multi_page_load_store_instr_stream", 4);
+    asm_gen.add_directed_instr_stream("riscv_mem_region_stress_test", 4);
   endfunction
 
 endclass
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_pkg.sv b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_pkg.sv
index a8a16a6..5e93bd0 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_pkg.sv
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/test/riscv_instr_test_pkg.sv
@@ -19,8 +19,9 @@
   import uvm_pkg::*;
   import riscv_instr_pkg::*;
 
-  `include "uvm_macros.svh"
   `include "riscv_instr_base_test.sv"
   `include "riscv_instr_test_lib.sv"
+  `include "riscv_instr_cov_debug_test.sv"
+  `include "riscv_instr_cov_test.sv"
 
 endpackage
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/user_extension/user_define.h b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/user_extension/user_define.h
new file mode 100644
index 0000000..e7e3557
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/user_extension/user_define.h
@@ -0,0 +1 @@
+# Add user macros, routines in this file
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/user_extension/user_extension.svh b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/user_extension/user_extension.svh
new file mode 100644
index 0000000..16fed2f
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/user_extension/user_extension.svh
@@ -0,0 +1 @@
+// Add your custom extensions, you can list all your local extended SV files here
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/cov_testlist.yaml b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/cov_testlist.yaml
new file mode 100644
index 0000000..b1ade51
--- /dev/null
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/cov_testlist.yaml
@@ -0,0 +1,18 @@
+- test: riscv_instr_cov_debug_test
+  description: >
+    Functional coverage debug test, this is not a functional test to the core.
+  iterations: 1
+  gen_test: riscv_instr_cov_debug_test
+  no_iss: 1
+  no_gcc: 1
+  no_post_compare: 1
+
+- test: riscv_instr_cov_test
+  description: >
+    Parse the instruction information from the CSV trace log, sample functional
+    coverage from the instruction trace.
+  iterations: 1
+  gen_test: riscv_instr_cov_test
+  no_iss: 1
+  no_gcc: 1
+  no_post_compare: 1
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/iss.yaml b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/iss.yaml
index 216cc6d..6856278 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/iss.yaml
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/iss.yaml
@@ -25,7 +25,7 @@
     --override riscvOVPsim/cpu/PMP_registers=0
     --override riscvOVPsim/cpu/simulateexceptions=T
     --trace --tracechange --traceshowicount --program <elf>
-    --finishafter 500000
+    --finishafter 1000000
 
 - iss: sail
   path_var: SAIL_RISCV
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/simulator.yaml b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/simulator.yaml
index f73eca2..b47cb81 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/simulator.yaml
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/simulator.yaml
@@ -13,39 +13,74 @@
 # limitations under the License.
 
 - tool: vcs
-  compile_cmd:
-    - "vcs -file <cwd>/vcs.compile.option.f
-           -f <cwd>/files.f -full64
-           -l <out>/compile.log
-           -Mdir=<out>/vcs_simv.csrc
-           -o <out>/vcs_simv <cmp_opts>"
-  sim_cmd: >
-    <out>/vcs_simv +vcs+lic+wait <sim_opts> +ntb_random_seed=<seed>
+  compile:
+    cmd:
+      - "vcs -file <cwd>/vcs.compile.option.f
+              +incdir+<setting>
+              +incdir+<user_extension>
+             -f <cwd>/files.f -full64
+             -l <out>/compile.log
+             -Mdir=<out>/vcs_simv.csrc
+             -o <out>/vcs_simv <cmp_opts> <cov_opts> "
+    cov_opts: >
+      -cm_dir <out>/test.vdb
+  sim:
+    cmd: >
+      <out>/vcs_simv +vcs+lic+wait <sim_opts> +ntb_random_seed=<seed> <cov_opts>
+    cov_opts: >
+      -cm_dir <out>/test.vdb -cm_log /dev/null -cm_name test_<seed>
 
 - tool: ius
-  compile_cmd:
-    - "irun -64bit -access +rwc -f <cwd>/files.f
-            -q -sv -uvm -vlog_ext +.vh -I.
-            -uvmhome CDNS-1.2
-            -elaborate
-            -l <out>/compile.log <cmp_opts>"
-  sim_cmd: >
-    irun -R <sim_opts> -svseed <seed>
+  compile:
+    cmd:
+      - "irun -64bit -access +rwc -f <cwd>/files.f
+              +incdir+<setting>
+              +incdir+<user_extension>
+              -q -sv -uvm -vlog_ext +.vh -I.
+              -uvmhome CDNS-1.2
+              -elaborate
+              -l <out>/compile.log <cmp_opts>"
+  sim:
+    cmd: >
+      irun -R <sim_opts> -svseed <seed>
 
 - tool: questa
-  compile_cmd:
-    - "vmap mtiUvm $QUESTA_HOME/questasim/uvm-1.2"
-    - "vlog -64
-      -access=rwc
-      -f <cwd>/files.f
-      -sv
-      -mfcu -cuname design_cuname
-      +define+UVM_REGEX_NO_DPI
-      -writetoplevels <out>/top.list
-      -l <out>/compile.log <cmp_opts>"
-    - "vopt -64 -debug
-      +designfile -f <out>/top.list
-      -l <out>/optimize.log <cmp_opts>
-      -o design_opt"
-  sim_cmd: >
-    vsim -64 -c -do <cwd>/questa_sim.tcl design_opt <sim_opts>  -sv_seed <seed>
+  compile:
+    cmd:
+      - "vmap mtiUvm $QUESTA_HOME/questasim/uvm-1.2"
+      - "vlog -64
+        +incdir+<setting>
+        +incdir+<user_extension>
+        -access=rwc
+        -f <cwd>/files.f
+        -sv
+        -mfcu -cuname design_cuname
+        +define+UVM_REGEX_NO_DPI
+        -writetoplevels <out>/top.list
+        -l <out>/compile.log <cmp_opts>"
+      - "vopt -64 -debug
+        +designfile -f <out>/top.list
+        -l <out>/optimize.log <cmp_opts>
+        -o design_opt"
+  sim:
+    cmd: >
+      vsim -64 -c -do <cwd>/questa_sim.tcl design_opt <sim_opts>  -sv_seed <seed>
+
+- tool: dsim
+  env_var: DSIM,DSIM_LIB_PATH
+  compile:
+    cmd:
+      - "mkdir -p <out>/dsim"
+      - "<DSIM> -sv -work <out>/dsim
+                -genimage image
+                +incdir+$UVM_HOME/src
+                $UVM_HOME/src/uvm_pkg.sv
+                +define+DSIM
+                +incdir+<setting>
+                +incdir+<user_extension>
+                -f <cwd>/files.f
+                -l <out>/dsim/compile.log <cmp_opts>"
+  sim:
+    cmd: >
+      <DSIM> <sim_opts> -sv_seed <seed> -pli_lib <DSIM_LIB_PATH>/libuvm_dpi.so +acc+rwb -image image -work <out>/dsim
+
diff --git a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/testlist.yaml b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/testlist.yaml
index 22ce918..dfbdd1d 100644
--- a/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/testlist.yaml
+++ b/hw/vendor/lowrisc_ibex/vendor/google_riscv-dv/yaml/testlist.yaml
@@ -76,8 +76,19 @@
     +directed_instr_1=riscv_loop_instr,4
     +directed_instr_2=riscv_hazard_instr_stream,4
     +directed_instr_3=riscv_load_store_hazard_instr_stream,4
-    +directed_instr_4=riscv_cache_line_stress_instr_stream,4
-    +directed_instr_5=riscv_multi_page_load_store_instr_stream,4
+    +directed_instr_4=riscv_multi_page_load_store_instr_stream,4
+    +directed_instr_5=riscv_mem_region_stress_test,4
+  rtl_test: core_base_test
+
+- test: riscv_loop_test
+  description: >
+    Random instruction stress test
+  iterations: 2
+  gen_test: riscv_instr_base_test
+  gen_opts: >
+    +instr_cnt=10000
+    +num_of_sub_program=5
+    +directed_instr_1=riscv_loop_instr,20
   rtl_test: core_base_test
 
 # TODO: Temporarily disable this as compiler seems to generate compressed instruction with rv64im
@@ -98,7 +109,7 @@
   iterations: 2
   gen_test: riscv_instr_base_test
   gen_opts: >
-    +instr_cnt=15000
+    +instr_cnt=10000
     +num_of_sub_program=20
     +directed_instr_0=riscv_load_store_rand_instr_stream,8
   rtl_test: core_base_test
@@ -114,15 +125,16 @@
     +num_of_sub_program=5
     +directed_instr_0=riscv_load_store_rand_instr_stream,40
     +directed_instr_1=riscv_load_store_hazard_instr_stream,40
-    +directed_instr_2=riscv_cache_line_stress_instr_stream,40
-    +directed_instr_3=riscv_multi_page_load_store_instr_stream,40
+    +directed_instr_2=riscv_multi_page_load_store_instr_stream,10
+    +directed_instr_3=riscv_mem_region_stress_test,10
   rtl_test: core_base_test
 
+# TODO: Re-enable this test after all the data/instruction page organization changes are done
 - test: riscv_page_table_exception_test
   description: >
     Test random page table exception handling. An exception handling routine is
     designed to fix the page table error and resume execution.
-  iterations: 2
+  iterations: 0
   gen_test: riscv_rand_instr_test
   gen_opts: >
     +enable_page_table_exception=1
@@ -156,7 +168,7 @@
   iterations: 2
   gen_test: riscv_rand_instr_test
   gen_opts: >
-    +enable_illegal_instruction=1
+    +illegal_instr_ratio=5
   rtl_test: core_base_test
 
 - test: riscv_hint_instr_test
@@ -166,7 +178,7 @@
   iterations: 2
   gen_test: riscv_rand_instr_test
   gen_opts: >
-    +enable_hint_instruction=1
+    +hint_instr_ratio=5
   rtl_test: core_base_test
 
 - test: riscv_ebreak_test
@@ -228,8 +240,8 @@
     +num_of_sub_program=5
     +directed_instr_0=riscv_load_store_rand_instr_stream,20
     +directed_instr_1=riscv_load_store_hazard_instr_stream,20
-    +directed_instr_2=riscv_cache_line_stress_instr_stream,20
-    +directed_instr_3=riscv_multi_page_load_store_instr_stream,20
+    +directed_instr_2=riscv_multi_page_load_store_instr_stream,5
+    +directed_instr_3=riscv_mem_region_stress_test,5
     +enable_unaligned_load_store=1
   rtl_test: core_ibex_base_test