From dbd15f4498e2db42bbde38b00d27a9420c5f15a0 Mon Sep 17 00:00:00 2001 From: WangXuan95 <629708558@qq.com> Date: Fri, 25 Feb 2022 12:00:41 +0800 Subject: [PATCH] update RISC-V CPU example --- README.md | 630 ++- readme_image/0.bluespec.png | Bin 0 -> 53231 bytes readme_image/18.rv32i_pipe.png | Bin 0 -> 128863 bytes readme_image/9.bit_coding.png | Bin 42478 -> 51820 bytes src/JpegEncoder/JpegEncoder.bsv | 40 +- src/JpegEncoder/TbJpegEncoder.bsv | 50 + src/Rv32iCPU/DFIFOF1.bsv | 28 + src/Rv32iCPU/Rv32iCPU.bsv | 419 +- src/Rv32iCPU/TbRv32iCPU.bsv | 88 + src/Rv32iCPU/benchmark/no_data.txt | 0 .../qsort_assembly.S} | 0 .../qsort_instruction.txt} | 1 + .../testA_assembly.txt} | 11 - .../testA_instruction.txt} | 3 - src/Rv32iCPU/benchmark/testB_assembly.txt | 3285 ++++++++++++++ src/Rv32iCPU/benchmark/testB_data.txt | 3825 +++++++++++++++++ src/Rv32iCPU/benchmark/testB_instruction.txt | 2721 ++++++++++++ src/Rv32iCPU/benchmark/testC_assembly.txt | 3538 +++++++++++++++ src/Rv32iCPU/benchmark/testC_instruction.txt | 2908 +++++++++++++ src/SPIFlash/SPIFlashController.bsv | 43 - src/SPIFlash/TbSPIFlashController.bsv | 52 + 21 files changed, 17102 insertions(+), 540 deletions(-) create mode 100644 readme_image/0.bluespec.png create mode 100644 readme_image/18.rv32i_pipe.png create mode 100644 src/JpegEncoder/TbJpegEncoder.bsv create mode 100644 src/Rv32iCPU/DFIFOF1.bsv create mode 100644 src/Rv32iCPU/TbRv32iCPU.bsv create mode 100644 src/Rv32iCPU/benchmark/no_data.txt rename src/Rv32iCPU/{instruction_stream/assembly_quicksort.S => benchmark/qsort_assembly.S} (100%) rename src/Rv32iCPU/{instruction_stream/instruction_stream_quicksort.txt => benchmark/qsort_instruction.txt} (89%) rename src/Rv32iCPU/{instruction_stream/assembly_testA.txt => benchmark/testA_assembly.txt} (99%) rename src/Rv32iCPU/{instruction_stream/instruction_stream_testA.txt => benchmark/testA_instruction.txt} (99%) create mode 100644 src/Rv32iCPU/benchmark/testB_assembly.txt create mode 100644 src/Rv32iCPU/benchmark/testB_data.txt create mode 100644 src/Rv32iCPU/benchmark/testB_instruction.txt create mode 100644 src/Rv32iCPU/benchmark/testC_assembly.txt create mode 100644 src/Rv32iCPU/benchmark/testC_instruction.txt create mode 100644 src/SPIFlash/TbSPIFlashController.bsv diff --git a/README.md b/README.md index 9ea8380..3b9f127 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,14 @@ BSV 中文教程 =========================== 欢迎 :hand: 这里(可能)是首个中文 Bluespec SystemVerilog (BSV) 教程。 -# 1 前言 +![图1](./readme_image/0.bluespec.png) + +同步更新至: + +- GitHub : https://github.com/WangXuan95/BSV_Tutorial_cn +- Gitee : https://gitee.com/wangxuan95/BSV_Tutorial_cn + +# 1 前言 ## 1.1 为什么要 BSV?Verilog 不好用? BSV 是一门高级硬件描述语言(**H**igh-**L**evel **H**ardware **D**escription **L**anguage, **HL-HDL**),与 Verilog 一样,被用于 FPGA 或 ASIC 的前端设计和验证。BSV 于 2003 年被 Bluespec :tm: 开发,期间一直作为商业收费 :moneybag: 工具而存在,到 2020 年它的编译器才开源,这才给了我们接触它的机会。 @@ -12,12 +19,12 @@ Verilog 的语法简单、特性少,却能全面且精准的描述绝大多数 > :pushpin: 在笔者看来 BSV 并不能替代 Verilog ——至少现在不能。同样,HLS、SpinalHDL、Chisel 也无法撼动 Verilog 的地位。这就像各种高级语言也没有替代 C 语言一样。一些说法把 Verilog/VHDL 在数字逻辑设计中的地位,比作汇编语言在程序设计中的地位,笔者认为该说法具有误导性。Verilog/VHDL 所在的抽象层次恰到好处,且是通用(跨平台)的——支持各厂家的FPGA和ASIC,因此成为了数字逻辑设计的主流语言,这与 C 语言的理念类似,应当比作 C 语言。 > -## 1.2 关于本教程 +## 1.2 关于本教程 在开始前,读者要有如下基础: - 熟悉 Verilog/VHDL ,熟悉数字电路设计,比如状态机、流水线、握手信号、串并转换、单口RAM、双口RAM等知识。 -- 起码要知道软件编程语言中的基本概念:包括类型、分支、循环、数组、函数。 +- 起码要知道软件编程语言中的基本概念:数据类型、分支、循环、数组、函数。 另外,如果有以下知识,学起来会更轻松: @@ -26,26 +33,26 @@ Verilog 的语法简单、特性少,却能全面且精准的描述绝大多数 本教程参考了 《BSV by example》 [1] 这篇很棒的官方教程。但也有很大不同: -* 本教程不是翻译自 [1] 的,符合中文语法习惯,直译原文则会很生硬。 * 本教程基于开源的 BSV 编译器 bsc,会带读者在命令行中使用编译器。 +* 本教程不是直译自 [1],而是根据其大纲而重构的,符合中文语法习惯,直译原文则会很生硬。 * 本教程根据自己的理解,对 [1] 的内容进行删减和重排序。 * 本教程会讲述一些 [1] 中没有讲,但也很实用的内容,它们来自于内容更全的 BSV 参考指南 [2] 。 -* 本教程的配套代码都是原创,还展示了3个大型项目—— SPIFlash 读写器、RISC-V 流水线 CPU、JPEG 图像压缩器。 +* 本教程在讲解中配套了很多有实际意义的代码,还展示了3个大型项目:SPIFlash读写器、RISC-V流水线CPU、JPEG图像压缩器。 * 作为实用教程,笔者将讲述 BSV 生成的 Verilog 模块的特性,指导读者把它嵌入 Verilog 项目中。 笔者也是 BSV 初学者,完全凭借对数字逻辑设计的热爱~~用爱发电~~编写了本教程。出现不准确的表述也在所难免,可以提 issue 让笔者改进。 -## 1.3 参考资料 +## 1.3 参考资料 [1] R. Nikhil and K. Czeck. BSV by Example: The next-generation language for electronic system design. Bluespec, Inc. 2010. http://csg.csail.mit.edu/6.S078/6_S078_2012_www/resources/bsv_by_example.pdf. [2] Bluespec SystemVerilog Reference Guide. Bluespec, Inc. 2017. https://web.ece.ucsb.edu/its/bluespec/doc/BSV/reference-guide.pdf. -- 是 BSV 最全的官方资料,阅读完本教程后,可作为查阅文档。 +- [2] 是内容最全 BSV 的官方资料,可作为查阅文档。 -## 1.4 目录 :page_with_curl: +## 目录 :page_with_curl: - [2 BSV概览](#head6) - [2.1 BSV vs. Verilog](#head7) @@ -74,7 +81,6 @@ Verilog 的语法简单、特性少,却能全面且精准的描述绝大多数 - [5.8 Maybe 类型](#head46) - [6 时序逻辑电路](#head47) - [6.1 寄存器 Reg](#head48) - - [e.g. 开平方计算流水线 v1](#head51) - [6.2 读写顺序与调度注解](#head52) - [6.3 线网 Wire](#head53) - [6.4 规则 rule](#head59) @@ -83,7 +89,10 @@ Verilog 的语法简单、特性少,却能全面且精准的描述绝大多数 - [7 模块与接口](#head76) - [7.1 模块层次结构](#head77) - [7.2 值方法与动作方法](#head80) + - [e.g. 比特编码器 v1](#head83) - [7.3 方法的隐式条件](#head84) + - [e.g. 比特编码器 v2](#head86) + - [e.g. 比特编码器 v3](#head88) - [7.4 动作值方法](#head89) - [e.g. 比特编码器 v4](#head90) - [7.5 方法实现的简写](#head91) @@ -98,7 +107,6 @@ Verilog 的语法简单、特性少,却能全面且精准的描述绝大多数 - [8 存储与队列](#head100) - [8.1 BRAMCore](#head101) - [8.2 BRAM](#head106) - - [e.g. 矩阵转置](#head113) - [8.3 队列 FIFO 概览](#head114) - [8.4 常规 FIFO](#head115) - [e.g. 开平方计算流水线 v2](#head118) @@ -121,6 +129,8 @@ Verilog 的语法简单、特性少,却能全面且精准的描述绝大多数 - [10.1 多态中的基本概念](#head143) - [10.2 多态函数举例](#head148) - [10.3 多态模块举例](#head149) + - [e.g. 自定义更多的寄存器](#head150) + - [e.g. 自定义双缓冲模块](#head151) - [11 状态机 StmtFSM](#head152) - [11.1 基本的构建和使用方法](#head153) - [11.2 执行结构](#head156) @@ -163,31 +173,31 @@ reg [7:0] rdata = 0; assign rdy = (cnt==0) ? 1 : 0; always @ (posedge clk or negedge rstn) - if(!rstn) begin - {ss, sck, mosi} <= 3’b111; - end else begin - if(cnt==0) begin - if(en) begin - rdata <= data; - cnt <= 1; - end - end else if(cnt==1) begin - ss <= 1’b0; // ss 拉低 - cnt <= cnt + 1; - end else if(cnt<=17) begin - sck <= cnt[0]; // cnt 为偶数时,令 sck=0,cnt 为奇数时,令 sck=1。 - mosi <= rdata[8-(cnt/2)]; // 在 mosi 上产生串行输出 - cnt <= cnt + 1; - end else if(cnt==18) begin - mosi <= 1’b1; - cnt <= cnt + 1; - end else if(cnt==19) begin - ss <= 1’b1; // ss 拉高 - cnt <= cnt + 1; - end else begin - cnt <= 0; - end - end + if(!rstn) begin + {ss, sck, mosi} <= 3’b111; + end else begin + if(cnt==0) begin + if(en) begin + rdata <= data; + cnt <= 1; + end + end else if(cnt==1) begin + ss <= 1’b0; // ss 拉低 + cnt <= cnt + 1; + end else if(cnt<=17) begin + sck <= cnt[0]; // cnt 为偶数时,令 sck=0,cnt 为奇数时,令 sck=1。 + mosi <= rdata[8-(cnt/2)]; // 在 mosi 上产生串行输出 + cnt <= cnt + 1; + end else if(cnt==18) begin + mosi <= 1’b1; + cnt <= cnt + 1; + end else if(cnt==19) begin + ss <= 1’b1; // ss 拉高 + cnt <= cnt + 1; + end else begin + cnt <= 0; + end + end ``` 以上 Verilog 代码已经是一个很简短的实现了,但可读性很差,难于修改,如果我们想在 `ss` 拉低之前再插入一个时钟周期干其它的事情,则后面的所有状态转移以及 `2≤cnt≤17` 时的奇偶判断都得改,容易改出 bug。 @@ -198,21 +208,21 @@ always @ (posedge clk or negedge rstn) // Verilog SPI 发送(testbench 写法,不可综合!!) reg signed [31:0] cnt = 7; // cnt 初始值为 7 initial begin - {ss, sck, mosi} <= 3’b111; - @(posedge clk) // 等到下一个时钟上升沿 - ss <= 1’b0; // ss 拉低 - while(cnt>=0) begin // while 循环,cnt 从 7 递减到 0,共8次 - @(posedge clk) begin // 等到下一个时钟上升沿 - sck <= 1’b0; // sck 拉低 - mosi <= wdata[cnt]; // mosi 依次产生串行 bit - end - @(posedge clk) begin // 等到下一个时钟上升沿 - sck <= 1’b1; // sck 拉高 - cnt = cnt - 1; // cnt 每次循环都递减 - end - end - @(posedge clk) mosi <= 1’b1; // mosi 拉高 - @(posedge clk) ss <= 1’b1; // ss 拉高,发送结束 + {ss, sck, mosi} <= 3’b111; + @(posedge clk) // 等到下一个时钟上升沿 + ss <= 1’b0; // ss 拉低 + while(cnt>=0) begin // while 循环,cnt 从 7 递减到 0,共8次 + @(posedge clk) begin // 等到下一个时钟上升沿 + sck <= 1’b0; // sck 拉低 + mosi <= wdata[cnt]; // mosi 依次产生串行 bit + end + @(posedge clk) begin // 等到下一个时钟上升沿 + sck <= 1’b1; // sck 拉高 + cnt = cnt - 1; // cnt 每次循环都递减 + end + end + @(posedge clk) mosi <= 1’b1; // mosi 拉高 + @(posedge clk) ss <= 1’b1; // ss 拉高,发送结束 end ``` @@ -261,17 +271,17 @@ endmodule 最后,你还会注意到这个 BSV 代码中看不出模块输入输出信号的定义。因为 BSV 将它们封装成了**方法** (method)。以上述代码中的方法`method Action write` 为例,当外部需要启动 SPI 发送时就调用此方法。参数 `Bit#(8) data` 是待发送的字节,会映射为 Verilog 中的一个 8 位的输入信号,而握手信号 en 和 rdy 会自动生成(如下 :point_down: )。当 `spiFsm` 状态机正忙(即正在发送SPI时)时,对 `method Action write` 的调用将无法生效;用 Verilog 的思维来讲:此时 `rdy=0`,即使 `en=1` 也无法发送数据。 -```verilog +```bsv // 用 BSV 编译器把 BSV 模块转化为 Verilog 后的接口定义 module mkSPIWriter( // 这些注释是笔者加上的 - input CLK, // 自动生成的时钟 - input RST_N, // 自动生成的复位 + input CLK, // 自动生成的时钟 + input RST_N, // 自动生成的复位 // 由 method Action write(Bit#(8) data) 生成的信号 input [7:0] write_data, // 对应波形图1中的 data 信号 - input EN_write, // 对应波形图1中的 en 信号(是自动生成的握手信号) - output RDY_write, // 对应波形图1中的 rdy 信号(是自动生成的握手信号) + input EN_write, // 对应波形图1中的 en 信号(是自动生成的握手信号) + output RDY_write, // 对应波形图1中的 rdy 信号(是自动生成的握手信号) // 由 method Bit#(3) spi 生成的信号 - output [2:0] spi, // 3bit 分别对应 ss,sck,mosi 信号 + output [2:0] spi, // 3bit 分别对应 ss,sck,mosi 信号 ); ``` @@ -323,8 +333,9 @@ Chisel 和 SpinalHDL 也可以归类为高级硬件描述语言(HL-HDL)。 * Linux 实体机 :computer: * Linux 虚拟机 * Windows10 bash (**W**indows **S**ubsystem of **L**inux, **WSL**),强烈推荐 :raised_hands: !!WSL 的开启方法可以参考: -* Install WSL:https://docs.microsoft.com/en-us/windows/wsl/install -* win10开启wsl,让我们愉快的使用Linux:https://zhuanlan.zhihu.com/p/384026893 + * Install WSL:https://docs.microsoft.com/en-us/windows/wsl/install + * win10开启wsl,让我们愉快的使用Linux:https://zhuanlan.zhihu.com/p/384026893 + > :point_right: 提示:开启 WSL 后,在 Windows 的某个目录(文件夹)下打开 WSL 命令行的方式是:在”文件资源管理器“空白处摁住shift+右键 → ”在此处打开 PowerShell 窗口“ → 在 PowerShell 中输入 wsl + 回车 → 即可进入 Linux 环境。 @@ -601,7 +612,7 @@ endmodule module mkTb (); // 模块名 mkTb ,调用者 DecCounter counter <- mkDecCounter; // 例化一个 mkDecCounter,并拿到它的接口,叫做 counter - + // counter.count ... // 通过接口名 counter 来调用子模块,比如调用 count 方法 endmodule ``` @@ -810,7 +821,7 @@ bit a = 'b1; // 等效于 Bit#(1) a = 'b1 `Bit#(8)` 类似 Verilog 中的 `wire [7:0]` ,不同之处在于:Verilog 的位宽检查很宽松,允许隐式的高位截断和扩展(虽然会报编译时 Warning),而 Verilog 的显式的截断和扩展写起来很不优雅: -```verilog +```bsv // 这是 Verilog !! 不是 BSV !! wire [ 6:0] t1 = 7'h12; wire [11:0] t2 = t1; // 隐式零扩展,会报编译时 Warning @@ -831,7 +842,7 @@ Bit#(4) t5 = truncate(t1); // 显式截断,自动根据左值(4位)判 > :pushpin: 后续我们会学到 Bit#(n) 是一个多态类型(泛型),而 Bit#(7) 和 Bit#(4) 完全不是一种数据类型,这也解释了为什么 BSV 必须进行显式截断和扩展。 -用常数对 `Bit#(n)` 类型的变量进行赋值时,和 Verilog 类似,可以用二进制、十进制或十六进制表示常数,举例如下 :point_down: +用常数对 `Bit#(n)` 类型的变量进行赋值时,和 Verilog 类似,可以用二进制、十进制或十六进制表示常数,举例如下 :point_down: ```bsv Bit#(7) t1 = 7'b0010111; // 二进制,位宽匹配 @@ -939,7 +950,7 @@ module mkTb(); Int#(8) i1 = unpack(pack(u1)); //把u1转换成有符号数i1,会得到十进制的 -5 $display("%d", u1 > 2); //无符号比较,打印 1,显然 250 > 2 成立 $display("%d", i1 > 2); //有符号比较,打印 0,显然 -5 > 2 不成立 - + UInt#(16) u2 = extend(u1); //u1零扩展 Int#(16) i2 = extend(i1); //i1符号扩展 $display("u2=%x", u2); //打印 u2=00fa, 因为 fa 零扩展得到 00fa @@ -955,7 +966,7 @@ endmodule `Bool` 类型只有两种取值:`True` 和 `False` 。 -虽然 `Bool` 底层是用 1 比特实现的,但 `Bool` 类型与 `bit` 类型不能混淆,它们之间可以用 `pack` 和 `unpack` 互相转化。 +虽然 `Bool` 底层是用 1 比特实现的,但 `Bool` 类型与 `bit` 类型不能混淆,它们之间可以用 `pack` 和 `unpack` 互相转化。 ```bsv Bool b1 = True; @@ -1067,7 +1078,7 @@ $display("a=%d b=%3d c=%08x d=%x e=%b", a, b, c, d, e ); ### 变量定义 -变量定义的格式是: +变量定义的格式是: ``` 类型名 变量名; @@ -1099,10 +1110,10 @@ BSV 有两种赋值符号: - 值赋值 (`=`) :左边的变量(左值)被绑定到右边的值(右值),成为右值的一个副本。 - 副作用赋值 (`<-`) :右值会引起副作用,包括实例化了一个硬件实体、或引起了硬件状态(寄存器、触发器)的变化。例如: + - 实例化了一个模块并用 `<-` 获得其接口; -- 实例化了一个模块并用 `<-` 获得其接口; + - 调用一个动作值方法 (ActionValue method) 并用 `<-` 获得其返回值(后续7.4节会细讲)。 -- 调用一个动作值方法 (ActionValue method) 并用 `<-` 获得其返回值(后续7.4节会细讲)。 在 5.2 节的各种例子里,我们一直用的是值赋值 (`=`) ,因为它仅仅是把表达式的值赋给了左值,没有实例化硬件实体,也没有引起硬件状态变化。 @@ -1112,10 +1123,10 @@ BSV 有两种赋值符号: module mkTb(); Reg#(int) ra <- mkReg(0); // 1. 定义一个 Reg#(int) 类型的接口变量 ra 。 // mkReg(0) 实例化一个初值=0的寄存器,ra 拿到了该寄存器的接口 - + Reg#(int) rb = ra; // 2. 定义一个 Reg#(int) 类型的接口变量 rb 。 // 并没有实例化寄存器,而是让 rb 成为 ra 的别名 - + Reg#(int) rc <- mkReg(0); // 3. 定义一个 Reg#(int) 类型的接口变量 rc 。 // mkReg(0) 实例化一个初值=0的寄存器,rc 拿到了该寄存器的接口 @@ -1185,7 +1196,7 @@ module mkTb (); let sub <- mkSub; // 可以用 let // mkSub 一定会获得 Sub 类的接口,无歧义 // 等效于 Sub sub <- mkSub; - + // let ra <- mkReg(0); // 不能用 let !!! // 不知道 mkReg 会获得 Reg#(int) 还是 Reg#(bit) 还是 Reg#(UInt#(8)) 之类的接口 // 这里要用完整类型名,比如 Reg#(bit) <- mkReg(0); @@ -1336,14 +1347,14 @@ module mkTb (); function Bit#(6) binary2gray(Bit#(6) value); // 输入参数:Bit#(6) ,返回 Bit#(6) return (value >> 1) ^ value; endfunction - + // 函数:把格雷码转化为二进制编码 function Bit#(6) gray2binary(Bit#(6) value); // 输入参数:Bit#(6) ,返回 Bit#(6) for(int i=4; i>=0; i=i-1) value[i] = value[i] ^ value[i+1]; return value; endfunction - + //... ``` @@ -1376,7 +1387,7 @@ import GrayCode_v5::*; ## 5.7 元组 Tuple -元组相关的代码见 `src/5.TupleTest/TupleTest.bsv` +元组相关的代码见 `src/5.TupleTest/TupleTest.bsv` 元组是把多个类型的变量放在一起的复合数据类型, BSV 预定义了二元组、三元组、四元组、……、八元组。 @@ -1446,12 +1457,13 @@ Maybe#(Int#(9)) value2 = tagged Valid 42; // 有效,取值为 42 BSV 针对 `Maybe#(td)` 类型提供了两个函数: - `isValid(x)` : 接受 `Maybe#(td)` 类型的变量 `x` 作为参数: -- `x` 无效则返回 False -- `x` 有效则返回 True + - `x` 无效则返回 False + - `x` 有效则返回 True - `fromMaybe(dv, x)` : 接受 `td` 类型的变量 `dv` 和 `Maybe#(td)` 类型的变量 `x` 作为参数: -- `x` 无效则返回 `dv` -- `x` 有效则返回 `x` 中的取值。 + - `x` 无效则返回 `dv` + - `x` 有效则返回 `x` 中的取值。 + 使用例: @@ -1475,7 +1487,7 @@ let d2 = fromMaybe(-99, value2); // 得到 d2 是 Int#(9) 类型的 42 寄存器是一类用于保存数据(或者叫保存电路状态)的模块。本节涉及: -- 接口`Reg#()` 以及其配套的模块 `mkReg` 、 `mkRegU` 、 `mkDReg` +- 接口`Reg#()` 以及其配套的模块 `mkReg` 、 `mkRegU` 、 `mkDReg` ### mkReg 和 mkRegU @@ -1512,12 +1524,12 @@ module mkReg#(td v) (Reg#(td)) // 第一个括号里是模块参数,是一个 ```bsv module mkTb (); Reg#(int) x <- mkReg(23); - + rule up_counter; // rule 每时钟周期都会执行一次 x._write( x._read + 1 ); // 寄存器的x的值先读出来,+1后再写回去 $display ("x=%d", x._read ); endrule - + rule done (x >= 26); // 只有满足条件 x >= 26 的时钟周期才会执行退出 $finish; endrule @@ -1562,7 +1574,7 @@ module mkTb (); cnt <= cnt + 1; if(cnt > 9) $finish; endrule - + Reg#(int) reg1 <- mkReg(99); // reg1 初值 = 99 Reg#(int) reg2 <- mkDReg(99); // reg2 默认值 = 99 @@ -1603,10 +1615,10 @@ cnt=10 reg1=-9 reg2=-9 ```python # Python 实现整数开方 -#实现的效果: y = sqrt(x) +# 效果: y = sqrt(x) x = 114514 # 输入数据 y = 0 # 待计算的开方结果 -for n in range(15, -1, -1): # 迭代 16 次,迭代变量 n=15,14,13,...,2,1,0 +for n in range(15, -1, -1): # 迭代 16 次,迭代变量 n=15,14,13,...,2,1,0 t = (y<<1<= t: # 迭代体 x -= t # 迭代体 @@ -1843,7 +1855,7 @@ endinterface 以下语句实例化一个 `mkDWire` ,其中的数据类型是 `int`,指定它的默认值是 `42` : -```bsv +``` Wire#(int) <- mkDWire(42); ``` @@ -1862,7 +1874,7 @@ module mkTb (); Wire#(int) w1 <- mkDWire(99); // w1 默认值 = 99 Reg#(int) r1 <- mkReg(99); // r1 初始值 = 99 - + rule test1 (cnt%2 == 0); // rule条件:只在能整除2的周期激活 w1 <= cnt; endrule @@ -1927,7 +1939,7 @@ module mkTb (); Wire#(int) w1 <- mkWire; Wire#(int) w2 <- mkWire; - + rule test1 (cnt%2 == 0); // rule条件:只在能整除2的周期激活 $display("cnt=%1d test1", cnt); w1 <= cnt; @@ -2039,7 +2051,7 @@ module mkTb (); RWire#(int) w1 <- mkRWire; // w1 是个 RWire PulseWire w2 <- mkPulseWire; // w2 是个 PulseWire - + rule test1 (cnt%2 == 0); // rule条件:只在能整除2的周期激活 w1.wset(cnt); endrule @@ -2253,7 +2265,7 @@ r1 endrule ``` -编译器会分析以上代码: +编译器会分析以上代码: - 如果把 `x2y` 排在 `y2x` 前面,则不能满足 y.\_read **SB** y.\_write - 如果把 `y2x` 排在 `x2y` 前面,则不能满足 x.\_read **SB** x.\_write @@ -2378,7 +2390,7 @@ module mkTb (); Reg#(int) y <- mkReg(2); (* descending_urgency = "y2x, x2y" *) - rule x2y; + rule x2y; y <= x + 1; // 读 x,写 y endrule rule y2x (cnt<3); // 显式条件 cnt<3 @@ -2392,7 +2404,7 @@ endmodule 编译时,不再报任何 Warning ,因为 `y2x` 只在 `cnt<3` 时激活,而 `x2y` 会在 `y2x` 不激活时激活。 -仿真打印如下 ,显然,在 `cnt<3` 时,执行的是 `x<=y+1;` ,在 `cnt>=3` 时,执行的是 `y<=x+1;` +仿真打印如下 ,显然,在 `cnt<3` 时,执行的是 `x<=y+1;` ,在 `cnt>=3` 时,执行的是 `y<=x+1;` ``` cnt=0 x=1 y=2 @@ -2425,7 +2437,7 @@ module mkTb (); (* descending_urgency = "y2x, x2y" *) - rule x2y; + rule x2y; y <= x + 1; // 读 x,写 y endrule rule y2x; @@ -2477,10 +2489,10 @@ cnt=6 x=4 y=5 // 代码路径:src/9.RuleUrgency/Test4.bsv (部分) (* descending_urgency = "y2x, x2y" *) - rule x2y; + rule x2y; y <= x + 1; // 读 x,写 y endrule - + rule y2x; if(cnt < 3) // if 语句 cnt<3 x <= y + 1; // 读 y,写 x @@ -2520,7 +2532,7 @@ Warning: "Test5.bsv", line 16, column 9: (G0021) // 代码路径:src/10.RuleNoConflict/MutuallyExclusive.bsv (部分) Reg#(Bit#(32)) cnt <- mkReg(1); // cnt 初始值 = 'b0001 rule shift_counter; - cnt <= cnt << 1; // cnt 每周期左移1 ,这样 cnt 的变化规律是 'b0001 -> 'b0010 -> 'b0100 + cnt <= cnt << 1; // cnt 每周期左移1 ,这样 cnt 的变化规律是 'b0001 -> 'b0010 -> 'b0100 if(cnt > 10) $finish; endrule @@ -2600,7 +2612,7 @@ Warning: "MutuallyExclusive.bsv", line 3, column 8: (G0010) 以上代码中,规则 `test1` 和 `test2` 在每周期都激活,但因为 if 语句的条件互斥,它们中会引起**排序冲突**的语句不会同时执行。假设我们希望的结果是: -- `cnt<3` 时能执行 `x<=x+1;` , `cnt>3` 时能执行 `x<=x-1;` +- `cnt<3` 时能执行 `x<=x+1;` , `cnt>3` 时能执行 `x<=x-1;` - 所有周期都能执行 `y<=y+1;` - 所有周期都能执行 `z<=z+2;` @@ -2724,7 +2736,7 @@ x=2 y=6 z=12 ```bsv (* preempts = "(r1, r2), r3" *) -// 等效于 (* preempts = "r1, r3" *) +// 等效于 (* preempts = "r1, r3" *) // (* preempts = "r2, r3" *) ``` @@ -2926,7 +2938,7 @@ module mkTb (); cnt <= cnt + 1; if(cnt > 32) $finish; endrule - + Reg#(int) creg [3] <- mkCReg(3, 0); rule rule_test5 (cnt%5 == 0); // 每5周期执行一次 @@ -2947,7 +2959,7 @@ module mkTb (); endmodule ``` -仿真打印如下 :point_down: +仿真打印如下 :point_down: ``` cnt=23 creg= 0 @@ -2965,14 +2977,14 @@ cnt=33 creg=10 可以看到,在 `cnt=24` 的周期,`creg` 增加了 `2` (下一周期才能读到),这是因为 `rule_test3` 和 `rule_test2` 都执行了,相当于该周期执行了两次 `+1`: -```bsv +``` creg[1] <= creg[1] + 1; creg[2] <= creg[2] + 1; ``` 同理,在 `cnt=30` 的周期,`creg` 增加了 `3`,因为相当于执行了三次 `+1` : -```bsv +``` creg[0] <= creg[0] + 1; creg[1] <= creg[1] + 1; creg[2] <= creg[2] + 1; @@ -2980,7 +2992,7 @@ creg[2] <= creg[2] + 1; :pushpin: 注意:因为 `$display("cnt=%2d creg0=%2d", cnt, creg[0]);` 打印的是 `creg[0]` ,所以只能读到上周期得到的最终值。如果想读到 `creg` 本周期更新后的最新值,可以再多加一个接口: -```bsv +``` Reg#(int) creg [4] <- mkCReg(4, 0); ``` @@ -2995,7 +3007,7 @@ module mkTb (); cnt <= cnt + 1; if(cnt > 32) $finish; endrule - + Reg#(int) creg [4] <- mkCReg(4, 0); // 修改!!:新增一个接口 rule rule_test5 (cnt%5 == 0); // 每5周期执行一次 @@ -3052,7 +3064,7 @@ cnt=33 creg=11 - `mkM1` 被实例化了2次,一次是在 `mkM3` 种,一次是在 `mkM2` 中。 - 尽管 `mkM3` 的接口是 Empty ,但它仍然能被 `mkTop` 实例化。 -- 顶层模块名是 `mkTop` ,但是没有任何模块调用它。当进行仿真时,用命令 `bsvbuild.sh -bs mkTop mkTop.bsv` 相当于指定了 `mkTop` 作为顶层模块,那么它在仿真中的实例名就是默认的 `Top` +- 顶层模块名是 `mkTop` ,但是没有任何模块调用它。当进行仿真时,用命令 `bsvbuild.sh -bs mkTop mkTop.bsv` 相当于指定了 `mkTop` 作为顶层模块,那么它在仿真中的实例名就是默认的 `Top` | ![图6](./readme_image/6.module_hierarchy.png) | | :-----------------------------------------: | @@ -3191,10 +3203,12 @@ endmethod - **输入码**:每周期可输入 8bit 数据 din ,或者也可以选择不输入(空闲)。 - 计算**长度码**:寻找 din 左起第一个 =1 的 bit ,用该 bit 所在的下标作为长度码 len。存在一种特例: -- 当 din=8'h0 时,len=3'd0 + - 当 din=8'h0 时,len=3'd0 + - 计算**数据码**:取输入数据的低 len 个 bit 作为数据码 trim 。存在两种特例: -- 当 din=8'h0 时,trim=1'b0 -- 当 din=8'h1 时,trim=1'b1 + - 当 din=8'h0 时,trim=1'b0 + - 当 din=8'h1 时,trim=1'b1 + - 拼接**生成码**:令 trim 在高位,len 在低位,进行拼接,得到生成码 code - 更新**遗留码**,产生**输出数据**:把 code 拼接在上一周期的遗留码 drem 上,拼接后如果长度 >=16 ,就把低 16bit 作为输出码 dout 输出,drem 则删去这低 16bit 。 @@ -3238,7 +3252,7 @@ function Tuple2#(Bit#(10), UInt#(4)) getCode(Bit#(8) din); for(UInt#(4) i=0; i<8; i=i+1) if(din[i] == 1) len = i; - + // 计算数据码 trim 的长度 UInt#(4) trim_len = len>0 ? len : 1; @@ -3260,7 +3274,7 @@ endfunction module mkBitCoder (BitCoder); // 流水线第一级产生的数据,默认 code 和 code 的长度都是 0 Reg#(Tuple2#(Bit#(10), UInt#(4))) in_code_and_len <- mkDReg( tuple2(0,0) ); // code 和 code 的长度 - + // 流水线第二级产生的数据 Reg#(Bit#(31)) drem <- mkReg(0); // 存放遗留码 Reg#(UInt#(5)) drem_len <- mkReg(0); // 遗留码的长度 @@ -3269,7 +3283,7 @@ module mkBitCoder (BitCoder); // 流水线第二级:更新遗留数据和输出数据 rule get_drem_and_dout; - match {.code, .code_len} = in_code_and_len; // 当流水线上一级没有数据时,mkDReg 默认读到 0 + match {.code, .code_len} = in_code_and_len; // 当流水线上一级没有数据时,mkDReg 默认读到 0 // 不会对本 rule 造成副作用 Bit#(31) data = (extend(code) << drem_len) | drem; // data = code 拼接 drem @@ -3301,7 +3315,7 @@ endmodule - 流水线第一级实现在 `put` 方法中,负责调用 `getCode` 函数计算 code 和 code 的长度。 - 流水线第一级使用名为 `in_code_and_len` 、默认值为 `tuple2(0,0)` 的 `mkDReg` 向第二级传递一项数据,只有当 `put` 方法执行的下一个周期, `in_code_and_len` 才能读到非零的 code 和 code 的长度。 - 流水线第二级使用名为 `dout_valid` 、默认值为 `False` 的 `mkDReg` 传递输出有效信号,只有当有足够的 16bit 需要输出时,才让 `dout_valid=True` 。 -- 输出级,用 `get_valid` 方法引出 `dout_valid` 的值;用 `get` 方法引出 `dout` 的值。 +- 输出级用 `get_valid` 方法引出 `dout_valid` 的值;用 `get` 方法引出 `dout` 的值。 最后,编写 testbench (测试程序)如下 :point_down: ,它实例化了模块 `mkBitCoder` ,实例名为 `coder` 。它调用 `coder.put` 方法依次输入 `8'h0` \~ `8'hFF` ,一共输入两轮。并在 `coder.get_valid = True` 时打印 `coder.get` 方法的值。 @@ -3420,7 +3434,7 @@ endmodule ``` |-----------------------| |--------------------------| | | (传递10bit) | drem容量:31bit | -put--->| 如果put,最多产生10bit |------------->| 当前含有 drem_len 个 bit |---> dout +put--->| 如果put,最多产生10bit |------------->| 当前含有 drem_len 个 bit |---> dout | | | | (可输出8bit) |-----------------------| |--------------------------| 流水线第一级 流水线第二级 @@ -3481,7 +3495,7 @@ module mkBitCoder (BitCoder); // 流水线第一级产生的数据,默认 code 和 code 的长度都是 0 Reg#(Tuple2#(Bit#(10), UInt#(4))) in_code_and_len <- mkReg( tuple2(0,0) ); // code 和 code 的长度 Reg#(Bool) din_valid <- mkReg(False); // 指示 in_code_and_len 是否有效 - + // 流水线第二级产生的数据 Reg#(Bit#(31)) drem <- mkReg(0); // 存放遗留码 Reg#(UInt#(6)) drem_len <- mkReg(0); // 遗留码的长度 @@ -3516,7 +3530,7 @@ module mkBitCoder (BitCoder); // 流水线第一级:获取 code 以及其长度 method Action put(Bit#(8) din) if(!din_valid); // 隐式条件保证下一周期 drem 的长度不会溢出 - din_valid <= True; + din_valid <= True; in_code_and_len <= getCode(din); // 计算 code 和 code 的长度 endmethod @@ -3531,7 +3545,7 @@ endmodule 这里使用了一种很具有 BSV 特色的写法——在方法 `put` 和规则 `get_drem_and_dout` 里都写了寄存器 `din_valid` 。虽然二者能同时激活,但由于发生冲突的语句在 if 条件的控制下并不会在同一周期执行,所以用 `conflict_free` 调度属性来避免它们之间的激活抑制: -```bsv +``` (* conflict_free = "put, get_drem_and_dout" *) ``` @@ -3664,9 +3678,9 @@ endmodule 我们知道接口 `Reg#(int)` 有两个方法: -- `method Action _write(int x)` +- `method Action _write(int x)` -- `method int _read` +- `method int _read` 我们本可以直接用上一节的写法实现它们: @@ -3772,7 +3786,7 @@ endmodule // 代码路径:src/14.IncreaseReg/IncreaseRegCfg_v2.bsv (部分) module mkIncreaseRegCfg ( Tuple2#(Reg#(int), Reg#(int)) ); // 该模块的接口是元组,包括两个 Reg#(int) 接口 Reg#(int) reg_data <- mkReg(0); - Reg#(int) reg_step <- mkReg(1); + Reg#(int) reg_step <- mkReg(1); (* preempts = "fst._write, increase" *) // fst 代表元组第一个元素(也就是自增计数器寄存器的接口) // fst._write 自然就代表自增计数器的 _write 方法。 @@ -3879,10 +3893,10 @@ endinterface BRAMCore 包提供了 `mkBRAMCore1` 模块用来创建单口 RAM, `mkBRAMCore2` 模块用来创建双口 RAM 。它们的定义是: ```bsv -// 单口 RAM +// 单口 RAM module mkBRAMCore1#(Integer memSize, Bool hasOutputRegister) (BRAM_PORT#(addr, data)) -// 双口 RAM +// 双口 RAM module mkBRAMCore2#(Integer memSize, Bool hasOutputRegister) (BRAM_DUAL_PORT#(addr, data)) ``` @@ -3947,7 +3961,7 @@ mkBRAMCore1Load 和 mkBRAMCore2Load 模块在仿真开始时用一个文本文 // 单口 RAM , 载入文件作为初始数据 module mkBRAMCore1Load#(Integer memSize, Bool hasOutputRegister, String file, Bool binary ) (BRAM_PORT#(addr, data)) - + // 双口 RAM ,载入文件作为初始数据 module mkBRAMCore2Load#(Integer memSize, Bool hasOutputRegister, String file, Bool binary ) (BRAM_DUAL_PORT#(addr, data)) @@ -3955,7 +3969,7 @@ module mkBRAMCore2Load#(Integer memSize, Bool hasOutputRegister, String file, Bo 其中 `String file` 是文本文件名字符串,是相对于 .bsv 源码文件所在的路径。例如: -- 文本文件 data.txt 与 .bsv 文件在同一个目录下,那么 `String file` 应该取 `"data.txt"` +- 文本文件 data.txt 与 .bsv 文件在同一个目录下,那么 `String file` 应该取 `"data.txt"` - 文本文件 hello.txt 在 .bsv 文件所在的目录下的 test 目录下,那么 `String file` 应该取 `"test/hello.txt"` `Bool binary=True` 代表文件由二进制数组成。以下是一个二进制文本文件内容的示例,每行一项数据,载入后,每项数据会占用 BRAM 的一个地址。 @@ -4122,9 +4136,11 @@ int rdata <- ram2.portB.response.get; // 动作值方法 BRAM 具有一个读数据和写响应的缓存队列(一般我们不用写响应,所以简称读缓存队列)。每次调用 `request.put` 发起一个读操作,相当于向读缓存压入了一项数据;每次调用 `response.get` 相当于从读缓存中拿出了一项数据。因此: - 只有当缓存不为空时,`response.get` 的隐式条件才满足 -- 换言之,如果不发起 `request.put` 读操作,就不能从 `response.get` 拿到数据 + - 换言之,如果不发起 `request.put` 读操作,就不能从 `response.get` 拿到数据 + - 只有当缓存不为满时, `request.put` 的隐式条件才满足 -- 换言之,如果不及时调用 `response.get` 把数据拿走,当读缓存满时,就无法调用 `request.put` 了 + - 换言之,如果不及时调用 `response.get` 把数据拿走,当读缓存满时,就无法调用 `request.put` 了 + 注意:以上叙述都是指相同的口。而双口 RAM 的 A口 和 B口是完全独立的,各自有各自的读缓存,互不影响。 @@ -4193,7 +4209,7 @@ BRAM2Port#( Tuple3#(bit, UInt#(3), UInt#(3)) , int ) ram <- mkBRAM2Server(defaul method Action datain(int val) if(!full); // 外界调用该方法,输入待转置(行主序)的数据流 ram.portA.request.put( BRAMRequest{write: True, responseOnWrite: False, address: tuple3(wb[0], wi, wj), datain: val }); - + // ------------ 按行主序的方式移动指针 ------------ wj <= wj + 1; // 列号先增加 if(wj == 7) begin // 列号到最大时 @@ -4239,8 +4255,9 @@ endmethod - 借助 BRAM 实现双缓冲,在外界积极不断地输入和拿出数据的情况下,能达到 1数据/周期 的吞吐率。 - 能轻松实现在外界不积极输入数据、输出数据的情况下,仍然保持结果正确: -- 如果外界不积极地调用 `put` 方法,双缓冲经常为空,导致 `read_ram` 规则不激活,从而不再读出数据。 -- 如果外界不积极地调用 `get` 方法,则 `ram.portB` 的读缓冲区积攒数据,导致 `ram.portB.request.put` 被阻塞,导致 `read_ram` 规则不激活,导致双缓冲经常处于满的状态,最终导致 `put` 方法不能执行。 + - 如果外界不积极地调用 `put` 方法,双缓冲经常为空,导致 `read_ram` 规则不激活,从而不再读出数据。 + - 如果外界不积极地调用 `get` 方法,则 `ram.portB` 的读缓冲区积攒数据,导致 `ram.portB.request.put` 被阻塞,导致 `read_ram` 规则不激活,导致双缓冲经常处于满的状态,最终导致 `put` 方法不能执行。 + @@ -4292,7 +4309,7 @@ FIFO 模块众多,功能大同小异,概览如**表16**。(从模块名可 | 可在满时并发 enq 和 deq | 1 | mkLFIFO | mkLFIFOF | mkGLFIFOF | FIFO、FIFOF | | 可在空时并发 enq 和 deq | 1 | mkBypassFIFO | mkBypassFIFOF | - | SpecialFIFOs | | 可在空时并发 enq 和 deq | 定制 | - | mkSizedBypassFIFOF | - | SpecialFIFOs | -| 空时可 deq ,读出默认值 | 1 | - | mkDFIFOF | - | SpecialFIFOs | +| 空时可 deq ,读出默认值 | 2 | - | mkDFIFOF | - | SpecialFIFOs | | BRAM 实现的大容量 FIFO | 定制 | mkSizedBRAMFIFO | mkSizedBRAMFIFOF | - | BRAMFIFO | **图7** 展示了 `mkFIFO` 、 `mkFIFO1`、 `mkLFIFO` 、 `mkBypassFIFO` 在什么情况下允许在同一周期并发压入和弹出。具体的解释和用例见本章的后文。 @@ -4383,7 +4400,7 @@ if(v1 == v3) ```bsv // 代码路径:src/15.Sqrt/Sqrt_v2.bsv (部分) - FIFO#( Tuple2#(UInt#(32), UInt#(32)) ) fifos [17]; // 接口数组,数组长度=17 + FIFO#( Tuple2#(UInt#(32), UInt#(32)) ) fifos [17]; // 接口数组,数组长度=17 // 接口类型是 FIFO#( Tuple2#(UInt#(32), UInt#(32)) ) // FIFO 内容数据类型是 Tuple2#(UInt#(32), UInt#(32)) for(int n=16; n>=0; n=n-1) @@ -4420,9 +4437,9 @@ module mkSqrtUInt32( FIFO#(UInt#(32)) ); endmethod method deq = fifos[0].deq; // 模块的 deq 方法负责:流水线最末级的 fifo deq - + method UInt#(32) first; // 模块的 first 方法负责: - match {.x, .y} = fifos[0].first; // 拿到流水线最末级的 fifo.first , 解构该 Tuple2 + match {.x, .y} = fifos[0].first; // 拿到流水线最末级的 fifo.first , 解构该 Tuple2 return y; // 返回其中的结果数据 y endmethod @@ -4444,7 +4461,7 @@ module mkTb(); endrule Reg#(UInt#(32)) x <- mkReg(1); - + FIFO#(UInt#(32)) sqrter <- mkSqrtUInt32; // 实例化 mkSqrtUInt32,接口是 FIFO#(UInt#(32)) rule sqrter_input; // 这里也可以加入显式条件来实现不积极输入 @@ -4541,10 +4558,11 @@ FIFOF#(int) fifo2 <- mkGLFIFOF(False, True); // 容量=1,接口为 FIFOF, 累加式存储器可以用来进行直方图统计,即统计输入数据流中各数据出现的频率。要求: - 功能: -- 输入:地址 addr 和 data -- 普通写:把 data 写入 addr -- 累加写:读取 addr 中的数据 rdata ,与 data 相加后,再写回 addr。 -- 输出:无论是普通写还是累加写,都输出本次操作的地址 addr 和写入本地址的新值 data + - 输入:地址 addr 和 data + - 普通写:把 data 写入 addr + - 累加写:读取 addr 中的数据 rdata ,与 data 相加后,再写回 addr。 + - 输出:无论是普通写还是累加写,都输出本次操作的地址 addr 和写入本地址的新值 data + - 性能:吞吐率能达到 1 数据/周期 - 要求有输入有效和输出反压机制 - 时钟频率:为了不让组合逻辑路径太长,要求读 BRAM、加法计算、写 BRAM 先后放在3个不同的流水级。 @@ -4619,7 +4637,7 @@ endrule 本节介绍模块 `mkDFIFOF` -`mkDFIFOF` 与 `mkLFIFOF` 唯一的不同是:`mkDFIFOF` 的 first 和 deq 不具有隐式条件,当为空时: +`mkDFIFOF` 与常规的容量为 2 的 `mkFIFOF` 唯一的不同是:`mkDFIFOF` 的 first 和 deq 不具有隐式条件,当为空时: - `mkDFIFOF` 允许调用 deq - `mkDFIFOF` 允许调用 first ,返回一个默认值 @@ -4636,11 +4654,9 @@ FIFOF#(int) fifo <- mkDFIFOF(42); // 默认值=42 我们用 `mkDFIFOF` 和 `mkFIFO` 改进 7.4 节遗留的具有输出反压功能的比特编码器,让它能获得接近 1数据/周期 的吞吐率。 - - 如**图9** 是设计思路。这里有个关键点:当遗留码寄存器堆积的长度超过 8bit 时,我们希望不论第1级有没有数据传递过来,第2级的规则都能激活,来把这 8bit 传递给输出级。换言之:我们总是希望遗留码寄存器能积极地清空自己。 -为了优雅地解决该关键点,我们在第1级和第2级之间使用 `mkDFIFOF` 。理由是:我们可以给 `mkDFIFOF` 设置一个默认值二元组: (生成码, 生成码的长度) = (0, 0) 。如果刚好 mkDFIFOF 为空,会取出默认值,而不会因为隐式条件的存在而阻止第2级的规则激活。 +为了优雅地解决该关键点,我们在第1级和第2级之间使用 `mkDFIFOF` 。理由是:我们可以给 `mkDFIFOF` 设置一个默认值二元组: (生成码, 生成码的长度) = (0, 0) 。如果刚好 `mkDFIFOF` 为空,会取出默认值,而不会因为隐式条件的存在而阻止第2级的规则激活。 | ![图9](./readme_image/9.bit_coding.png) | | :-------------------------------------: | @@ -4653,8 +4669,8 @@ FIFOF#(int) fifo <- mkDFIFOF(42); // 默认值=42 module mkBitCoder ( FIFO#(Bit#(8)) ); FIFO#(Bit#(8)) fifo1 <- mkFIFO; - FIFOF#(Tuple2#(Bit#(10), UInt#(4))) fifo2 <- mkDFIFOF( tuple2(0, 0) ); - FIFO#(Bit#(8)) fifo3 <- mkFIFO; + FIFOF#(Tuple2#(Bit#(10), UInt#(4))) fifo2 <- mkDFIFOF( tuple2(0, 0) ); + FIFO#(Bit#(8)) fifo3 <- mkFIFO; Reg#(Tuple2#(Bit#(31), UInt#(6))) drem_reg <- mkReg( tuple2(0, 0) ); // 存放遗留码 drem 以及其长度 @@ -4667,15 +4683,15 @@ module mkBitCoder ( FIFO#(Bit#(8)) ); for(UInt#(4) i=0; i<8; i=i+1) // for循环:计算长度码 len if(din[i] == 1) len = i; - + UInt#(4) trim_len = len>0 ? extend(len) : 1; // 计算数据码 trim 的长度 - Bit#(7) trim = truncate(din) & ~('1<8.8 BypassFIFO -BypassFIFO 包括3个模块: +BypassFIFO 包括3个模块: - `mkBypassFIFO` :容量=1,接口为 FIFO - `mkBypassFIFOF` :容量=1,接口为 FIFOF @@ -4753,8 +4769,8 @@ import BRAMFIFO::*; BRAMFIFO 包括两个模块: -- mkSizedBRAMFIFO :接口为 FIFO -- mkSizedBRAMFIFOF :接口为 FIFOF +- `mkSizedBRAMFIFO` :接口为 FIFO +- `mkSizedBRAMFIFOF` :接口为 FIFOF 以下代码实例化了两个 BRAMFIFO : @@ -4844,7 +4860,7 @@ endrule 向量是一种复合数据类型,能提供比数组更强大的功能。使用前需要引入: -```bsv +``` import Vector::*; ``` @@ -5056,7 +5072,7 @@ typedef enum {Green=125, Yellow=20, Red=85} Light deriving(Eq, Bits); ```bsv typedef enum {Green=125, Yellow=20, Red=85} Light deriving(Eq, Bits); -Light va = unpack(0); // 行为不确定!! 因为编码 0 在 Light 类型中不存在 。pack(va) 甚至不再是 7'b0 !! +Light va = unpack(0); // 行为不确定!! 因为编码 0 在 Light 类型中不存在 。pack(va) 甚至不再是 7'b0 !! Light vb = unpack(20); // 行为确定,因为编码 20 在 Light 类型中对应 Yellow ,会得到 vb = Yellow ``` @@ -5136,7 +5152,7 @@ typedef struct{ // 一个像素结构体,嵌套了 Vector 和 Pixel pixel; pixel = Pixel{ // 构造结构体的语法 - color:replicate('hFF), // color[0]='hFF color[1]='hFF color[2]='hFF + color:replicate('hFF), // color[0]='hFF color[1]='hFF color[2]='hFF transparent: False, // transparent=False coord: Coord{x:1, y:2} // coord.x=1 coord.y=2 }; @@ -5146,7 +5162,7 @@ pixel = Pixel{ // 构造结构体的语法 ```bsv let pixel = Pixel{ - color:replicate('hFF), // color[0]='hFF color[1]='hFF color[2]='hFF + color:replicate('hFF), // color[0]='hFF color[1]='hFF color[2]='hFF transparent: False, // transparent=False coord: Coord{x:1, y:2} // coord.x=1 coord.y=2 }; @@ -5334,7 +5350,7 @@ y = case(x) matches 我们以往接触过的函数参数类型和返回值类型都是固定的类型,比如是一个 int : -```verilog +```bsv function int do_nothing( int i ); // 固定类型 return i; endfunction @@ -5342,7 +5358,7 @@ endfunction 然而它们也可以是类型变量,比如类型变量名为 td (必须以小写字母开头)如下: -```verilog +```bsv function td do_nothing( td i ); // 可变类型 return i; endfunction @@ -5373,8 +5389,8 @@ endfunction 以下 bit_equal 函数就有点意义了,它判断两个参数在编码层面是否相等。它允许两个参数具有不同的类型 td1 和 td2 ,把它们用 pack 函数转化成 Bit#() 类型后,再比较是否相等。 注意到 `provisos` 中有: -- **派生要求**:要求 td1 派生自 Bits 类型类,并获取它的位宽 sz1 -- **派生要求**:要求 td2 派生自 Bits 类型类,并获取它的位宽 sz2 +- **派生要求**:要求 td1 派生自 Bits 类型类,并获取它的位宽 sz1 +- **派生要求**:要求 td2 派生自 Bits 类型类,并获取它的位宽 sz2 - **关系要求**:用关系要求 `Add#(sz1, 0, sz2)` 要求 sz1+0==sz2 ,也即 sz1 == sz2 - **数值类型** :sz1 和 sz2 都是**数值类型**,是一种用来构造类型和接口的整数类型,比如 `Bit#(n)` 和 `Vector#(n, td)` 中的 n 都是数值类型。 @@ -5431,7 +5447,7 @@ endfunction 注意区分普通函数、类型函数、伪函数: - **普通函数**(也就是5.6节学到的函数):在仿真运行时执行。如果是可综合的,会转化成组合逻辑电路。 -- 特殊情况:当参数都为常量时,会在编译时就确定下返回值,从而降低仿真时的计算量和生成电路的面积,称为**常量传递**。 + - 特殊情况:当参数都为常量时,会在编译时就确定下返回值,从而降低仿真时的计算量和生成电路的面积,称为**常量传递**。 - **类型函数、伪函数**:编译期间执行。 @@ -5669,7 +5685,7 @@ module mkWireReg#(td init_data) ( Reg#(td) ) // 寄存器内的数据类型 rule set_self_wire; self_wire <= self_reg; endrule - + method Action _write(td wdata); self_reg <= wdata; self_rwire.wset(wdata); @@ -5716,13 +5732,13 @@ Reg#(int) wire_reg <- mkWireReg(0); // 实例化一个 mkWireReg ,他有一 // 多态参数: n : 数值类型,双缓冲中每块的元素数量 // td : 数据元素类型 // -// 方法 put : +// 方法 put : // 参数 cancel : False:正常输入一项数据元素 True:撤销当前正在写的块,重新开始积攒n个元素 // indata : 一个输入数据元素 // // 方法 get : // 效果 : 读一次数据,读出一整块(n个元素) -// 返回值 : Tuple2(读计数,一整块数据) +// 返回值 : Tuple2(读计数,一整块数据) // 读计数: 当前一整块被读的次数,从0开始 // 一整块数据: n个元素的Vector interface DoubleBuffer#(numeric type n, type td); @@ -5737,7 +5753,7 @@ endinterface // 代码路径:src/23.DoubleBuffer/DoubleBuffer.bsv (部分) // // 双缓冲模块 -// +// // 接口: DoubleBuffer#(n, td) // // 参数: readTimes : 读一个块的次数 @@ -5832,7 +5848,7 @@ module mkDoubleBuffer#( UInt#(32) readTimes ) ( DoubleBuffer#(n, td) ) rcnt <= rcnt+1>=readTimes ? 0 : rcnt + 1; // 移动读计数 if( rcnt+1>=readTimes ) // 如果读计数+1=读次数 rblock <= rblock + 1; // 读块号+1, 即去读下一块 - + return tuple2( // 构造 tuple2 作为返回值 rcnt, // 读计数 regVector2Vector( buffer[ rblock[0] ] ) // 从缓冲区读取的块 @@ -5842,7 +5858,7 @@ module mkDoubleBuffer#( UInt#(32) readTimes ) ( DoubleBuffer#(n, td) ) endmethod ``` -以上,模块 `mkDoubleBuffer` 就设计完了 。 +以上,模块 `mkDoubleBuffer` 就设计完了 。 实例化 `mkDoubleBuffer` 的方法举例如下: @@ -5898,7 +5914,7 @@ endmodule 我们可以看到仿真打印符合以上分析: -```verilog +```bsv cnt=[ 5] rcnt=[ 0] data={ 0 1 2 3 4} cnt=[ 6] rcnt=[ 1] data={ 0 1 2 3 4} cnt=[ 7] rcnt=[ 2] data={ 0 1 2 3 4} @@ -6051,7 +6067,7 @@ mkAutoFSM 模块没有接口,不需要调用 start 方法就直接开始运行 mkFSM mfsm <- mkFSM( seq // ... await( sfsm.done ) // 直到 sfsm 空闲才能跳到下一个周期,可能占多个周期 - // 等效于 sfsm.waitTillDone; + // 等效于 sfsm.waitTillDone; // ... endseq ); ``` @@ -6062,7 +6078,7 @@ mkAutoFSM 模块没有接口,不需要调用 start 方法就直接开始运行 ```bsv // 代码路径:src/24.FSMTest/FSMStructures.bsv (部分) - mkFSM mfsm <- mkFSM( seq + mkFSM mfsm <- mkFSM( seq $display("fsm started"); // 状态1:占1个周期 delay(100); // 状态2:占100个周期 $display("delay done"); // 状态3:占1个周期 @@ -6077,7 +6093,7 @@ action 可以把多个动作语句合并成一个动作。 ```bsv // 代码路径:src/24.FSMTest/FSMStructures.bsv (部分) - mkFSM mfsm <- mkFSM( seq + mkFSM mfsm <- mkFSM( seq // ... action // 一个 action 只占一个状态,在同一周期执行 regx <= regy; @@ -6092,7 +6108,7 @@ action 可以把多个动作语句合并成一个动作。 ```bsv // 代码路径:src/24.FSMTest/FSMStructures.bsv (部分) - mkFSM mfsm <- mkFSM( seq + mkFSM mfsm <- mkFSM( seq // ... action // 只有在所有状态都满足时,才一并执行 action 中的所有语句 fifo.enq(53); @@ -6116,7 +6132,7 @@ action 可以把多个动作语句合并成一个动作。 `repeat(n) ...` 可以把一个结构重复执行 n 次,比如可以把一个 seq 顺序结构重复三次: ```bsv - mkFSM mfsm <- mkFSM( seq + mkFSM mfsm <- mkFSM( seq // ... repeat(3) seq $display("cnt=[%3d] repeat", cnt); @@ -6128,8 +6144,8 @@ action 可以把多个动作语句合并成一个动作。 或者把一个 action 重复四次: -```bsv - mkFSM mfsm <- mkFSM( seq +``` + mkFSM mfsm <- mkFSM( seq // ... repeat(4) action $display("cnt=[%3d] repeat", cnt); @@ -6216,7 +6232,7 @@ action 可以把多个动作语句合并成一个动作。 以下是一个例子: -```bsv +``` FSM mfsm <- mkFSM( seq // ... while(cnt % 5 != 0) seq @@ -6293,8 +6309,8 @@ endseq // 设 regx 是寄存器 seq action // 这样是可以的: - int x=0; - x = regx; + int x=0; + x = regx; for(int y=0; y<4; y=y+1) x = x + y; regx <= x; @@ -6317,7 +6333,8 @@ endseq SPI 发送器 `mkSPIWriter` 的代码如下。实现思路是: - 在 write 方法里,把待写的 8 bit 数据(字节)存到 wdata 寄存器里,并启动状态机。 -- 注意:write 方法会获得隐式条件“状态机空闲”,也就是说,当状态机正忙时,外界无法调用 write 方法。 + - 注意:write 方法会获得隐式条件“状态机空闲”,也就是说,当状态机正忙时,外界无法调用 write 方法。 + - 状态机内,用 while 循环 8 次,每次拿出 wdata 中的一个 bit 赋给 mosi 信号。同时也要正确地控制 ss 和 sck 信号。 - 在 spi 方法里,直接把 ss, sck, mosi 三个信号引出。 @@ -6388,18 +6405,21 @@ endmodule 无论 BSV 写的多花里胡哨,部署在 FPGA 最终还是要用 Verilog 。本节介绍如何把自己编写的 BSV 模块嵌入 Verilog 项目里。 +BSV 编译器可以把 BSV 代码以模块为单位转化成符合 Verilog-2001 标准的 Verilog 代码,在各种开发平台(Quartus、Vivado等)上具有极好的移植性。之所以不转化为新的 Verilog-2005 或 SystemVerilog ,是考虑到各家综合工具对旧版 Verilog 的语法解读更加统一,歧义更小。 + 个人推荐的开发流程是: 1. 编写 BSV 功能模块: -- 不仅要编写模块本身,还要编写一个 testbench 来调用并测试它。不仅是为了验证正确性,也是为了生成一个仿真波形,让我们在信号层面上理解调用者是如何和被调用者交互的。 -- 在调试时,如果只想看仿真打印,推荐使用 BSV 仿真(而不是Verilog仿真),也就是命令行 `bsvbuild.sh -bs` ,因为仿真运行速度会更快。 -- 对于你想要独立生成 Verilog 代码的模块,别忘了在 module 定义上加上 `(* synthesis *)` 属性 -- 泛型模块不能作为生成 Verilog 代码的顶层,不能加 `(* synthesis *)` 属性,且只能被其它模块调用。 + + - 不仅要编写模块本身,还要编写一个 testbench 来调用并测试它。不仅是为了验证正确性,也是为了生成一个仿真波形,让我们在信号层面上理解调用者是如何和被调用者交互的。 + - 在调试时,如果只想看仿真打印,推荐使用 BSV 仿真(而不是Verilog仿真),也就是命令行 `bsvbuild.sh -bs` ,因为仿真运行速度会更快。 + - 对于你想要独立生成 Verilog 代码的模块,别忘了在 module 定义上加上 `(* synthesis *)` 属性 + - 泛型模块不能作为生成 Verilog 代码的顶层,不能加 `(* synthesis *)` 属性,且只能被其它模块调用。 2. 编写完成后,用命令行 `bsvbuild.sh -vw` 生成 Verilog 代码,并生成仿真 `.vcd`波形文件。 3. 查看生成的 Verilog 模块的输入输出接口: -- 生成的 Verilog 文件 (.v) 可能有很多个,每个对应文件一个模块,包括一些子模块,以及仿真代码生成的仿真模块。你需要查看的是与你想要的 BSV 模块同名的 Verilog 模块。 + - 生成的 Verilog 文件 (.v) 可能有很多个,每个对应文件一个模块,包括一些子模块,以及仿真代码生成的仿真模块。你需要查看的是与你想要的 BSV 模块同名的 Verilog 模块。 4. 打开 .vcd 波形文件,找到你想要的模块的调用者,查看它调用该模块的波形,理解各信号的意义。 -- 如果你想要删除一些不必要的 EN 和 RDY 握手信号,在 BSV 代码文件中的模块上加上 `always_enabled` 和 `always_ready` 属性,重新生成 Verilog 。 + - 如果你想要删除一些不必要的 EN 和 RDY 握手信号,在 BSV 代码文件中的模块上加上 `always_enabled` 和 `always_ready` 属性,重新生成 Verilog 。 5. 根据如上理解,以及你的项目需要,编写 Verilog 调用者代码来调用该模块。 @@ -6418,11 +6438,13 @@ endmodule ### 时钟和复位 -首先,全局时钟信号输入 CLK 和全局复位信号输入 RST_N 是一定会生成的: +首先,全局时钟信号输入 `CLK` 和全局复位信号输入 `RST_N` 是一定会生成的: + +- `input CLK` 全局时钟:模块的所有输出信号在 `CLK` 的上升沿变化 ,所有输入信号在 `CLK` 的上升沿被采样 + - 这是典型的标准同步时序逻辑 +- `input RST_N` 全局复位:当 `CLK` 的上升沿,若 `RST_N=0` ,模块中需要复位的寄存器复位。若 `RST_N=1` ,则正常工作 + - 这是典型的标准同步复位 -- input CLK 全局时钟:模块的所有输出信号在 CLK 的上升沿变化 ,所有输入信号在 CLK 的上升沿被采样 -- 这是标准的同步时序逻辑 -- input RST\_N 全局同步复位:当 CLK 的上升沿,若 RST_N=0 ,模块中需要复位的寄存器复位。若 RST_N=1 ,则正常工作 @@ -6466,14 +6488,14 @@ endinterface: FIFO 打开生成的 Verilog 文件 `mkBitCoder.v` ,看到模块输入输出信号如下,BSV 还帮我们生成了相关的描述注释: -```bsv +```verilog // Ports: // 笔者注释:关注以下输入输出描述 // Name I/O size props // RDY_enq O 1 reg // RDY_deq O 1 reg // first O 8 reg // RDY_first O 1 reg -// RDY_clear O 1 const // 是 const 代表这个信号可能可以省略 +// RDY_clear O 1 const // 笔者注释:const 代表这个信号可能可以省略 // CLK I 1 clock // RST_N I 1 reset // enq_1 I 8 reg @@ -6524,13 +6546,13 @@ module mkBitCoder(CLK, 对于动作方法 enq : - output RDY_enq : 代表当前时钟周期 enq 的隐式条件是否满足,即模块是否接受外界输入 enq_1 数据 -- input EN_enq : 代表当前时钟周期外界是否想输入 enq_1 数据。只允许在 RDY_enq=1 的周期=1 +- input EN_enq : 代表当前时钟周期外界是否想输入 enq_1 数据。只允许在 RDY_enq=1 的周期=1 - input [7 : 0] enq_1 : 是 8bit 的输入数据,每当 RDY_enq=EN_enq=1 (握手成功)时输入一次 对于动作方法 deq : - output RDY_deq : 代表当前时钟周期 deq 的隐式条件是否满足,即模块是否有可弹出的数据 -- input EN_deq : 代表外界是否想弹出数据。只允许在 RDY_deq=1 的周期=1 +- input EN_deq : 代表外界是否想弹出数据。只允许在 RDY_deq=1 的周期=1 - 因为没有参数所以没有输入信号 对于值方法 first : @@ -6550,9 +6572,9 @@ module mkBitCoder(CLK, 为了印证以上分析,打开 `.vcd` 波形文件查看这些信号。如**图12**,可以看出: -- 调用者积极地调用 enq 方法:即只要 RDY_enq=1 ,就让 EN_enq=1 +- 调用者积极地调用 enq 方法:即只要 RDY_enq=1 ,就让 EN_enq=1 - 只要 RDY_enq=EN_enq=1 (握手成功),就令输入数据 enq_1 更新为下一个待输入数据 -- 调用者积极地调用 deq 方法:即只要 RDY_deq=1 ,就让 EN_deq=1 +- 调用者积极地调用 deq 方法:即只要 RDY_deq=1 ,就让 EN_deq=1 - 每当 RDY_deq=EN_deq=1 (握手成功),直到下次 RDY_deq=1 ,输出数据 first 会更新,这是因为成功弹出了上一个输出数据 - RDY_deq 与 RDY_first 永远相等,因为 deq 与 first 隐式条件相同。在编写 Verilog 时任选一个来用即可。 @@ -6583,13 +6605,16 @@ module mkBitCoder(CLK, 对于值方法: - RDY=1 说明输出数据有效。 +- 不存在 EN 信号,因为无论外界是否调用值方法,都不会对被调用模块产生影响。 对于动作方法和动作值方法: - RDY 信号指示当前是否能调用该方法。 -- RDY=1 时说明输出数据有效(如果有返回值)。 + - RDY=1 时说明输出数据有效(如果是动作值方法)。 + - EN 信号指示当前外界是否要调用该方法,要求只能在 RDY=1 时让 EN=1 。 -- EN=1 时,必须让输入数据有效(如果有参数)。 + - EN=1 时,必须让输入数据有效(如果有参数)。 + - 每当 EN=RDY=1 的时钟周期,一次握手完成,方法被调用了一次。 我们编写 Verilog 来调用 BSV 生成的 Verilog 模块时,需要依照以上原则,根据模块输出的 RDY 和 输出数据 信号来正确地产生 EN 和 输入数据信号。 @@ -6692,7 +6717,7 @@ Verilog 代码库的路径包括: 本章提供三个样例 SPIFlash 读写器、 RISC-V 流水线 CPU 、 JPEG 图像压缩器 。 -代码都验证通过,后续补充注释和原理介绍。 +本章配套代码已全部完成并测试,部分文字尚未完成,留待后续补充。 @@ -6700,23 +6725,33 @@ Verilog 代码库的路径包括: 代码目录: `src/SPIFlash` +- `SPIFlashController.bsv` 包含 SPIFlash 读写控制器模块 `mkSPIFlashController` 。 +- `SPIController.bsv` 包含 SPI 控制器模块 `mkSPIController` ,被 `mkSPIFlashController` 调用。 +- `TbSPIFlashController.bsv` 包含仿真顶层模块 `mkTb` ,是 `mkSPIFlashController` 的 testbench 。 + +目的:展示状态机 StmtFSM 包的复杂应用。 + +核心知识点: + +- 状态机实现外设总线协议 + ### 原理介绍 实现 W25QXX 系列 SPIFlash 的读写控制器,包括页读、页写、页擦除。 -思路是用 StmtFSM 包来写一个更复杂的状态机。后续补充…… +> 留待后续补充…… ### 结果展示 运行命令生成仿真波形: ```bash -bsvbuild.sh -vw mkTb SPIFlashController.bsv +$ bsvbuild.sh -vw mkTb SPIFlashController.bsv ``` 查看波形: -| ![图14](./readme_image/15.spiflash_wave.png) | +| ![图15](./readme_image/15.spiflash_wave.png) | | :--------------------------------------------: | | **图15**:仿真产生的页擦除、页写 (部分) 的波形 | @@ -6726,35 +6761,179 @@ bsvbuild.sh -vw mkTb SPIFlashController.bsv 代码目录: `src/Rv32iCPU` +- `Rv32iCPU.bsv` 包含 RISC-V CPU 模块 `mkRv32iCPU` 。 +- `DFIFOF1.bsv` 包含多态模块 `mkDFIFO1` ,它被 `mkRv32iCPU` 调用。 +- `TbRv32iCPU.bsv` 包含仿真顶层模块 `mkTb` ,是 `mkRv32iCPU` 的 testbench 。 +- `benchmark` 目录包含一些能让 CPU 运行的程序,也即指令流文件和数据流文件。 + +目的:展示如何用 BSV 优雅地实现经典四级流水线 CPU 。 + +核心知识点: + +- 用各种 FIFO 构建弹性流水线 +- 用结构体提升代码可读性 +- 调度属性 + ### 原理介绍 -实现的 CPU: +RV32I 是 RISC-V 的基础整数指令集,本节实现完整支持 RV32I 指令集的 CPU,重点在于展示经典四级流水线 CPU 的原理,并跑一些 RISC-V 指令流程序来验证。 + +一些术语说明如**表23** 。 + +​ **表23**:CPU 体系结构中的术语 + +| 简称 | 全称 | 释义 | 备注 | +| ------- | -------------- | ------------------------------ | ---------------------------------------------- | +| pc | 程序计数 | 当前指令在指令 RAM 中的地址 | 32bit | +| npc | 下一条程序计数 | 下一条需要执行的指令的地址 | 无跳转时 npc=pc+4(每条指令占4字节) | +| imm | 立即数 | 从指令中直接获取的数据 | 32bit | +| regfile | 寄存器文件 | 通用寄存器阵列 | 32 个 32bit 的通用寄存器 | +| rsrc1 | 源寄存器1 | 从寄存器文件中读取的寄存器值 | 32bit | +| rsrc2 | 源寄存器2 | 从寄存器文件中读取的寄存器值 | 32bit | +| rdst | 目的寄存器 | 写入寄存器文件的值 | 32bit | +| ibus | 指令总线 | 接受 pc 作为访存地址,读出指令 | | +| dbus | 数据总线 | 接受访存请求,读出读数据 | 请求字:是读是写、写字节使能、读写地址、写数据 | + +RV32I 的所有指令类型如**表24** 。 + +​ **表24**:RV32I 包含的9种指令的大致行为。一些细节没展示,比如 LOAD 和 STORE 还分为按字节访存、按字访存、按双字访存。 + +| 指令类型r | rsrc1 | rsrc2 | rdst | 访存地址 | npc | +| ------------ | ------------------ | ------------------ | -------- | --------- | ------------------------------------------- | +| JAL | | | pc+4 | | pc+imm | +| JALR | :heavy_check_mark: | | pc+4 | | rsrc1+imm | +| BRANCH | :heavy_check_mark: | :heavy_check_mark: | | | pc+imm 或 pc+4 (取决于 rsrc1 和 rsrc2 比较) | +| AUIPC | | | pc+imm | | pc+4 | +| LUI | | | imm | | pc+4 | +| 立即数类算术 | :heavy_check_mark: | | ALU 结果 | | pc+4 | +| 寄存器类算术 | :heavy_check_mark: | :heavy_check_mark: | ALU 结果 | | pc+4 | +| LOAD | :heavy_check_mark: | :heavy_check_mark: | 内存读值 | rsrc1+imm | pc+4 | +| STORE | :heavy_check_mark: | :heavy_check_mark: | | rsrc1+imm | pc+4 | + +从**表24**看出,指令是否读取 rsrc1/rsrc2 、是否写入 rdst 、是否访存、如何跳转等行为会带来各种各样的变化。为此,我们设计流水线如**图15**,它包括四段: + +1. **IF段** (Instruction Fetch) : + - 持有当前的 pc,把它作为读地址送入 ibus(指令总线)。 +2. **ID段** (Instruction Decode) :从指令总线读到指令,用它: + + - 译码:获取 opcode 、 imm 、rsrc1号 、 rsrc2号 、rdst号 等信息。 + - 读取 regfile:根据 rsrc1号 、 rsrc2号 读取 regfile,得到 rsrc1 和 rsrc2 。 + - 计算 npc : + - 当指令不是 JAL、JALR、BRANCH 时,向 IF段 发送 npc=pc+4 (顺序执行的下一条指令); + - 当指令为 JAL 时,向 IF段 发送 npc=pc+imm ; + - 当指令为 JALR 时,暂不能确定跳转地址;当指令为 BRANCH 时,暂不能确定是否跳转。需要寄存器的计算结果。因此等 EX/MEM 段再跳转。 +3. **EX/MEM段** (Execute/Memory access) ,简称 **EX段** :用译码后的指令和寄存器读值进行: + + - 计算 npc: + + - 当指令为 JALR 时,向 IF段 发送 npc=rsrc1+imm ; + + - 当指令为 BRANCH 时,根据比较结果判断 npc=pc+imm 还是 npc=pc+4 。 + + + - 计算:对于算术逻辑类指令,用 ALU 计算目的寄存器结果。 + + - 访存:对于 LOAD/STORE,用“访存转换”算出读写请求:(是读是写、写字节使能、读写地址、写数据),送入ibus + +4. **WB段** (Write Back to Register) :对于所有要写入寄存器的指令,把相应的结果写回,其中: + + - 如果是 LOAD 指令,从 dbus 中拿到结果。 + + - 如果是其它指令(算术逻辑指令、JAL、JALR、LUI、AUIPC),从 ALU 拿到结果。 + +| ![图18](./readme_image/18.rv32i_pipe.png) | +| :---------------------------------------: | +| **图18**:RISC-V CPU 四级流水线设计图 | + +**图18**包含了本科课程《计算机组成原理》一般涉及的两种流水线停顿: -- 具有基本完备的 RV32I 指令集(除了不支持 CSR 类指令、不支持单字节和双字节Load/Store) -- EX和WB阶段的寄存器结果会转发到ID阶段,降低 CPI -- 弹性流水线:支持指令总线停顿和数据总线停顿,而不影响流水线后级向后传递。 +- 跳转停顿:BRANCH/JALR 指令需要寄存器读值才能计算 npc ,为了防止 ID段 组合逻辑过长,我们在 EX段 才计算并发送 npc 到 IF 段,导致总是在 ID段 产生一周期的气泡 (这里不考虑 speculation + 冲刷流水线的技术)。 +- 实现方法:EX段 和 ID段 都可以向 IF段 发送 npc ,但不会同时,所以给 EX段 和 ID段 加上 `(* conflict_free *)` 属性。 -主要思路包括:各种 FIFO 的运用;用高级数据结构降低代码量。 +- 写后读依赖停顿:当 WB段 或 EX段 的 rdst号 与 ID段 的 rsrc1号 或 rsrc2号 碰撞时,说明 ID段 要读取尚未写入寄存器的数据,ID段 需要停顿直到不再碰撞(数据已经写入 regfile)为止。 +- 实现方法:对于 ID段 的停顿,在 ID段 安插一个 mkBypassFIFO ,在停顿时保存 ibus 响应的读指令,避免它消失。 +- 额外优化:在 WB段 的 ALU结果 是经过寄存器缓存的,不是组合逻辑路径,因此当与 ID段 碰撞时,不停顿 ID段,而是用转发 (forward) 技术把 ALU结果 转发到 ID段。 -后续补充…… + +另外,我们还灵活运用各种 FIFO 实现了《计算机组成原理》中一般不要求实现,但在实际应用中非常必要的功能——总线停顿。ibus 和 dbus 都可能发生总线停顿,包括两种: + +- 请求停顿:可能暂时无法接受一个请求。比如遇到了 cache miss 或总线从机争用。 +- 响应停顿:接受请求后,响应的读出指令/读出数据 并不一定在下周期出现,有可能是下下周期、下下下周期。具有不确定的延迟。 + +我们使用以下方法解决这些总线停顿: + +- 对于 ibus 的请求停顿,在 IF段 安插一个 mkBypassFIFO ,当 ibus 无法接受请求时,缓存住 npc 。 +- 对于 ibus 的响应停顿,当停顿发生时,ID段 的 mkBypassFIFO 无数据, ID段 的规则就不会执行,不会向后传递指令,直到 ibus 有响应为止。 +- 对于 dbus 的请求停顿,在 EX段 安插一个 mkBypassFIFO ,当 dbus 无法接受请求时,缓存该请求。 +- 对于 dbus 的响应停顿,用一个 mkDFIFO1 进行同步。当 dbus 暂无响应时,不从 mkDFIFO1 中拿走一个数据,导致 EX段 停顿,不会继续向前执行。 + +> mkDFIFOF1 不是 BSV 的库里预定义的,是我自己编写的多态模块,它与 mkFIFOF1 唯一的区别是:可以在空时用 first 读到一个默认数据。 + +如果你用 Verilog 编写过流水线 CPU 就会知道,在如上所述的这些跳转停顿、写后读停顿、各种总线停顿的存在下,需要很复杂的冒险处理模块(Hazard Unit)来控制各种停顿组合下流水线的推移。然而在 BSV 的思维下,我们灵活地用 FIFO 的思维来应对这些停顿,不仅让流水线示意图(**图18**)更清晰易懂,也让代码修改变得更简单,方便我们进行设计空间搜索。例如你想试试在 ID段 就把 BRANCH/JALR 的 npc 发送给 IF段 会怎样,就不需要像 Verilog 那样既修改指令流又修改数据流(这样也很容易改出bug) + +具体的代码实现见`Rv32iCPU.bsv` (请结合**图18**阅读代码)。 ### 结果展示 **仿真**: -mkTb模块会让 CPU 运行一段快速排序程序,该快速排序程序的指令流见文件 `src/Rv32iCPU/instruction_stream/instruction_stream_quicksort.txt` 。它来自汇编源码 `src/Rv32iCPU/instruction_stream/assembly_quicksort.S` 。 +你可以修改 testbench 代码 `TbRv32iCPU.bsv` 中的两个字符串: + +```bsv +String filename_instruction = "benchmark/qsort_instruction.txt"; +String filename_data = "benchmark/no_data.txt"; +``` + +来指定要让 CPU 运行的指令流(放在指令 RAM 中)和数据流(放在数据 RAM 中)。 + +还可以修改: + +```bsv +Bit#(32) print_data_count = 40; +``` + +来决定仿真结束前打印数据 RAM 中的前多少个数据(用于查看结果)。 + +我在 benchmark 目录里提供了四个测试程序,说明如**表25**。 + +​ **表25**:我们实现的 CPU 的测试程序 -直接运行仿真命令: +| 程序说明 | filename_instruction 取值 | filename_data | 测试成功的标志 | +| -------- | ----------------------------------- | ---------------------------- | ---------------- | +| 快速排序 | `"benchmark/qsort_instruction.txt"` | 随意 ***** | 看排序结果 ***** | +| 算术测试 | `"benchmark/testA_instruction.txt"` | 随意 ***** | 最终 pc/4=2227 | +| 访存测试 | `"benchmark/testB_instruction.txt"` | `"benchmark/testB_data.txt"` | 最终 pc/4=2719 | +| 跳转测试 | `"benchmark/testC_instruction.txt"` | 随意 ***** | 最终 pc/4=2906 | + +> *****:随意代表可以随意设置,该程序不要求数据 RAM 中有初始值。 +> +> *****:排序结果通过打印数据 RAM 中的前 38 个数据来查看,这 38 个数据应该是由小到大排列的。 + +按**表25**设置好你想在 CPU 上运行的程序,然后运行以下命令来仿真: ```bash -bsvbuild.sh -bs mkTb Rv32iCPU.bsv +$ bsvbuild.sh -bs mkTb TbRv32iCPU.bsv ``` -可以看到打印了排序后的结果。 +仿真会在检测到 CPU 遇到死循环(JAL跳转到自身)时停止,然后会打印此时的一些信息,以及数据 RAM 中的前 `print_data_count` 个数据。 + +例如,对于访存测试(testB),你会看到如下的打印: + +``` +fetch: cycle= 5479 instructions= 3599 100*cpi= 152 pc/4= 2719 +DataRAM[00000000] = 16535 +DataRAM[00000004] = -1396670317 +DataRAM[00000008] = 36611 +省略... +``` + +这代表总共运行了 5479 个周期,3599 条指令, 100*cpi=152(平均运行每条指令需要1.52个周期),最后死循环停在了 pc/4=2719 的为止。依照**表25**可知测试成功。 + +另外,你还可以按照 `TbRv32iCPU.bsv` 中注释的指示,加入 ibus 和 dbus 的请求停顿和响应停顿,看看测试是否还能成功。(我验证过各种停顿的组合情况下,均成功) **Verilog 综合结果**: -生成的 `mkRv32iCPU.v` 在 Altera Cyclone IV EP4CE115F29C8 上占用 5229 LE (logic elements),占总量的5%。时钟频率达到 77MHz 。 +生成的 `mkRv32iCPU.v` 在 Altera Cyclone IV EP4CE115F29C8 上占用 5312 LE (logic elements),占总量的5%。时钟频率达到 77MHz 。 @@ -6762,40 +6941,61 @@ bsvbuild.sh -bs mkTb Rv32iCPU.bsv 代码目录: `src/JpegEncoder` +- `JpegEncoder.bsv` 包含 JPEG 图像压缩器模块 `mkJpegEncoder` 。 +- `DoubleBuffer.bsv` 包含多态双缓冲模块 `mkDoubleBuffer` ,被 `mkJpegEncoder` 调用。 +- `TbJpegEncoder.bsv` 包含仿真顶层模块 `mkTb` ,是 `mkJpegEncoder` 的 testbench 。 +- `PgmReader.bsv` 包含用于读取 .pgm(未压缩灰度图文件)的模块,仅限于仿真使用,被 `mkTb` 调用。 +- `img` 目录包含一些 .pgm 文件,用来在仿真时被送入 `mkJpegEncoder` 进行压缩。 +- `python/txt2jpg.py` 转换工具,用于把仿真生成的包含十六进制数的文本文件转化为二进制文件(.jpg图像是二进制文件)。 +- `python/jpeg_encoder.py` 是 JPEG 图像压缩器的软件代码实现,硬件模块 `mkJpegEncoder` 是根据它编写的。 + +目的:展示如何用 BSV 优雅地实现 JPEG 图像压缩器。 + +核心知识点: + +- 双缓冲 +- 矩阵乘法 +- 多态的应用 +- Vector 的应用 + ### 原理介绍 该模块根据 JPEG 图像压缩算法的 python 代码 `src/JpegEncoder/python/jpeg_encoder.py` 编写。 能输入图像(8bit灰度图)的原始像素,输出 JPEG 压缩流(带有 `.jpg` 文件头尾)。 -主要思想是双缓冲(用多态模块实现)、 Vector 的各种运用。 - -后续补充…… +> 留待后续补充…… ### 结果展示 **仿真**: -mkTb模块会读取并解析原始像素文件(不压缩的 `.pgm` 格式),把像素输入到 `JpegEncoder` 模块,再从中拿出压缩后的像素,写入一个文本文件 `out.jpg.txt` 。 +testbench 模块会读取并解析原始像素文件(不压缩的 `.pgm` 格式),把像素输入到 `mkJpegEncoder` 模块,再从中拿出压缩后的像素,以十六进制数的形式写入一个文本文件 `out.jpg.txt` 。 -首先在 `JpegEncoder.bsv` 的 327 行指定你想要压缩的文件名,可以任意指定我在 `src/JpegEncoder/img` 文件夹下提供的 `.pgm` 格式的原始图像文件。 +首先指定你想压缩的图像文件,比如是 `img/in003.pgm` ,方法是修改 `TbJpegEncoder.bsv` 中的如下一行: + +```bsv +PgmReader pgm_reader <- mkPgmReader("img/in003.pgm"); +``` 然后运行仿真命令: ```bash -bsvbuild.sh -bs JpegEncoder.bsv +$ bsvbuild.sh -bs mkTb TbJpegEncoder.bsv ``` -会看到产生了一个 `out.jpg.txt` 文件,打开它可以看到文本形式的图像压缩流(笔者还没研究出来 BSV 怎么直接写二进制文件,所以目前只能写在文本文件里)。 +会看到产生了一个 `out.jpg.txt` 文件,打开它可以看到文本形式的十六进制数,它就是图像压缩流。 -然后,用以下命令调用我写的一个 python 脚本,把文本文件转化为二进制文件: +然后,用以下命令调用我写的转换工具,把文本文件转化为二进制文件: ```bash -python python/txt2jpg.py out.jpg.txt out.jpg +$ python python/txt2jpg.py out.jpg.txt out.jpg ``` 得到的 `out.jpg` 可以用图像查看器直接打开查看。 +> 笔者还没研究出来 BSV 怎么直接写二进制文件,所以目前只能写在文本文件里。 + **Verilog 综合结果**: 生成的 `mkJpegEncoder.v` 在 Altera Cyclone IV EP4CE115F29C8 上占用 12533 LE (logic elements),占总量的11%。时钟频率达到 43MHz 。 diff --git a/readme_image/0.bluespec.png b/readme_image/0.bluespec.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e0bbf8d0cc3ca9e3ec4bcf7b316893ff2dadb8 GIT binary patch literal 53231 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 IM6N<$f(jhj)&Kwi literal 0 HcmV?d00001 diff --git a/readme_image/18.rv32i_pipe.png b/readme_image/18.rv32i_pipe.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3390bcdd1acdfb64f56e1f435fbe2fd2318620 GIT binary patch literal 128863 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 literal 0 HcmV?d00001 diff --git a/readme_image/9.bit_coding.png b/readme_image/9.bit_coding.png index 2f64c57129b8831f377da1e927463187989b11d5..78e3dfb982ac7fe908292e43ba90afae594cb76b 100644 GIT binary patch literal 51820 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

2=kAw3_7kjAw ePd89+Kf3_4OLF)Ac>Nys3I$me8PMn)^gjTXcPUl? literal 42478 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�V6uchl)EeQ8_KZJQe?NCYmxP2mDkCB3cu6p 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 diff --git a/src/JpegEncoder/JpegEncoder.bsv b/src/JpegEncoder/JpegEncoder.bsv index f35a1c8..4d7e20e 100644 --- a/src/JpegEncoder/JpegEncoder.bsv +++ b/src/JpegEncoder/JpegEncoder.bsv @@ -6,11 +6,9 @@ package JpegEncoder; import Vector::*; import DReg::*; import BRAM::*; -import StmtFSM::*; // user defined packages import DoubleBuffer::*; -import PgmReader::*; interface JpegEncoder; @@ -19,6 +17,7 @@ interface JpegEncoder; method Bit#(128) get; endinterface + (* synthesize *) (* always_ready="init" *) module mkJpegEncoder (JpegEncoder); @@ -323,41 +322,4 @@ endmodule -module mkTb (); - PgmReader pgm_reader <- mkPgmReader("img/in003.pgm"); - JpegEncoder jpg_encoder <- mkJpegEncoder; - - Reg#(File) jpg_file <- mkReg(InvalidFile); - - mkAutoFSM( seq - action - let fp <- $fopen("out.jpg.txt", "w"); - jpg_file <= fp; - endaction - - action - int width = pgm_reader.image_width; - int height = pgm_reader.image_height; - if(width%8 != 0 || height%8 !=0) begin // 合法性检查, width 和 height 必须是 8 的倍数,否则 JpegEncoder 不支持 - $error(" Error: image width or height is not multiple of 8"); - $finish; - end - jpg_encoder.init( unpack(pack(width/8)[8:0]) , unpack(pack(height/8)[8:0]) ); - endaction - - while(pgm_reader.not_finish) action - let pixels <- pgm_reader.get_pixels; - jpg_encoder.put(pixels); - endaction - - delay(10000); - endseq ); - - rule write_jpg_to_file; - $fwrite(jpg_file, "%032x", jpg_encoder.get); - endrule - -endmodule - - endpackage diff --git a/src/JpegEncoder/TbJpegEncoder.bsv b/src/JpegEncoder/TbJpegEncoder.bsv new file mode 100644 index 0000000..17e6539 --- /dev/null +++ b/src/JpegEncoder/TbJpegEncoder.bsv @@ -0,0 +1,50 @@ +// Copyright(c) 2022 https://github.com/WangXuan95 + +package TbJpegEncoder; + +// standard BSV packages +import StmtFSM::*; + +// user defined packages +import PgmReader::*; +import JpegEncoder::*; + + +module mkTb (); + PgmReader pgm_reader <- mkPgmReader("img/in003.pgm"); + JpegEncoder jpg_encoder <- mkJpegEncoder; + + Reg#(File) jpg_file <- mkReg(InvalidFile); + + mkAutoFSM( seq + action + let fp <- $fopen("out.jpg.txt", "w"); + jpg_file <= fp; + endaction + + action + int width = pgm_reader.image_width; + int height = pgm_reader.image_height; + if(width%8 != 0 || height%8 !=0) begin // 合法性检查, width 和 height 必须是 8 的倍数,否则 JpegEncoder 不支持 + $error(" Error: image width or height is not multiple of 8"); + $finish; + end + jpg_encoder.init( unpack(pack(width/8)[8:0]) , unpack(pack(height/8)[8:0]) ); + endaction + + while(pgm_reader.not_finish) action + let pixels <- pgm_reader.get_pixels; + jpg_encoder.put(pixels); + endaction + + delay(10000); + endseq ); + + rule write_jpg_to_file; + $fwrite(jpg_file, "%032x", jpg_encoder.get); + endrule + +endmodule + + +endpackage diff --git a/src/Rv32iCPU/DFIFOF1.bsv b/src/Rv32iCPU/DFIFOF1.bsv new file mode 100644 index 0000000..ad8b9a9 --- /dev/null +++ b/src/Rv32iCPU/DFIFOF1.bsv @@ -0,0 +1,28 @@ +// Copyright(c) 2022 https://github.com/WangXuan95 + +package DFIFOF1; + +import FIFOF::*; + + +module mkDFIFOF1#(td default_value) (FIFOF#(td)) + provisos (Bits#(td, sz)); + + FIFOF#(td) fifo <- mkUGFIFOF1; + + method td first = fifo.notEmpty ? fifo.first : default_value; + + method Action deq = fifo.deq; + + method Action enq(td value) if(fifo.notFull) = fifo.enq(value); + + method notEmpty = fifo.notEmpty; + + method notFull = fifo.notFull; + + method clear = fifo.clear; + +endmodule + + +endpackage diff --git a/src/Rv32iCPU/Rv32iCPU.bsv b/src/Rv32iCPU/Rv32iCPU.bsv index 54893c6..8d21daa 100644 --- a/src/Rv32iCPU/Rv32iCPU.bsv +++ b/src/Rv32iCPU/Rv32iCPU.bsv @@ -2,11 +2,15 @@ package Rv32iCPU; +import Vector::*; +import DReg::*; import FIFOF::*; import SpecialFIFOs::*; -import BRAM::*; -// 枚举:指令码 OPCODE +import DFIFOF1::*; + + +// 枚举:指令码 OPCODE --------------------------------------------------------------------------------------------- typedef enum { AUIPC = 7'b0010111, // U_TYPE rdst=pc+imm LUI = 7'b0110111, // U_TYPE rdst=imm; JAL = 7'b1101111, // J_TYPE rdst=pc+4, pc= pc+imm, @@ -19,16 +23,16 @@ typedef enum { AUIPC = 7'b0010111, // U_TYPE rdst=pc+imm UNKNOWN = 7'b0 } OpCode deriving(Bits, Eq); -// 结构体:寄存器有效、地址、数据 +// 结构体:寄存器有效、地址、数据 --------------------------------------------------------------------------------------------- typedef struct { - Bool e; - UInt#(5) a; - UInt#(32) d; + Bool e; + Bit#(5) a; + Bit#(32) d; } RegItem deriving(Bits); -// 结构体:指令解码和执行结果 +// 结构体:指令解码和执行结果 --------------------------------------------------------------------------------------------- typedef struct { //struction of Decoded Instrunction item, named InstrItem. - UInt#(32) pc; // fill at IF stage + Bit#(32) pc; // fill at IF stage OpCode opcode; // fill at ID stage RegItem rsrc1; // fill at ID stage RegItem rsrc2; // fill at ID stage @@ -37,108 +41,19 @@ typedef struct { //struction of Decoded Instrunction item, named InstrIte Bit#(3) funct3; // fill at ID stage Bool store; // fill at ID stage Bool load; // fill at ID stage - UInt#(32) immu; // fill at ID stage + Bit#(32) immu; // fill at ID stage } InstrItem deriving(Bits); -// 函数:指令解码 -// 用在 ID阶段 -function InstrItem decode(Bit#(32) instr); - InstrItem item = unpack('0); - - item.funct7 = instr[31:25]; - item.rsrc2.a = unpack(instr[24:20]); - item.rsrc1.a = unpack(instr[19:15]); - item.funct3 = instr[14:12]; - item.rdst.a = unpack(instr[11:7]); - item.opcode = unpack(instr[6:0]); - - item.store = item.opcode == STORE; - item.load = item.rdst.a != 0 && item.opcode == LOAD; - item.rdst.e = item.rdst.a != 0 && (item.opcode == LOAD || item.opcode == JAL || item.opcode == JALR || item.opcode == LUI || item.opcode == AUIPC || item.opcode == ALI || item.opcode == ALR ); - item.rsrc2.e = item.opcode == ALR || item.opcode == STORE || item.opcode == BRANCH; - item.rsrc1.e = item.opcode == ALI || item.opcode == LOAD || item.opcode == JALR || item.rsrc2.e; - - int imms = case(item.opcode) - AUIPC : return unpack({instr[31:12], 12'h0}); // U_TYPE - LUI : return unpack({instr[31:12], 12'h0}); // U_TYPE - ALI : return extend(unpack(instr[31:20])); // I_TYPE - LOAD : return extend(unpack(instr[31:20])); // I_TYPE - JALR : return extend(unpack(instr[31:20])); // I_TYPE - STORE : return extend(unpack({instr[31:25], instr[11:7]})); // S_TYPE - BRANCH : return extend(unpack({instr[31], instr[7], instr[30:25], instr[11:8], 1'b0})); // B_TYPE - JAL : return extend(unpack({instr[31], instr[19:12], instr[20], instr[30:21], 1'b0})); // J_TYPE - default: return 0; - endcase; - item.immu = unpack(pack(imms)); - - return item; -endfunction - -// 函数:判断 BRANCH 类指令是否跳转 -// 用在 EX阶段 -function Bool is_branch(InstrItem item); - int item_rsrc1_s = unpack(pack(item.rsrc1.d)); - int item_rsrc2_s = unpack(pack(item.rsrc2.d)); - return case(item.funct3) - 3'b000 : return item.rsrc1.d == item.rsrc2.d; // BEQ - 3'b001 : return item.rsrc1.d != item.rsrc2.d; // BNE - 3'b100 : return item_rsrc1_s < item_rsrc2_s; // BLT - 3'b101 : return item_rsrc1_s >= item_rsrc2_s; // BGE - 3'b110 : return item.rsrc1.d < item.rsrc2.d; // BLTU - 3'b111 : return item.rsrc1.d >= item.rsrc2.d; // BGEU - default: return False; - endcase; -endfunction - -// 函数:ALU,得到算术逻辑计算结果 -// 用在 EX阶段 -function UInt#(32) alu(InstrItem item); - UInt#(5) shamti = truncate(item.immu); - UInt#(5) shamtr = truncate(item.rsrc2.d); - int item_rsrc1_s = unpack(pack(item.rsrc1.d)); - int item_rsrc2_s = unpack(pack(item.rsrc2.d)); - int imms = unpack(pack(item.immu)); - return case( {item.funct7, item.funct3, pack(item.opcode)} ) matches - 17'b???????_???_110?111 : return item.pc + 4; // JAL, JALR - 17'b???????_???_0110111 : return item.immu; // LUI - 17'b???????_???_0010111 : return item.pc + item.immu; // AUIPC - 17'b0000000_000_0110011 : return item.rsrc1.d + item.rsrc2.d; // ADD - 17'b???????_000_0010011 : return item.rsrc1.d + item.immu; // ADDI - 17'b0100000_000_0110011 : return item.rsrc1.d - item.rsrc2.d; // SUB - 17'b0000000_100_0110011 : return item.rsrc1.d ^ item.rsrc2.d; // XOR - 17'b???????_100_0010011 : return item.rsrc1.d ^ item.immu; // XORI - 17'b0000000_110_0110011 : return item.rsrc1.d | item.rsrc2.d; // OR - 17'b???????_110_0010011 : return item.rsrc1.d | item.immu; // ORI - 17'b0000000_111_0110011 : return item.rsrc1.d & item.rsrc2.d; // AND - 17'b???????_111_0010011 : return item.rsrc1.d & item.immu; // ANDI - 17'b0000000_001_0110011 : return item.rsrc1.d << shamtr; // SLL - 17'b0000000_001_0010011 : return item.rsrc1.d << shamti; // SLLI - 17'b0000000_101_0110011 : return item.rsrc1.d >> shamtr; // SRL - 17'b0000000_101_0010011 : return item.rsrc1.d >> shamti; // SRL - 17'b0100000_101_0110011 : return unpack(pack(item_rsrc1_s >> shamtr)); // SRA - 17'b0100000_101_0010011 : return unpack(pack(item_rsrc1_s >> shamti)); // SRAI - 17'b0000000_010_0110011 : return (item_rsrc1_s < item_rsrc2_s) ? 1 : 0; // SLT - 17'b???????_010_0010011 : return (item_rsrc1_s < imms ) ? 1 : 0; // SLTI - 17'b0000000_011_0110011 : return (item.rsrc1.d < item.rsrc2.d) ? 1 : 0; // SLTU - 17'b???????_011_0010011 : return (item.rsrc1.d < item.immu ) ? 1 : 0; // SLTIU - default : return 0; - endcase; -endfunction - - -// 接口: CPU 的接口 +// 接口: CPU 的接口 --------------------------------------------------------------------------------------------- interface CPU_ifc; - // instruction-bus methods - method UInt#(32) ibus_addr; // instruction-bus request, return addr (i.e. PC) - method Action ibus_next; // instruction-bus request ready - method Action ibus_rdata(UInt#(32) instr); // instruction-bus response, parameter is rdata (i.e. instruction) - // data-bus methods - method Tuple3#(Bool, UInt#(32), UInt#(32)) dbus_addr_wdata; // data-bus request, return (is_write?, addr, wdata) - method Action dbus_next; // data-bus request ready - method Action dbus_rdata(UInt#(32) read_data); // data-bus response rdata, parameter is rdata (only response when is_write=False) - // CPU boot - method Action boot(UInt#(32) boot_addr); // cpu boot + method Action boot(Bit#(32) boot_addr); // CPU boot + method Bit#(32) ibus_req; // instruction-bus request, return addr (i.e. PC) + method Action ibus_reqx; // instruction-bus request ready + method Action ibus_resp(Bit#(32) rdata); // instruction-bus response, parameter is rdata (i.e. instruction) + method Tuple4#(Bool, Bit#(4), Bit#(32), Bit#(32)) dbus_req; // data-bus request, return (is_write?, byte_en, addr, wdata) + method Action dbus_reqx; // data-bus request ready + method Action dbus_resp(Bit#(32) rdata); // data-bus response rdata, parameter is rdata (only response when is_write=False) endinterface @@ -152,170 +67,216 @@ endinterface // 单字节、双字节 Load 和 Store,只支持四字节 Load 和 Store。 // (* synthesize *) +(* always_ready = "boot" *) module mkRv32iCPU (CPU_ifc); - // Register file 32bit*32 - Reg#(UInt#(32)) regfile [32]; - for (Integer i=0; i<32; i=i+1) - regfile[i] <- mkReg(0); + + // 函数:指令解码 --------------------------------------------------------------------------------------------- + // 用在 ID段 + function InstrItem decode(Bit#(32) instr); + InstrItem item = unpack('0); + + item.funct7 = instr[31:25]; + item.rsrc2.a = instr[24:20]; + item.rsrc1.a = instr[19:15]; + item.funct3 = instr[14:12]; + item.rdst.a = instr[11:7]; + item.opcode = unpack(instr[6:0]); + + item.store = item.opcode == STORE; + item.load = item.rdst.a != 0 && item.opcode == LOAD; + item.rdst.e = item.rdst.a != 0 && (item.opcode == LOAD || item.opcode == JAL || item.opcode == JALR || item.opcode == LUI || item.opcode == AUIPC || item.opcode == ALI || item.opcode == ALR ); + item.rsrc2.e = item.opcode == ALR || item.opcode == STORE || item.opcode == BRANCH; + item.rsrc1.e = item.opcode == ALI || item.opcode == LOAD || item.opcode == JALR || item.rsrc2.e; + + int imms = case(item.opcode) + AUIPC : return unpack({instr[31:12], 12'h0}); // U_TYPE + LUI : return unpack({instr[31:12], 12'h0}); // U_TYPE + ALI : return extend(unpack(instr[31:20])); // I_TYPE + LOAD : return extend(unpack(instr[31:20])); // I_TYPE + JALR : return extend(unpack(instr[31:20])); // I_TYPE + STORE : return extend(unpack({instr[31:25], instr[11:7]})); // S_TYPE + BRANCH : return extend(unpack({instr[31], instr[7], instr[30:25], instr[11:8], 1'b0})); // B_TYPE + JAL : return extend(unpack({instr[31], instr[19:12], instr[20], instr[30:21], 1'b0})); // J_TYPE + default: return 0; + endcase; + item.immu = pack(imms); + + return item; + endfunction + + // 函数:判断 BRANCH 类指令是否跳转 --------------------------------------------------------------------------------------------- + // 用在 EX段 + function Bool is_branch(InstrItem item); + int item_rsrc1_s = unpack(item.rsrc1.d); + int item_rsrc2_s = unpack(item.rsrc2.d); + return case(item.funct3) + 3'b000 : return item.rsrc1.d == item.rsrc2.d; // BEQ + 3'b001 : return item.rsrc1.d != item.rsrc2.d; // BNE + 3'b100 : return item_rsrc1_s < item_rsrc2_s; // BLT + 3'b101 : return item_rsrc1_s >= item_rsrc2_s; // BGE + 3'b110 : return item.rsrc1.d < item.rsrc2.d; // BLTU + 3'b111 : return item.rsrc1.d >= item.rsrc2.d; // BGEU + default: return False; + endcase; + endfunction + + // 函数:ALU,得到算术逻辑计算结果 --------------------------------------------------------------------------------------------- + // 用在 EX段 + function Bit#(32) alu(InstrItem item); + Bit#(5) shamti = truncate(item.immu); + Bit#(5) shamtr = truncate(item.rsrc2.d); + int item_rsrc1_s = unpack(item.rsrc1.d); + int item_rsrc2_s = unpack(item.rsrc2.d); + int imms = unpack(item.immu); + return case( {item.funct7, item.funct3, pack(item.opcode)} ) matches + 17'b???????_???_110?111 : return item.pc + 4; // JAL, JALR + 17'b???????_???_0110111 : return item.immu; // LUI + 17'b???????_???_0010111 : return item.pc + item.immu; // AUIPC + 17'b0000000_000_0110011 : return item.rsrc1.d + item.rsrc2.d; // ADD + 17'b???????_000_0010011 : return item.rsrc1.d + item.immu; // ADDI + 17'b0100000_000_0110011 : return item.rsrc1.d - item.rsrc2.d; // SUB + 17'b0000000_100_0110011 : return item.rsrc1.d ^ item.rsrc2.d; // XOR + 17'b???????_100_0010011 : return item.rsrc1.d ^ item.immu; // XORI + 17'b0000000_110_0110011 : return item.rsrc1.d | item.rsrc2.d; // OR + 17'b???????_110_0010011 : return item.rsrc1.d | item.immu; // ORI + 17'b0000000_111_0110011 : return item.rsrc1.d & item.rsrc2.d; // AND + 17'b???????_111_0010011 : return item.rsrc1.d & item.immu; // ANDI + 17'b0000000_001_0110011 : return item.rsrc1.d << shamtr; // SLL + 17'b0000000_001_0010011 : return item.rsrc1.d << shamti; // SLLI + 17'b0000000_101_0110011 : return item.rsrc1.d >> shamtr; // SRL + 17'b0000000_101_0010011 : return item.rsrc1.d >> shamti; // SRL + 17'b0100000_101_0110011 : return unpack(pack(item_rsrc1_s >> shamtr)); // SRA + 17'b0100000_101_0010011 : return unpack(pack(item_rsrc1_s >> shamti)); // SRAI + 17'b0000000_010_0110011 : return (item_rsrc1_s < item_rsrc2_s) ? 1 : 0; // SLT + 17'b???????_010_0010011 : return (item_rsrc1_s < imms ) ? 1 : 0; // SLTI + 17'b0000000_011_0110011 : return (item.rsrc1.d < item.rsrc2.d) ? 1 : 0; // SLTU + 17'b???????_011_0010011 : return (item.rsrc1.d < item.immu ) ? 1 : 0; // SLTIU + default : return 0; + endcase; + endfunction + + // 函数:dbus_adapt_req,对读写请求进行访存转换(构建读写请求) --------------------------------------------------------------------------------------------- + // 用在 EX段 + function Tuple4#(Bool, Bit#(4), Bit#(32), Bit#(32)) dbus_adapt_req(InstrItem item); + Bit#(4) byte_en = 0; + Bit#(32) addr = item.rsrc1.d + item.immu; + Bit#(32) wdata = item.rsrc2.d; + if(item.store) + case (item.funct3) matches + 3'b?00 : begin byte_en = 'b0001 << addr[1:0]; wdata = wdata << {addr[1:0],3'd0}; end + 3'b?01 : begin byte_en = 'b0011 << addr[1:0]; wdata = wdata << {addr[1:0],3'd0}; end + default: byte_en = 'b1111; + endcase + return tuple4(item.store, byte_en, (addr>>2<<2), wdata); + endfunction + + // 函数:dbus_adapt_rdata,对读响应进行访存转换 --------------------------------------------------------------------------------------------- + // 用在 EX段 + function Bit#(32) dbus_adapt_rdata(InstrItem item, Bit#(32) rdata); + Bit#(32) addr = item.rsrc1.d + item.immu; + Bit#(5) shamt = {addr[1:0],3'd0}; + return case (item.funct3) matches + 3'b000 : return signExtend( (rdata>>shamt)[ 7:0] ); + 3'b100 : return zeroExtend( (rdata>>shamt)[ 7:0] ); + 3'b001 : return signExtend( (rdata>>shamt)[15:0] ); + 3'b101 : return zeroExtend( (rdata>>shamt)[15:0] ); + default: return rdata; + endcase; + endfunction + + // Register file 32bit*32 --------------------------------------------------------------------------------------------- + Vector#(32, Reg#(Bit#(32))) regfile <- replicateM( mkReg(0) ); // To get the Next PC --------------------------------------------------------------------------------------------- - FIFOF#(UInt#(32)) if_pc <- mkSizedBypassFIFOF(2); - FIFOF#(UInt#(32)) id_pc <- mkFIFOF; - FIFOF#(UInt#(32)) id_instr <- mkBypassFIFOF; - FIFOF#(InstrItem) ex_reg <- mkDFIFOF(unpack('0)); - FIFOF#(InstrItem) wb_reg <- mkDFIFOF(unpack('0)); - FIFOF#(Tuple3#(Bool, UInt#(32), UInt#(32))) loadstore_fifo <- mkBypassFIFOF; - Wire#(Maybe#(UInt#(32))) wb_load_data <- mkDWire(tagged Invalid); + Reg#(Maybe#(Bit#(32))) boot_pc <- mkDReg(tagged Invalid); + FIFOF#(Bit#(32)) if_pc <- mkSizedBypassFIFOF(2); + FIFOF#(Bit#(32)) id_pc <- mkFIFOF; + FIFOF#(Bit#(32)) id_instr <- mkBypassFIFOF; + FIFOF#(InstrItem) ex <- mkDFIFOF(unpack('0)); + Reg#(RegItem) wb <- mkDReg(unpack('0)); + FIFOF#(InstrItem) ld <- mkDFIFOF1(unpack('0)); + FIFOF#(Tuple4#(Bool, Bit#(4), Bit#(32), Bit#(32))) lsq <- mkBypassFIFOF; (* conflict_free = "ex_stage, id_stage" *) - (* descending_urgency = "boot, ex_stage" *) - (* descending_urgency = "boot, id_stage" *) + (* descending_urgency = "enq_boot_pc, ex_stage" *) + (* descending_urgency = "enq_boot_pc, id_stage" *) + (* mutually_exclusive = "dbus_resp, wb_stage" *) // 2. ID (Instruction Decode) stage ----------------------------------------------------------------- rule id_stage; - InstrItem item = decode(pack(id_instr.first)); + InstrItem item = decode(id_instr.first); item.pc = id_pc.first; // register bypass read logic - UInt#(32) forward_data = wb_reg.first.load ? fromMaybe(0, wb_load_data) : wb_reg.first.rdst.d; - item.rsrc1.d = (item.rsrc1.e && wb_reg.first.rdst.e && item.rsrc1.a == wb_reg.first.rdst.a) ? forward_data : regfile[item.rsrc1.a]; - item.rsrc2.d = (item.rsrc2.e && wb_reg.first.rdst.e && item.rsrc2.a == wb_reg.first.rdst.a) ? forward_data : regfile[item.rsrc2.a]; + item.rsrc1.d = (item.rsrc1.e && wb.e && item.rsrc1.a == wb.a) ? wb.d : regfile[item.rsrc1.a]; + item.rsrc2.d = (item.rsrc2.e && wb.e && item.rsrc2.a == wb.a) ? wb.d : regfile[item.rsrc2.a]; // If there's no hazard, push this instruction to EX stage - if( !( wb_reg.first.load && (item.rsrc1.e && item.rsrc1.a == wb_reg.first.rdst.a || item.rsrc2.e && item.rsrc2.a == wb_reg.first.rdst.a ) && !isValid(wb_load_data) ) && // NO hazard with wb_stage (load data not ready) - !( ex_reg.first.rdst.e && (item.rsrc1.e && item.rsrc1.a == ex_reg.first.rdst.a || item.rsrc2.e && item.rsrc2.a == ex_reg.first.rdst.a ) ) ) begin // NO hazard with ex_stage + if( !( ld.first.load && (item.rsrc1.e && item.rsrc1.a == ld.first.rdst.a || item.rsrc2.e && item.rsrc2.a == ld.first.rdst.a) ) && // NO hazard with wb_stage + !( ex.first.rdst.e && (item.rsrc1.e && item.rsrc1.a == ex.first.rdst.a || item.rsrc2.e && item.rsrc2.a == ex.first.rdst.a) ) ) begin // NO hazard with ex_stage id_instr.deq; id_pc.deq; - ex_reg.enq(item); + ex.enq(item); if(item.opcode != JALR && item.opcode != BRANCH) if_pc.enq( item.opcode==JAL ? item.pc+item.immu : item.pc+4 ); end endrule // 3. EX&MEM (Execute and Memory Access) stage ----------------------------------------------------------------- - rule ex_stage; - InstrItem item = ex_reg.first; - ex_reg.deq; - if(item.opcode == JALR) - if_pc.enq( item.rsrc1.d + item.immu ); - else if(item.opcode == BRANCH) - if_pc.enq( item.pc + (is_branch(item) ? item.immu : 4) ); + rule ex_stage; + ex.deq; + InstrItem item = ex.first; + + case( item.opcode ) + JALR : if_pc.enq( item.rsrc1.d + item.immu ); + BRANCH : if_pc.enq( item.pc + (is_branch(item) ? item.immu : 4) ); + endcase - if(item.store || item.load) - loadstore_fifo.enq( tuple3(item.store, item.rsrc1.d+item.immu, item.rsrc2.d) ); - if(item.rdst.e) begin + if(item.store || item.load) begin + lsq.enq( dbus_adapt_req(item) ); + if(item.load) + ld.enq(item); + end else begin item.rdst.d = alu(item); - wb_reg.enq(item); + wb <= item.rdst; end endrule // 4. WB (Register Write Back) stage ----------------------------------------------------------------- - rule wb_stage; - InstrItem item = wb_reg.first; - if(item.load) begin - if(isValid(wb_load_data)) begin - regfile[item.rdst.a] <= fromMaybe(0, wb_load_data); - wb_reg.deq; - end - end else if(item.rdst.e) begin - regfile[item.rdst.a] <= item.rdst.d; - wb_reg.deq; - end + rule wb_stage (wb.e); + regfile[wb.a] <= wb.d; + endrule + + rule enq_boot_pc (isValid(boot_pc)); + if_pc.enq( fromMaybe(0, boot_pc) ); endrule + // CPU boot ----------------------------------------------------------------------------------------------------------------------------------------- + method Action boot(Bit#(32) boot_addr); + boot_pc <= tagged Valid boot_addr; + endmethod + // instr bus interface (methods) ------------------------------------------------------------------------------------------------------------------------------- - method ibus_addr = if_pc.first; + method ibus_req = if_pc.first; - method Action ibus_next; - id_pc.enq(if_pc.first); + method Action ibus_reqx; if_pc.deq; + id_pc.enq(if_pc.first); endmethod - method ibus_rdata = id_instr.enq; + method ibus_resp = id_instr.enq; // data bus interface (methods) ------------------------------------------------------------------------------------------------------------------------------- - method dbus_addr_wdata = loadstore_fifo.first; + method dbus_req = lsq.first; - method dbus_next = loadstore_fifo.deq; - - method Action dbus_rdata(UInt#(32) read_data) if(wb_reg.first.load); - wb_load_data <= tagged Valid read_data; - endmethod + method dbus_reqx = lsq.deq; - // CPU boot (boot) ----------------------------------------------------------------------------------------------------------------------------------------- - method Action boot(UInt#(32) boot_addr); - if_pc.enq( boot_addr ); + method Action dbus_resp(Bit#(32) rdata) if(ld.first.load); + ld.deq; + regfile[ld.first.rdst.a] <= dbus_adapt_rdata(ld.first, rdata); endmethod endmodule - -// 模块:CPU testbench -module mkTb (); - // 指定指令流文件, 仿真时 CPU 会运行其中的指令流 - String instruction_stream_filename = "instruction_stream/instruction_stream_quicksort.txt"; - - BRAM1Port#(UInt#(32), UInt#(32)) instr_ram <- mkBRAM1Server( BRAM_Configure{memorySize:4096, latency:1, outFIFODepth:3, allowWriteResponseBypass:False, loadFormat: tagged Hex instruction_stream_filename} ); - BRAM2Port#(UInt#(32), UInt#(32)) data_ram <- mkBRAM2Server( BRAM_Configure{memorySize:4096, latency:1, outFIFODepth:3, allowWriteResponseBypass:False, loadFormat: None} ); - - CPU_ifc cpu <- mkRv32iCPU; - - UInt#(32) endCycle = 15000; - Reg#(UInt#(32)) cycle <- mkReg(0); // clock cycle count - Reg#(UInt#(32)) count <- mkReg(0); // instruction fetched count - - rule up_cycle; - cycle <= cycle + 1; - if(cycle > endCycle+60) $finish; - endrule - - rule cpu_start (cycle == 0); - cpu.boot(0); - endrule - - // CPU指令总线请求 - rule cpu_instr_request;// (cycle%10==0 || cycle%10==1 || cycle%10==3 || cycle%10==4 || cycle%10==7 || cycle%10==9); // 加入条件,可以验证指令总线停顿功能 - UInt#(32) instr_addr = cpu.ibus_addr; - cpu.ibus_next; - instr_ram.portA.request.put( BRAMRequest{write:False, responseOnWrite:False, address: instr_addr/4, datain: 0} ); - - count <= count + 1; - //if(cycle < endCycle) - // $display("cycle=%7d count=%7d pc/4=%7d", cycle, count, instr_addr/4); - endrule - - // CPU指令总线响应 - rule cpu_instr_read_response; - UInt#(32) instr <- instr_ram.portA.response.get(); - cpu.ibus_rdata(instr); - endrule - - // CPU数据总线请求 - rule cpu_data_request;// (cycle>100 && (cycle%10==0 || cycle%10==2|| cycle%10==5 || cycle%10==7 || cycle%10==8)); // 加入条件,可以验证数据总线停顿功能 - match { .is_write, .addr, .data } = cpu.dbus_addr_wdata; - cpu.dbus_next; - data_ram.portA.request.put( BRAMRequest{write: is_write, responseOnWrite: False, address: addr/4, datain: data} ); - endrule - - // CPU数据总线响应 - rule cpu_data_read_response; - UInt#(32) read_data <- data_ram.portA.response.get(); - cpu.dbus_rdata(read_data); - endrule - - // 仿真的最后,读 dataram 并打印 - rule data_ram_dump_req (cycle >= endCycle && cycle < endCycle+40); - data_ram.portB.request.put( BRAMRequest{write: False, responseOnWrite: False, address: cycle-endCycle, datain: 0} ); - endrule - - // 打印 dataram - rule data_ram_dump_resp; - UInt#(32) read_data <- data_ram.portB.response.get(); - int read_data_signed = unpack(pack(read_data)); - $display("%d", read_data_signed); - endrule - -endmodule - endpackage diff --git a/src/Rv32iCPU/TbRv32iCPU.bsv b/src/Rv32iCPU/TbRv32iCPU.bsv new file mode 100644 index 0000000..741be56 --- /dev/null +++ b/src/Rv32iCPU/TbRv32iCPU.bsv @@ -0,0 +1,88 @@ +// Copyright(c) 2022 https://github.com/WangXuan95 + +package TbRv32iCPU; + +import StmtFSM::*; +import BRAM::*; + +import Rv32iCPU::*; + + +// 模块:CPU testbench +module mkTb (); + + String filename_instruction = "benchmark/qsort_instruction.txt"; // 指定指令流文件, 仿真时 CPU 会运行其中的指令流 + String filename_data = "benchmark/no_data.txt"; // 指定数据流文件, 作为数据 RAM 的初始数据 + Bit#(32) print_data_count = 40; // 在仿真结束前打印数据 RAM 中的前 print_data_count 个数据 + + // 把 latency 从 1 修改为 2 来模拟 ibus 和 dbus 的响应停顿 + BRAM1Port#(Bit#(32), Bit#(32)) instr_ram <- mkBRAM1Server ( BRAM_Configure{memorySize:16384, latency:1, outFIFODepth:3, allowWriteResponseBypass:False, loadFormat: tagged Hex filename_instruction} ); + BRAM2PortBE#(Bit#(32), Bit#(32), 4) data_ram <- mkBRAM2ServerBE( BRAM_Configure{memorySize:16384, latency:1, outFIFODepth:3, allowWriteResponseBypass:False, loadFormat: tagged Hex filename_data } ); + + let cpu <- mkRv32iCPU; + + Reg#(Bit#(32)) cyc <- mkReg(0); + Reg#(Bit#(32)) cnt <- mkReg(0); + Reg#(Bit#(32)) lastpc <- mkReg('1); + + rule up_cycle; + cyc <= cyc + 1; + endrule + + + // 主状态机:组织仿真行为 + mkAutoFSM( seq + cpu.boot(0); + + // 执行指令,在无限跳转到自身时停止 + while ( lastpc != cpu.ibus_req ) seq + action + cpu.ibus_reqx; + instr_ram.portA.request.put( BRAMRequest{write:False, responseOnWrite:False, address: cpu.ibus_req/4, datain: 0} ); + cnt <= cnt + 1; + lastpc <= cpu.ibus_req; + //$display("done: cycle=%7d instructions=%7d pc/4=%7d", cyc, cnt, cpu.ibus_req/4 ); + endaction + //delay(1); // 加入延迟,模拟 ibus 总线请求停顿 + endseq + + delay(9); + + $display("final: cycle=%5d instructions=%5d 100*cpi=%4d pc/4=%5d", cyc, cnt, 100*cyc/cnt, lastpc/4 ); + + // 打印 Data RAM 中的一些数据 + for ( cnt<=0 ; cnt: - 10080: 00000013 nop - 00010084 : 10084: 00000093 li ra,0 10088: 00000113 li sp,0 @@ -2718,5 +2709,3 @@ Disassembly of section .text: 00012350 : 12350: 00000a6f jal s4,12350 - 12354: c0001073 unimp - ... diff --git a/src/Rv32iCPU/instruction_stream/instruction_stream_testA.txt b/src/Rv32iCPU/benchmark/testA_instruction.txt similarity index 99% rename from src/Rv32iCPU/instruction_stream/instruction_stream_testA.txt rename to src/Rv32iCPU/benchmark/testA_instruction.txt index b852efa..a2d4e06 100644 --- a/src/Rv32iCPU/instruction_stream/instruction_stream_testA.txt +++ b/src/Rv32iCPU/benchmark/testA_instruction.txt @@ -1,4 +1,3 @@ -00000013 00000093 00000113 00208f33 @@ -2227,6 +2226,4 @@ ffc30067 00000a6f 00100193 00000a6f -c0001073 -00000000 00000000 diff --git a/src/Rv32iCPU/benchmark/testB_assembly.txt b/src/Rv32iCPU/benchmark/testB_assembly.txt new file mode 100644 index 0000000..1765577 --- /dev/null +++ b/src/Rv32iCPU/benchmark/testB_assembly.txt @@ -0,0 +1,3285 @@ +00010084 : + 10084: 00004097 auipc ra,0x4 + 10088: acc08093 addi ra,ra,-1332 # 13b50 + 1008c: 00008f03 lb t5,0(ra) + 10090: fff00e93 li t4,-1 + 10094: 0ed00193 li gp,237 + 10098: 01df0463 beq t5,t4,100a0 + 1009c: 25d0206f j 12af8 + +000100a0 : + 100a0: 00004097 auipc ra,0x4 + 100a4: ab008093 addi ra,ra,-1360 # 13b50 + 100a8: 00108f03 lb t5,1(ra) + 100ac: 00000e93 li t4,0 + 100b0: 0ee00193 li gp,238 + 100b4: 01df0463 beq t5,t4,100bc + 100b8: 2410206f j 12af8 + +000100bc : + 100bc: 00004097 auipc ra,0x4 + 100c0: a9408093 addi ra,ra,-1388 # 13b50 + 100c4: 00208f03 lb t5,2(ra) + 100c8: ff000e93 li t4,-16 + 100cc: 0ef00193 li gp,239 + 100d0: 01df0463 beq t5,t4,100d8 + 100d4: 2250206f j 12af8 + +000100d8 : + 100d8: 00004097 auipc ra,0x4 + 100dc: a7808093 addi ra,ra,-1416 # 13b50 + 100e0: 00308f03 lb t5,3(ra) + 100e4: 00f00e93 li t4,15 + 100e8: 0f000193 li gp,240 + 100ec: 01df0463 beq t5,t4,100f4 + 100f0: 2090206f j 12af8 + +000100f4 : + 100f4: 00004097 auipc ra,0x4 + 100f8: a5f08093 addi ra,ra,-1441 # 13b53 + 100fc: ffd08f03 lb t5,-3(ra) + 10100: fff00e93 li t4,-1 + 10104: 0f100193 li gp,241 + 10108: 01df0463 beq t5,t4,10110 + 1010c: 1ed0206f j 12af8 + +00010110 : + 10110: 00004097 auipc ra,0x4 + 10114: a4308093 addi ra,ra,-1469 # 13b53 + 10118: ffe08f03 lb t5,-2(ra) + 1011c: 00000e93 li t4,0 + 10120: 0f200193 li gp,242 + 10124: 01df0463 beq t5,t4,1012c + 10128: 1d10206f j 12af8 + +0001012c : + 1012c: 00004097 auipc ra,0x4 + 10130: a2708093 addi ra,ra,-1497 # 13b53 + 10134: fff08f03 lb t5,-1(ra) + 10138: ff000e93 li t4,-16 + 1013c: 0f300193 li gp,243 + 10140: 01df0463 beq t5,t4,10148 + 10144: 1b50206f j 12af8 + +00010148 : + 10148: 00004097 auipc ra,0x4 + 1014c: a0b08093 addi ra,ra,-1525 # 13b53 + 10150: 00008f03 lb t5,0(ra) + 10154: 00f00e93 li t4,15 + 10158: 0f400193 li gp,244 + 1015c: 01df0463 beq t5,t4,10164 + 10160: 1990206f j 12af8 + +00010164 : + 10164: 00004097 auipc ra,0x4 + 10168: 9ec08093 addi ra,ra,-1556 # 13b50 + 1016c: fe008093 addi ra,ra,-32 + 10170: 02008283 lb t0,32(ra) + 10174: fff00e93 li t4,-1 + 10178: 0f500193 li gp,245 + 1017c: 01d28463 beq t0,t4,10184 + 10180: 1790206f j 12af8 + +00010184 : + 10184: 00004097 auipc ra,0x4 + 10188: 9cc08093 addi ra,ra,-1588 # 13b50 + 1018c: ffa08093 addi ra,ra,-6 + 10190: 00708283 lb t0,7(ra) + 10194: 00000e93 li t4,0 + 10198: 0f600193 li gp,246 + 1019c: 01d28463 beq t0,t4,101a4 + 101a0: 1590206f j 12af8 + +000101a4 : + 101a4: 0f700193 li gp,247 + 101a8: 00000213 li tp,0 + 101ac: 00004097 auipc ra,0x4 + 101b0: 9a508093 addi ra,ra,-1627 # 13b51 + 101b4: 00108f03 lb t5,1(ra) + 101b8: 000f0313 mv t1,t5 + 101bc: ff000e93 li t4,-16 + 101c0: 01d30463 beq t1,t4,101c8 + 101c4: 1350206f j 12af8 + 101c8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 101cc: 00200293 li t0,2 + 101d0: fc521ee3 bne tp,t0,101ac + +000101d4 : + 101d4: 0f800193 li gp,248 + 101d8: 00000213 li tp,0 + 101dc: 00004097 auipc ra,0x4 + 101e0: 97608093 addi ra,ra,-1674 # 13b52 + 101e4: 00108f03 lb t5,1(ra) + 101e8: 00000013 nop + 101ec: 000f0313 mv t1,t5 + 101f0: 00f00e93 li t4,15 + 101f4: 01d30463 beq t1,t4,101fc + 101f8: 1010206f j 12af8 + 101fc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10200: 00200293 li t0,2 + 10204: fc521ce3 bne tp,t0,101dc + +00010208 : + 10208: 0f900193 li gp,249 + 1020c: 00000213 li tp,0 + 10210: 00004097 auipc ra,0x4 + 10214: 94008093 addi ra,ra,-1728 # 13b50 + 10218: 00108f03 lb t5,1(ra) + 1021c: 00000013 nop + 10220: 00000013 nop + 10224: 000f0313 mv t1,t5 + 10228: 00000e93 li t4,0 + 1022c: 01d30463 beq t1,t4,10234 + 10230: 0c90206f j 12af8 + 10234: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10238: 00200293 li t0,2 + 1023c: fc521ae3 bne tp,t0,10210 + +00010240 : + 10240: 0fa00193 li gp,250 + 10244: 00000213 li tp,0 + 10248: 00004097 auipc ra,0x4 + 1024c: 90908093 addi ra,ra,-1783 # 13b51 + 10250: 00108f03 lb t5,1(ra) + 10254: ff000e93 li t4,-16 + 10258: 01df0463 beq t5,t4,10260 + 1025c: 09d0206f j 12af8 + 10260: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10264: 00200293 li t0,2 + 10268: fe5210e3 bne tp,t0,10248 + +0001026c : + 1026c: 0fb00193 li gp,251 + 10270: 00000213 li tp,0 + 10274: 00004097 auipc ra,0x4 + 10278: 8de08093 addi ra,ra,-1826 # 13b52 + 1027c: 00000013 nop + 10280: 00108f03 lb t5,1(ra) + 10284: 00f00e93 li t4,15 + 10288: 01df0463 beq t5,t4,10290 + 1028c: 06d0206f j 12af8 + 10290: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10294: 00200293 li t0,2 + 10298: fc521ee3 bne tp,t0,10274 + +0001029c : + 1029c: 0fc00193 li gp,252 + 102a0: 00000213 li tp,0 + 102a4: 00004097 auipc ra,0x4 + 102a8: 8ac08093 addi ra,ra,-1876 # 13b50 + 102ac: 00000013 nop + 102b0: 00000013 nop + 102b4: 00108f03 lb t5,1(ra) + 102b8: 00000e93 li t4,0 + 102bc: 01df0463 beq t5,t4,102c4 + 102c0: 0390206f j 12af8 + 102c4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 102c8: 00200293 li t0,2 + 102cc: fc521ce3 bne tp,t0,102a4 + +000102d0 : + 102d0: 00004297 auipc t0,0x4 + 102d4: 88028293 addi t0,t0,-1920 # 13b50 + 102d8: 00028103 lb sp,0(t0) + 102dc: 00200113 li sp,2 + 102e0: 00200e93 li t4,2 + 102e4: 0fd00193 li gp,253 + 102e8: 01d10463 beq sp,t4,102f0 + 102ec: 00d0206f j 12af8 + +000102f0 : + 102f0: 00004297 auipc t0,0x4 + 102f4: 86028293 addi t0,t0,-1952 # 13b50 + 102f8: 00028103 lb sp,0(t0) + 102fc: 00000013 nop + 10300: 00200113 li sp,2 + 10304: 00200e93 li t4,2 + 10308: 0fe00193 li gp,254 + 1030c: 01d10463 beq sp,t4,10314 + 10310: 7e80206f j 12af8 + +00010314 : + 10314: 00004097 auipc ra,0x4 + 10318: 83c08093 addi ra,ra,-1988 # 13b50 + 1031c: 0000cf03 lbu t5,0(ra) + 10320: 0ff00e93 li t4,255 + 10324: 0ff00193 li gp,255 + 10328: 01df0463 beq t5,t4,10330 + 1032c: 7cc0206f j 12af8 + +00010330 : + 10330: 00004097 auipc ra,0x4 + 10334: 82008093 addi ra,ra,-2016 # 13b50 + 10338: 0010cf03 lbu t5,1(ra) + 1033c: 00000e93 li t4,0 + 10340: 10000193 li gp,256 + 10344: 01df0463 beq t5,t4,1034c + 10348: 7b00206f j 12af8 + +0001034c : + 1034c: 00004097 auipc ra,0x4 + 10350: 80408093 addi ra,ra,-2044 # 13b50 + 10354: 0020cf03 lbu t5,2(ra) + 10358: 0f000e93 li t4,240 + 1035c: 10100193 li gp,257 + 10360: 01df0463 beq t5,t4,10368 + 10364: 7940206f j 12af8 + +00010368 : + 10368: 00003097 auipc ra,0x3 + 1036c: 7e808093 addi ra,ra,2024 # 13b50 + 10370: 0030cf03 lbu t5,3(ra) + 10374: 00f00e93 li t4,15 + 10378: 10200193 li gp,258 + 1037c: 01df0463 beq t5,t4,10384 + 10380: 7780206f j 12af8 + +00010384 : + 10384: 00003097 auipc ra,0x3 + 10388: 7cf08093 addi ra,ra,1999 # 13b53 + 1038c: ffd0cf03 lbu t5,-3(ra) + 10390: 0ff00e93 li t4,255 + 10394: 10300193 li gp,259 + 10398: 01df0463 beq t5,t4,103a0 + 1039c: 75c0206f j 12af8 + +000103a0 : + 103a0: 00003097 auipc ra,0x3 + 103a4: 7b308093 addi ra,ra,1971 # 13b53 + 103a8: ffe0cf03 lbu t5,-2(ra) + 103ac: 00000e93 li t4,0 + 103b0: 10400193 li gp,260 + 103b4: 01df0463 beq t5,t4,103bc + 103b8: 7400206f j 12af8 + +000103bc : + 103bc: 00003097 auipc ra,0x3 + 103c0: 79708093 addi ra,ra,1943 # 13b53 + 103c4: fff0cf03 lbu t5,-1(ra) + 103c8: 0f000e93 li t4,240 + 103cc: 10500193 li gp,261 + 103d0: 01df0463 beq t5,t4,103d8 + 103d4: 7240206f j 12af8 + +000103d8 : + 103d8: 00003097 auipc ra,0x3 + 103dc: 77b08093 addi ra,ra,1915 # 13b53 + 103e0: 0000cf03 lbu t5,0(ra) + 103e4: 00f00e93 li t4,15 + 103e8: 10600193 li gp,262 + 103ec: 01df0463 beq t5,t4,103f4 + 103f0: 7080206f j 12af8 + +000103f4 : + 103f4: 00003097 auipc ra,0x3 + 103f8: 75c08093 addi ra,ra,1884 # 13b50 + 103fc: fe008093 addi ra,ra,-32 + 10400: 0200c283 lbu t0,32(ra) + 10404: 0ff00e93 li t4,255 + 10408: 10700193 li gp,263 + 1040c: 01d28463 beq t0,t4,10414 + 10410: 6e80206f j 12af8 + +00010414 : + 10414: 00003097 auipc ra,0x3 + 10418: 73c08093 addi ra,ra,1852 # 13b50 + 1041c: ffa08093 addi ra,ra,-6 + 10420: 0070c283 lbu t0,7(ra) + 10424: 00000e93 li t4,0 + 10428: 10800193 li gp,264 + 1042c: 01d28463 beq t0,t4,10434 + 10430: 6c80206f j 12af8 + +00010434 : + 10434: 10900193 li gp,265 + 10438: 00000213 li tp,0 + 1043c: 00003097 auipc ra,0x3 + 10440: 71508093 addi ra,ra,1813 # 13b51 + 10444: 0010cf03 lbu t5,1(ra) + 10448: 000f0313 mv t1,t5 + 1044c: 0f000e93 li t4,240 + 10450: 01d30463 beq t1,t4,10458 + 10454: 6a40206f j 12af8 + 10458: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1045c: 00200293 li t0,2 + 10460: fc521ee3 bne tp,t0,1043c + +00010464 : + 10464: 10a00193 li gp,266 + 10468: 00000213 li tp,0 + 1046c: 00003097 auipc ra,0x3 + 10470: 6e608093 addi ra,ra,1766 # 13b52 + 10474: 0010cf03 lbu t5,1(ra) + 10478: 00000013 nop + 1047c: 000f0313 mv t1,t5 + 10480: 00f00e93 li t4,15 + 10484: 01d30463 beq t1,t4,1048c + 10488: 6700206f j 12af8 + 1048c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10490: 00200293 li t0,2 + 10494: fc521ce3 bne tp,t0,1046c + +00010498 : + 10498: 10b00193 li gp,267 + 1049c: 00000213 li tp,0 + 104a0: 00003097 auipc ra,0x3 + 104a4: 6b008093 addi ra,ra,1712 # 13b50 + 104a8: 0010cf03 lbu t5,1(ra) + 104ac: 00000013 nop + 104b0: 00000013 nop + 104b4: 000f0313 mv t1,t5 + 104b8: 00000e93 li t4,0 + 104bc: 01d30463 beq t1,t4,104c4 + 104c0: 6380206f j 12af8 + 104c4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 104c8: 00200293 li t0,2 + 104cc: fc521ae3 bne tp,t0,104a0 + +000104d0 : + 104d0: 10c00193 li gp,268 + 104d4: 00000213 li tp,0 + 104d8: 00003097 auipc ra,0x3 + 104dc: 67908093 addi ra,ra,1657 # 13b51 + 104e0: 0010cf03 lbu t5,1(ra) + 104e4: 0f000e93 li t4,240 + 104e8: 01df0463 beq t5,t4,104f0 + 104ec: 60c0206f j 12af8 + 104f0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 104f4: 00200293 li t0,2 + 104f8: fe5210e3 bne tp,t0,104d8 + +000104fc : + 104fc: 10d00193 li gp,269 + 10500: 00000213 li tp,0 + 10504: 00003097 auipc ra,0x3 + 10508: 64e08093 addi ra,ra,1614 # 13b52 + 1050c: 00000013 nop + 10510: 0010cf03 lbu t5,1(ra) + 10514: 00f00e93 li t4,15 + 10518: 01df0463 beq t5,t4,10520 + 1051c: 5dc0206f j 12af8 + 10520: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10524: 00200293 li t0,2 + 10528: fc521ee3 bne tp,t0,10504 + +0001052c : + 1052c: 10e00193 li gp,270 + 10530: 00000213 li tp,0 + 10534: 00003097 auipc ra,0x3 + 10538: 61c08093 addi ra,ra,1564 # 13b50 + 1053c: 00000013 nop + 10540: 00000013 nop + 10544: 0010cf03 lbu t5,1(ra) + 10548: 00000e93 li t4,0 + 1054c: 01df0463 beq t5,t4,10554 + 10550: 5a80206f j 12af8 + 10554: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10558: 00200293 li t0,2 + 1055c: fc521ce3 bne tp,t0,10534 + +00010560 : + 10560: 00003297 auipc t0,0x3 + 10564: 5f028293 addi t0,t0,1520 # 13b50 + 10568: 0002c103 lbu sp,0(t0) + 1056c: 00200113 li sp,2 + 10570: 00200e93 li t4,2 + 10574: 10f00193 li gp,271 + 10578: 01d10463 beq sp,t4,10580 + 1057c: 57c0206f j 12af8 + +00010580 : + 10580: 00003297 auipc t0,0x3 + 10584: 5d028293 addi t0,t0,1488 # 13b50 + 10588: 0002c103 lbu sp,0(t0) + 1058c: 00000013 nop + 10590: 00200113 li sp,2 + 10594: 00200e93 li t4,2 + 10598: 11000193 li gp,272 + 1059c: 01d10463 beq sp,t4,105a4 + 105a0: 5580206f j 12af8 + +000105a4 : + 105a4: 00003097 auipc ra,0x3 + 105a8: 5bc08093 addi ra,ra,1468 # 13b60 + 105ac: 00009f03 lh t5,0(ra) + 105b0: 0ff00e93 li t4,255 + 105b4: 11100193 li gp,273 + 105b8: 01df0463 beq t5,t4,105c0 + 105bc: 53c0206f j 12af8 + +000105c0 : + 105c0: 00003097 auipc ra,0x3 + 105c4: 5a008093 addi ra,ra,1440 # 13b60 + 105c8: 00209f03 lh t5,2(ra) + 105cc: f0000e93 li t4,-256 + 105d0: 11200193 li gp,274 + 105d4: 01df0463 beq t5,t4,105dc + 105d8: 5200206f j 12af8 + +000105dc : + 105dc: 00003097 auipc ra,0x3 + 105e0: 58408093 addi ra,ra,1412 # 13b60 + 105e4: 00409f03 lh t5,4(ra) + 105e8: 00001eb7 lui t4,0x1 + 105ec: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 105f0: 11300193 li gp,275 + 105f4: 01df0463 beq t5,t4,105fc + 105f8: 5000206f j 12af8 + +000105fc : + 105fc: 00003097 auipc ra,0x3 + 10600: 56408093 addi ra,ra,1380 # 13b60 + 10604: 00609f03 lh t5,6(ra) + 10608: fffffeb7 lui t4,0xfffff + 1060c: 00fe8e93 addi t4,t4,15 # fffff00f <__global_pointer$+0xfffeabc7> + 10610: 11400193 li gp,276 + 10614: 01df0463 beq t5,t4,1061c + 10618: 4e00206f j 12af8 + +0001061c : + 1061c: 00003097 auipc ra,0x3 + 10620: 54a08093 addi ra,ra,1354 # 13b66 + 10624: ffa09f03 lh t5,-6(ra) + 10628: 0ff00e93 li t4,255 + 1062c: 11500193 li gp,277 + 10630: 01df0463 beq t5,t4,10638 + 10634: 4c40206f j 12af8 + +00010638 : + 10638: 00003097 auipc ra,0x3 + 1063c: 52e08093 addi ra,ra,1326 # 13b66 + 10640: ffc09f03 lh t5,-4(ra) + 10644: f0000e93 li t4,-256 + 10648: 11600193 li gp,278 + 1064c: 01df0463 beq t5,t4,10654 + 10650: 4a80206f j 12af8 + +00010654 : + 10654: 00003097 auipc ra,0x3 + 10658: 51208093 addi ra,ra,1298 # 13b66 + 1065c: ffe09f03 lh t5,-2(ra) + 10660: 00001eb7 lui t4,0x1 + 10664: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 10668: 11700193 li gp,279 + 1066c: 01df0463 beq t5,t4,10674 + 10670: 4880206f j 12af8 + +00010674 : + 10674: 00003097 auipc ra,0x3 + 10678: 4f208093 addi ra,ra,1266 # 13b66 + 1067c: 00009f03 lh t5,0(ra) + 10680: fffffeb7 lui t4,0xfffff + 10684: 00fe8e93 addi t4,t4,15 # fffff00f <__global_pointer$+0xfffeabc7> + 10688: 11800193 li gp,280 + 1068c: 01df0463 beq t5,t4,10694 + 10690: 4680206f j 12af8 + +00010694 : + 10694: 00003097 auipc ra,0x3 + 10698: 4cc08093 addi ra,ra,1228 # 13b60 + 1069c: fe008093 addi ra,ra,-32 + 106a0: 02009283 lh t0,32(ra) + 106a4: 0ff00e93 li t4,255 + 106a8: 11900193 li gp,281 + 106ac: 01d28463 beq t0,t4,106b4 + 106b0: 4480206f j 12af8 + +000106b4 : + 106b4: 00003097 auipc ra,0x3 + 106b8: 4ac08093 addi ra,ra,1196 # 13b60 + 106bc: ffb08093 addi ra,ra,-5 + 106c0: 00709283 lh t0,7(ra) + 106c4: f0000e93 li t4,-256 + 106c8: 11a00193 li gp,282 + 106cc: 01d28463 beq t0,t4,106d4 + 106d0: 4280206f j 12af8 + +000106d4 : + 106d4: 11b00193 li gp,283 + 106d8: 00000213 li tp,0 + 106dc: 00003097 auipc ra,0x3 + 106e0: 48608093 addi ra,ra,1158 # 13b62 + 106e4: 00209f03 lh t5,2(ra) + 106e8: 000f0313 mv t1,t5 + 106ec: 00001eb7 lui t4,0x1 + 106f0: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 106f4: 01d30463 beq t1,t4,106fc + 106f8: 4000206f j 12af8 + 106fc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10700: 00200293 li t0,2 + 10704: fc521ce3 bne tp,t0,106dc + +00010708 : + 10708: 11c00193 li gp,284 + 1070c: 00000213 li tp,0 + 10710: 00003097 auipc ra,0x3 + 10714: 45408093 addi ra,ra,1108 # 13b64 + 10718: 00209f03 lh t5,2(ra) + 1071c: 00000013 nop + 10720: 000f0313 mv t1,t5 + 10724: fffffeb7 lui t4,0xfffff + 10728: 00fe8e93 addi t4,t4,15 # fffff00f <__global_pointer$+0xfffeabc7> + 1072c: 01d30463 beq t1,t4,10734 + 10730: 3c80206f j 12af8 + 10734: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10738: 00200293 li t0,2 + 1073c: fc521ae3 bne tp,t0,10710 + +00010740 : + 10740: 11d00193 li gp,285 + 10744: 00000213 li tp,0 + 10748: 00003097 auipc ra,0x3 + 1074c: 41808093 addi ra,ra,1048 # 13b60 + 10750: 00209f03 lh t5,2(ra) + 10754: 00000013 nop + 10758: 00000013 nop + 1075c: 000f0313 mv t1,t5 + 10760: f0000e93 li t4,-256 + 10764: 01d30463 beq t1,t4,1076c + 10768: 3900206f j 12af8 + 1076c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10770: 00200293 li t0,2 + 10774: fc521ae3 bne tp,t0,10748 + +00010778 : + 10778: 11e00193 li gp,286 + 1077c: 00000213 li tp,0 + 10780: 00003097 auipc ra,0x3 + 10784: 3e208093 addi ra,ra,994 # 13b62 + 10788: 00209f03 lh t5,2(ra) + 1078c: 00001eb7 lui t4,0x1 + 10790: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 10794: 01df0463 beq t5,t4,1079c + 10798: 3600206f j 12af8 + 1079c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 107a0: 00200293 li t0,2 + 107a4: fc521ee3 bne tp,t0,10780 + +000107a8 : + 107a8: 11f00193 li gp,287 + 107ac: 00000213 li tp,0 + 107b0: 00003097 auipc ra,0x3 + 107b4: 3b408093 addi ra,ra,948 # 13b64 + 107b8: 00000013 nop + 107bc: 00209f03 lh t5,2(ra) + 107c0: fffffeb7 lui t4,0xfffff + 107c4: 00fe8e93 addi t4,t4,15 # fffff00f <__global_pointer$+0xfffeabc7> + 107c8: 01df0463 beq t5,t4,107d0 + 107cc: 32c0206f j 12af8 + 107d0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 107d4: 00200293 li t0,2 + 107d8: fc521ce3 bne tp,t0,107b0 + +000107dc : + 107dc: 12000193 li gp,288 + 107e0: 00000213 li tp,0 + 107e4: 00003097 auipc ra,0x3 + 107e8: 37c08093 addi ra,ra,892 # 13b60 + 107ec: 00000013 nop + 107f0: 00000013 nop + 107f4: 00209f03 lh t5,2(ra) + 107f8: f0000e93 li t4,-256 + 107fc: 01df0463 beq t5,t4,10804 + 10800: 2f80206f j 12af8 + 10804: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10808: 00200293 li t0,2 + 1080c: fc521ce3 bne tp,t0,107e4 + +00010810 : + 10810: 00003297 auipc t0,0x3 + 10814: 35028293 addi t0,t0,848 # 13b60 + 10818: 00029103 lh sp,0(t0) + 1081c: 00200113 li sp,2 + 10820: 00200e93 li t4,2 + 10824: 12100193 li gp,289 + 10828: 01d10463 beq sp,t4,10830 + 1082c: 2cc0206f j 12af8 + +00010830 : + 10830: 00003297 auipc t0,0x3 + 10834: 33028293 addi t0,t0,816 # 13b60 + 10838: 00029103 lh sp,0(t0) + 1083c: 00000013 nop + 10840: 00200113 li sp,2 + 10844: 00200e93 li t4,2 + 10848: 12200193 li gp,290 + 1084c: 01d10463 beq sp,t4,10854 + 10850: 2a80206f j 12af8 + +00010854 : + 10854: 00003097 auipc ra,0x3 + 10858: 30c08093 addi ra,ra,780 # 13b60 + 1085c: 0000df03 lhu t5,0(ra) + 10860: 0ff00e93 li t4,255 + 10864: 12300193 li gp,291 + 10868: 01df0463 beq t5,t4,10870 + 1086c: 28c0206f j 12af8 + +00010870 : + 10870: 00003097 auipc ra,0x3 + 10874: 2f008093 addi ra,ra,752 # 13b60 + 10878: 0020df03 lhu t5,2(ra) + 1087c: 00010eb7 lui t4,0x10 + 10880: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x180> + 10884: 12400193 li gp,292 + 10888: 01df0463 beq t5,t4,10890 + 1088c: 26c0206f j 12af8 + +00010890 : + 10890: 00003097 auipc ra,0x3 + 10894: 2d008093 addi ra,ra,720 # 13b60 + 10898: 0040df03 lhu t5,4(ra) + 1089c: 00001eb7 lui t4,0x1 + 108a0: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 108a4: 12500193 li gp,293 + 108a8: 01df0463 beq t5,t4,108b0 + 108ac: 24c0206f j 12af8 + +000108b0 : + 108b0: 00003097 auipc ra,0x3 + 108b4: 2b008093 addi ra,ra,688 # 13b60 + 108b8: 0060df03 lhu t5,6(ra) + 108bc: 0000feb7 lui t4,0xf + 108c0: 00fe8e93 addi t4,t4,15 # f00f <_start-0x1071> + 108c4: 12600193 li gp,294 + 108c8: 01df0463 beq t5,t4,108d0 + 108cc: 22c0206f j 12af8 + +000108d0 : + 108d0: 00003097 auipc ra,0x3 + 108d4: 29608093 addi ra,ra,662 # 13b66 + 108d8: ffa0df03 lhu t5,-6(ra) + 108dc: 0ff00e93 li t4,255 + 108e0: 12700193 li gp,295 + 108e4: 01df0463 beq t5,t4,108ec + 108e8: 2100206f j 12af8 + +000108ec : + 108ec: 00003097 auipc ra,0x3 + 108f0: 27a08093 addi ra,ra,634 # 13b66 + 108f4: ffc0df03 lhu t5,-4(ra) + 108f8: 00010eb7 lui t4,0x10 + 108fc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x180> + 10900: 12800193 li gp,296 + 10904: 01df0463 beq t5,t4,1090c + 10908: 1f00206f j 12af8 + +0001090c : + 1090c: 00003097 auipc ra,0x3 + 10910: 25a08093 addi ra,ra,602 # 13b66 + 10914: ffe0df03 lhu t5,-2(ra) + 10918: 00001eb7 lui t4,0x1 + 1091c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 10920: 12900193 li gp,297 + 10924: 01df0463 beq t5,t4,1092c + 10928: 1d00206f j 12af8 + +0001092c : + 1092c: 00003097 auipc ra,0x3 + 10930: 23a08093 addi ra,ra,570 # 13b66 + 10934: 0000df03 lhu t5,0(ra) + 10938: 0000feb7 lui t4,0xf + 1093c: 00fe8e93 addi t4,t4,15 # f00f <_start-0x1071> + 10940: 12a00193 li gp,298 + 10944: 01df0463 beq t5,t4,1094c + 10948: 1b00206f j 12af8 + +0001094c : + 1094c: 00003097 auipc ra,0x3 + 10950: 21408093 addi ra,ra,532 # 13b60 + 10954: fe008093 addi ra,ra,-32 + 10958: 0200d283 lhu t0,32(ra) + 1095c: 0ff00e93 li t4,255 + 10960: 12b00193 li gp,299 + 10964: 01d28463 beq t0,t4,1096c + 10968: 1900206f j 12af8 + +0001096c : + 1096c: 00003097 auipc ra,0x3 + 10970: 1f408093 addi ra,ra,500 # 13b60 + 10974: ffb08093 addi ra,ra,-5 + 10978: 0070d283 lhu t0,7(ra) + 1097c: 00010eb7 lui t4,0x10 + 10980: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x180> + 10984: 12c00193 li gp,300 + 10988: 01d28463 beq t0,t4,10990 + 1098c: 16c0206f j 12af8 + +00010990 : + 10990: 12d00193 li gp,301 + 10994: 00000213 li tp,0 + 10998: 00003097 auipc ra,0x3 + 1099c: 1ca08093 addi ra,ra,458 # 13b62 + 109a0: 0020df03 lhu t5,2(ra) + 109a4: 000f0313 mv t1,t5 + 109a8: 00001eb7 lui t4,0x1 + 109ac: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 109b0: 01d30463 beq t1,t4,109b8 + 109b4: 1440206f j 12af8 + 109b8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 109bc: 00200293 li t0,2 + 109c0: fc521ce3 bne tp,t0,10998 + +000109c4 : + 109c4: 12e00193 li gp,302 + 109c8: 00000213 li tp,0 + 109cc: 00003097 auipc ra,0x3 + 109d0: 19808093 addi ra,ra,408 # 13b64 + 109d4: 0020df03 lhu t5,2(ra) + 109d8: 00000013 nop + 109dc: 000f0313 mv t1,t5 + 109e0: 0000feb7 lui t4,0xf + 109e4: 00fe8e93 addi t4,t4,15 # f00f <_start-0x1071> + 109e8: 01d30463 beq t1,t4,109f0 + 109ec: 10c0206f j 12af8 + 109f0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 109f4: 00200293 li t0,2 + 109f8: fc521ae3 bne tp,t0,109cc + +000109fc : + 109fc: 12f00193 li gp,303 + 10a00: 00000213 li tp,0 + 10a04: 00003097 auipc ra,0x3 + 10a08: 15c08093 addi ra,ra,348 # 13b60 + 10a0c: 0020df03 lhu t5,2(ra) + 10a10: 00000013 nop + 10a14: 00000013 nop + 10a18: 000f0313 mv t1,t5 + 10a1c: 00010eb7 lui t4,0x10 + 10a20: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x180> + 10a24: 01d30463 beq t1,t4,10a2c + 10a28: 0d00206f j 12af8 + 10a2c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a30: 00200293 li t0,2 + 10a34: fc5218e3 bne tp,t0,10a04 + +00010a38 : + 10a38: 13000193 li gp,304 + 10a3c: 00000213 li tp,0 + 10a40: 00003097 auipc ra,0x3 + 10a44: 12208093 addi ra,ra,290 # 13b62 + 10a48: 0020df03 lhu t5,2(ra) + 10a4c: 00001eb7 lui t4,0x1 + 10a50: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0xf090> + 10a54: 01df0463 beq t5,t4,10a5c + 10a58: 0a00206f j 12af8 + 10a5c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a60: 00200293 li t0,2 + 10a64: fc521ee3 bne tp,t0,10a40 + +00010a68 : + 10a68: 13100193 li gp,305 + 10a6c: 00000213 li tp,0 + 10a70: 00003097 auipc ra,0x3 + 10a74: 0f408093 addi ra,ra,244 # 13b64 + 10a78: 00000013 nop + 10a7c: 0020df03 lhu t5,2(ra) + 10a80: 0000feb7 lui t4,0xf + 10a84: 00fe8e93 addi t4,t4,15 # f00f <_start-0x1071> + 10a88: 01df0463 beq t5,t4,10a90 + 10a8c: 06c0206f j 12af8 + 10a90: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a94: 00200293 li t0,2 + 10a98: fc521ce3 bne tp,t0,10a70 + +00010a9c : + 10a9c: 13200193 li gp,306 + 10aa0: 00000213 li tp,0 + 10aa4: 00003097 auipc ra,0x3 + 10aa8: 0bc08093 addi ra,ra,188 # 13b60 + 10aac: 00000013 nop + 10ab0: 00000013 nop + 10ab4: 0020df03 lhu t5,2(ra) + 10ab8: 00010eb7 lui t4,0x10 + 10abc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x180> + 10ac0: 01df0463 beq t5,t4,10ac8 + 10ac4: 0340206f j 12af8 + 10ac8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10acc: 00200293 li t0,2 + 10ad0: fc521ae3 bne tp,t0,10aa4 + +00010ad4 : + 10ad4: 00003297 auipc t0,0x3 + 10ad8: 08c28293 addi t0,t0,140 # 13b60 + 10adc: 0002d103 lhu sp,0(t0) + 10ae0: 00200113 li sp,2 + 10ae4: 00200e93 li t4,2 + 10ae8: 13300193 li gp,307 + 10aec: 01d10463 beq sp,t4,10af4 + 10af0: 0080206f j 12af8 + +00010af4 : + 10af4: 00003297 auipc t0,0x3 + 10af8: 06c28293 addi t0,t0,108 # 13b60 + 10afc: 0002d103 lhu sp,0(t0) + 10b00: 00000013 nop + 10b04: 00200113 li sp,2 + 10b08: 00200e93 li t4,2 + 10b0c: 13400193 li gp,308 + 10b10: 01d10463 beq sp,t4,10b18 + 10b14: 7e50106f j 12af8 + +00010b18 : + 10b18: 000000b7 lui ra,0x0 + 10b1c: 00000e93 li t4,0 + 10b20: 13500193 li gp,309 + 10b24: 01d08463 beq ra,t4,10b2c + 10b28: 7d10106f j 12af8 + +00010b2c : + 10b2c: fffff0b7 lui ra,0xfffff + 10b30: 4010d093 srai ra,ra,0x1 + 10b34: 80000e93 li t4,-2048 + 10b38: 13600193 li gp,310 + 10b3c: 01d08463 beq ra,t4,10b44 + 10b40: 7b90106f j 12af8 + +00010b44 : + 10b44: 7ffff0b7 lui ra,0x7ffff + 10b48: 4140d093 srai ra,ra,0x14 + 10b4c: 7ff00e93 li t4,2047 + 10b50: 13700193 li gp,311 + 10b54: 01d08463 beq ra,t4,10b5c + 10b58: 7a10106f j 12af8 + +00010b5c : + 10b5c: 800000b7 lui ra,0x80000 + 10b60: 4140d093 srai ra,ra,0x14 + 10b64: 80000e93 li t4,-2048 + 10b68: 13800193 li gp,312 + 10b6c: 01d08463 beq ra,t4,10b74 + 10b70: 7890106f j 12af8 + +00010b74 : + 10b74: 80000037 lui zero,0x80000 + 10b78: 00000e93 li t4,0 + 10b7c: 13900193 li gp,313 + 10b80: 01d00463 beq zero,t4,10b88 + 10b84: 7750106f j 12af8 + +00010b88 : + 10b88: 00003097 auipc ra,0x3 + 10b8c: ff808093 addi ra,ra,-8 # 13b80 + 10b90: 0000af03 lw t5,0(ra) + 10b94: 00ff0eb7 lui t4,0xff0 + 10b98: 0ffe8e93 addi t4,t4,255 # ff00ff <__global_pointer$+0xfdbcb7> + 10b9c: 13a00193 li gp,314 + 10ba0: 01df0463 beq t5,t4,10ba8 + 10ba4: 7550106f j 12af8 + +00010ba8 : + 10ba8: 00003097 auipc ra,0x3 + 10bac: fd808093 addi ra,ra,-40 # 13b80 + 10bb0: 0040af03 lw t5,4(ra) + 10bb4: ff010eb7 lui t4,0xff010 + 10bb8: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10bbc: 13b00193 li gp,315 + 10bc0: 01df0463 beq t5,t4,10bc8 + 10bc4: 7350106f j 12af8 + +00010bc8 : + 10bc8: 00003097 auipc ra,0x3 + 10bcc: fb808093 addi ra,ra,-72 # 13b80 + 10bd0: 0080af03 lw t5,8(ra) + 10bd4: 0ff01eb7 lui t4,0xff01 + 10bd8: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 10bdc: 13c00193 li gp,316 + 10be0: 01df0463 beq t5,t4,10be8 + 10be4: 7150106f j 12af8 + +00010be8 : + 10be8: 00003097 auipc ra,0x3 + 10bec: f9808093 addi ra,ra,-104 # 13b80 + 10bf0: 00c0af03 lw t5,12(ra) + 10bf4: f00ffeb7 lui t4,0xf00ff + 10bf8: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 10bfc: 13d00193 li gp,317 + 10c00: 01df0463 beq t5,t4,10c08 + 10c04: 6f50106f j 12af8 + +00010c08 : + 10c08: 00003097 auipc ra,0x3 + 10c0c: f8408093 addi ra,ra,-124 # 13b8c + 10c10: ff40af03 lw t5,-12(ra) + 10c14: 00ff0eb7 lui t4,0xff0 + 10c18: 0ffe8e93 addi t4,t4,255 # ff00ff <__global_pointer$+0xfdbcb7> + 10c1c: 13e00193 li gp,318 + 10c20: 01df0463 beq t5,t4,10c28 + 10c24: 6d50106f j 12af8 + +00010c28 : + 10c28: 00003097 auipc ra,0x3 + 10c2c: f6408093 addi ra,ra,-156 # 13b8c + 10c30: ff80af03 lw t5,-8(ra) + 10c34: ff010eb7 lui t4,0xff010 + 10c38: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10c3c: 13f00193 li gp,319 + 10c40: 01df0463 beq t5,t4,10c48 + 10c44: 6b50106f j 12af8 + +00010c48 : + 10c48: 00003097 auipc ra,0x3 + 10c4c: f4408093 addi ra,ra,-188 # 13b8c + 10c50: ffc0af03 lw t5,-4(ra) + 10c54: 0ff01eb7 lui t4,0xff01 + 10c58: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 10c5c: 14000193 li gp,320 + 10c60: 01df0463 beq t5,t4,10c68 + 10c64: 6950106f j 12af8 + +00010c68 : + 10c68: 00003097 auipc ra,0x3 + 10c6c: f2408093 addi ra,ra,-220 # 13b8c + 10c70: 0000af03 lw t5,0(ra) + 10c74: f00ffeb7 lui t4,0xf00ff + 10c78: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 10c7c: 14100193 li gp,321 + 10c80: 01df0463 beq t5,t4,10c88 + 10c84: 6750106f j 12af8 + +00010c88 : + 10c88: 00003097 auipc ra,0x3 + 10c8c: ef808093 addi ra,ra,-264 # 13b80 + 10c90: fe008093 addi ra,ra,-32 + 10c94: 0200a283 lw t0,32(ra) + 10c98: 00ff0eb7 lui t4,0xff0 + 10c9c: 0ffe8e93 addi t4,t4,255 # ff00ff <__global_pointer$+0xfdbcb7> + 10ca0: 14200193 li gp,322 + 10ca4: 01d28463 beq t0,t4,10cac + 10ca8: 6510106f j 12af8 + +00010cac : + 10cac: 00003097 auipc ra,0x3 + 10cb0: ed408093 addi ra,ra,-300 # 13b80 + 10cb4: ffd08093 addi ra,ra,-3 + 10cb8: 0070a283 lw t0,7(ra) + 10cbc: ff010eb7 lui t4,0xff010 + 10cc0: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10cc4: 14300193 li gp,323 + 10cc8: 01d28463 beq t0,t4,10cd0 + 10ccc: 62d0106f j 12af8 + +00010cd0 : + 10cd0: 14400193 li gp,324 + 10cd4: 00000213 li tp,0 + 10cd8: 00003097 auipc ra,0x3 + 10cdc: eac08093 addi ra,ra,-340 # 13b84 + 10ce0: 0040af03 lw t5,4(ra) + 10ce4: 000f0313 mv t1,t5 + 10ce8: 0ff01eb7 lui t4,0xff01 + 10cec: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 10cf0: 01d30463 beq t1,t4,10cf8 + 10cf4: 6050106f j 12af8 + 10cf8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10cfc: 00200293 li t0,2 + 10d00: fc521ce3 bne tp,t0,10cd8 + +00010d04 : + 10d04: 14500193 li gp,325 + 10d08: 00000213 li tp,0 + 10d0c: 00003097 auipc ra,0x3 + 10d10: e7c08093 addi ra,ra,-388 # 13b88 + 10d14: 0040af03 lw t5,4(ra) + 10d18: 00000013 nop + 10d1c: 000f0313 mv t1,t5 + 10d20: f00ffeb7 lui t4,0xf00ff + 10d24: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 10d28: 01d30463 beq t1,t4,10d30 + 10d2c: 5cd0106f j 12af8 + 10d30: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10d34: 00200293 li t0,2 + 10d38: fc521ae3 bne tp,t0,10d0c + +00010d3c : + 10d3c: 14600193 li gp,326 + 10d40: 00000213 li tp,0 + 10d44: 00003097 auipc ra,0x3 + 10d48: e3c08093 addi ra,ra,-452 # 13b80 + 10d4c: 0040af03 lw t5,4(ra) + 10d50: 00000013 nop + 10d54: 00000013 nop + 10d58: 000f0313 mv t1,t5 + 10d5c: ff010eb7 lui t4,0xff010 + 10d60: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10d64: 01d30463 beq t1,t4,10d6c + 10d68: 5910106f j 12af8 + 10d6c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10d70: 00200293 li t0,2 + 10d74: fc5218e3 bne tp,t0,10d44 + +00010d78 : + 10d78: 14700193 li gp,327 + 10d7c: 00000213 li tp,0 + 10d80: 00003097 auipc ra,0x3 + 10d84: e0408093 addi ra,ra,-508 # 13b84 + 10d88: 0040af03 lw t5,4(ra) + 10d8c: 0ff01eb7 lui t4,0xff01 + 10d90: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 10d94: 01df0463 beq t5,t4,10d9c + 10d98: 5610106f j 12af8 + 10d9c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10da0: 00200293 li t0,2 + 10da4: fc521ee3 bne tp,t0,10d80 + +00010da8 : + 10da8: 14800193 li gp,328 + 10dac: 00000213 li tp,0 + 10db0: 00003097 auipc ra,0x3 + 10db4: dd808093 addi ra,ra,-552 # 13b88 + 10db8: 00000013 nop + 10dbc: 0040af03 lw t5,4(ra) + 10dc0: f00ffeb7 lui t4,0xf00ff + 10dc4: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 10dc8: 01df0463 beq t5,t4,10dd0 + 10dcc: 52d0106f j 12af8 + 10dd0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10dd4: 00200293 li t0,2 + 10dd8: fc521ce3 bne tp,t0,10db0 + +00010ddc : + 10ddc: 14900193 li gp,329 + 10de0: 00000213 li tp,0 + 10de4: 00003097 auipc ra,0x3 + 10de8: d9c08093 addi ra,ra,-612 # 13b80 + 10dec: 00000013 nop + 10df0: 00000013 nop + 10df4: 0040af03 lw t5,4(ra) + 10df8: ff010eb7 lui t4,0xff010 + 10dfc: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10e00: 01df0463 beq t5,t4,10e08 + 10e04: 4f50106f j 12af8 + 10e08: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10e0c: 00200293 li t0,2 + 10e10: fc521ae3 bne tp,t0,10de4 + +00010e14 : + 10e14: 00003297 auipc t0,0x3 + 10e18: d6c28293 addi t0,t0,-660 # 13b80 + 10e1c: 0002a103 lw sp,0(t0) + 10e20: 00200113 li sp,2 + 10e24: 00200e93 li t4,2 + 10e28: 14a00193 li gp,330 + 10e2c: 01d10463 beq sp,t4,10e34 + 10e30: 4c90106f j 12af8 + +00010e34 : + 10e34: 00003297 auipc t0,0x3 + 10e38: d4c28293 addi t0,t0,-692 # 13b80 + 10e3c: 0002a103 lw sp,0(t0) + 10e40: 00000013 nop + 10e44: 00200113 li sp,2 + 10e48: 00200e93 li t4,2 + 10e4c: 14b00193 li gp,331 + 10e50: 01d10463 beq sp,t4,10e58 + 10e54: 4a50106f j 12af8 + +00010e58 : + 10e58: ff0100b7 lui ra,0xff010 + 10e5c: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10e60: 0f0f1137 lui sp,0xf0f1 + 10e64: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 10e68: 0020ef33 or t5,ra,sp + 10e6c: ff100eb7 lui t4,0xff100 + 10e70: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 10e74: 14c00193 li gp,332 + 10e78: 01df0463 beq t5,t4,10e80 + 10e7c: 47d0106f j 12af8 + +00010e80 : + 10e80: 0ff010b7 lui ra,0xff01 + 10e84: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 10e88: f0f0f137 lui sp,0xf0f0f + 10e8c: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 10e90: 0020ef33 or t5,ra,sp + 10e94: fff10eb7 lui t4,0xfff10 + 10e98: ff0e8e93 addi t4,t4,-16 # fff0fff0 <__global_pointer$+0xffefbba8> + 10e9c: 14d00193 li gp,333 + 10ea0: 01df0463 beq t5,t4,10ea8 + 10ea4: 4550106f j 12af8 + +00010ea8 : + 10ea8: 00ff00b7 lui ra,0xff0 + 10eac: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 10eb0: 0f0f1137 lui sp,0xf0f1 + 10eb4: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 10eb8: 0020ef33 or t5,ra,sp + 10ebc: 0fff1eb7 lui t4,0xfff1 + 10ec0: fffe8e93 addi t4,t4,-1 # fff0fff <__global_pointer$+0xffdcbb7> + 10ec4: 14e00193 li gp,334 + 10ec8: 01df0463 beq t5,t4,10ed0 + 10ecc: 42d0106f j 12af8 + +00010ed0 : + 10ed0: f00ff0b7 lui ra,0xf00ff + 10ed4: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 10ed8: f0f0f137 lui sp,0xf0f0f + 10edc: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 10ee0: 0020ef33 or t5,ra,sp + 10ee4: f0fffeb7 lui t4,0xf0fff + 10ee8: 0ffe8e93 addi t4,t4,255 # f0fff0ff <__global_pointer$+0xf0feacb7> + 10eec: 14f00193 li gp,335 + 10ef0: 01df0463 beq t5,t4,10ef8 + 10ef4: 4050106f j 12af8 + +00010ef8 : + 10ef8: ff0100b7 lui ra,0xff010 + 10efc: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10f00: 0f0f1137 lui sp,0xf0f1 + 10f04: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 10f08: 0020e0b3 or ra,ra,sp + 10f0c: ff100eb7 lui t4,0xff100 + 10f10: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 10f14: 15000193 li gp,336 + 10f18: 01d08463 beq ra,t4,10f20 + 10f1c: 3dd0106f j 12af8 + +00010f20 : + 10f20: ff0100b7 lui ra,0xff010 + 10f24: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10f28: 0f0f1137 lui sp,0xf0f1 + 10f2c: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 10f30: 0020e133 or sp,ra,sp + 10f34: ff100eb7 lui t4,0xff100 + 10f38: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 10f3c: 15100193 li gp,337 + 10f40: 01d10463 beq sp,t4,10f48 + 10f44: 3b50106f j 12af8 + +00010f48 : + 10f48: ff0100b7 lui ra,0xff010 + 10f4c: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10f50: 0010e0b3 or ra,ra,ra + 10f54: ff010eb7 lui t4,0xff010 + 10f58: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10f5c: 15200193 li gp,338 + 10f60: 01d08463 beq ra,t4,10f68 + 10f64: 3950106f j 12af8 + +00010f68 : + 10f68: 00000213 li tp,0 + 10f6c: ff0100b7 lui ra,0xff010 + 10f70: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 10f74: 0f0f1137 lui sp,0xf0f1 + 10f78: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 10f7c: 0020ef33 or t5,ra,sp + 10f80: 000f0313 mv t1,t5 + 10f84: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10f88: 00200293 li t0,2 + 10f8c: fe5210e3 bne tp,t0,10f6c + 10f90: ff100eb7 lui t4,0xff100 + 10f94: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 10f98: 15300193 li gp,339 + 10f9c: 01d30463 beq t1,t4,10fa4 + 10fa0: 3590106f j 12af8 + +00010fa4 : + 10fa4: 00000213 li tp,0 + 10fa8: 0ff010b7 lui ra,0xff01 + 10fac: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 10fb0: f0f0f137 lui sp,0xf0f0f + 10fb4: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 10fb8: 0020ef33 or t5,ra,sp + 10fbc: 00000013 nop + 10fc0: 000f0313 mv t1,t5 + 10fc4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10fc8: 00200293 li t0,2 + 10fcc: fc521ee3 bne tp,t0,10fa8 + 10fd0: fff10eb7 lui t4,0xfff10 + 10fd4: ff0e8e93 addi t4,t4,-16 # fff0fff0 <__global_pointer$+0xffefbba8> + 10fd8: 15400193 li gp,340 + 10fdc: 01d30463 beq t1,t4,10fe4 + 10fe0: 3190106f j 12af8 + +00010fe4 : + 10fe4: 00000213 li tp,0 + 10fe8: 00ff00b7 lui ra,0xff0 + 10fec: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 10ff0: 0f0f1137 lui sp,0xf0f1 + 10ff4: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 10ff8: 0020ef33 or t5,ra,sp + 10ffc: 00000013 nop + 11000: 00000013 nop + 11004: 000f0313 mv t1,t5 + 11008: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1100c: 00200293 li t0,2 + 11010: fc521ce3 bne tp,t0,10fe8 + 11014: 0fff1eb7 lui t4,0xfff1 + 11018: fffe8e93 addi t4,t4,-1 # fff0fff <__global_pointer$+0xffdcbb7> + 1101c: 15500193 li gp,341 + 11020: 01d30463 beq t1,t4,11028 + 11024: 2d50106f j 12af8 + +00011028 : + 11028: 00000213 li tp,0 + 1102c: ff0100b7 lui ra,0xff010 + 11030: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 11034: 0f0f1137 lui sp,0xf0f1 + 11038: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 1103c: 0020ef33 or t5,ra,sp + 11040: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11044: 00200293 li t0,2 + 11048: fe5212e3 bne tp,t0,1102c + 1104c: ff100eb7 lui t4,0xff100 + 11050: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 11054: 15600193 li gp,342 + 11058: 01df0463 beq t5,t4,11060 + 1105c: 29d0106f j 12af8 + +00011060 : + 11060: 00000213 li tp,0 + 11064: 0ff010b7 lui ra,0xff01 + 11068: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 1106c: f0f0f137 lui sp,0xf0f0f + 11070: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 11074: 00000013 nop + 11078: 0020ef33 or t5,ra,sp + 1107c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11080: 00200293 li t0,2 + 11084: fe5210e3 bne tp,t0,11064 + 11088: fff10eb7 lui t4,0xfff10 + 1108c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <__global_pointer$+0xffefbba8> + 11090: 15700193 li gp,343 + 11094: 01df0463 beq t5,t4,1109c + 11098: 2610106f j 12af8 + +0001109c : + 1109c: 00000213 li tp,0 + 110a0: 00ff00b7 lui ra,0xff0 + 110a4: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 110a8: 0f0f1137 lui sp,0xf0f1 + 110ac: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 110b0: 00000013 nop + 110b4: 00000013 nop + 110b8: 0020ef33 or t5,ra,sp + 110bc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 110c0: 00200293 li t0,2 + 110c4: fc521ee3 bne tp,t0,110a0 + 110c8: 0fff1eb7 lui t4,0xfff1 + 110cc: fffe8e93 addi t4,t4,-1 # fff0fff <__global_pointer$+0xffdcbb7> + 110d0: 15800193 li gp,344 + 110d4: 01df0463 beq t5,t4,110dc + 110d8: 2210106f j 12af8 + +000110dc : + 110dc: 00000213 li tp,0 + 110e0: ff0100b7 lui ra,0xff010 + 110e4: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 110e8: 00000013 nop + 110ec: 0f0f1137 lui sp,0xf0f1 + 110f0: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 110f4: 0020ef33 or t5,ra,sp + 110f8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 110fc: 00200293 li t0,2 + 11100: fe5210e3 bne tp,t0,110e0 + 11104: ff100eb7 lui t4,0xff100 + 11108: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 1110c: 15900193 li gp,345 + 11110: 01df0463 beq t5,t4,11118 + 11114: 1e50106f j 12af8 + +00011118 : + 11118: 00000213 li tp,0 + 1111c: 0ff010b7 lui ra,0xff01 + 11120: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 11124: 00000013 nop + 11128: f0f0f137 lui sp,0xf0f0f + 1112c: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 11130: 00000013 nop + 11134: 0020ef33 or t5,ra,sp + 11138: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1113c: 00200293 li t0,2 + 11140: fc521ee3 bne tp,t0,1111c + 11144: fff10eb7 lui t4,0xfff10 + 11148: ff0e8e93 addi t4,t4,-16 # fff0fff0 <__global_pointer$+0xffefbba8> + 1114c: 15a00193 li gp,346 + 11150: 01df0463 beq t5,t4,11158 + 11154: 1a50106f j 12af8 + +00011158 : + 11158: 00000213 li tp,0 + 1115c: 00ff00b7 lui ra,0xff0 + 11160: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 11164: 00000013 nop + 11168: 00000013 nop + 1116c: 0f0f1137 lui sp,0xf0f1 + 11170: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 11174: 0020ef33 or t5,ra,sp + 11178: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1117c: 00200293 li t0,2 + 11180: fc521ee3 bne tp,t0,1115c + 11184: 0fff1eb7 lui t4,0xfff1 + 11188: fffe8e93 addi t4,t4,-1 # fff0fff <__global_pointer$+0xffdcbb7> + 1118c: 15b00193 li gp,347 + 11190: 01df0463 beq t5,t4,11198 + 11194: 1650106f j 12af8 + +00011198 : + 11198: 00000213 li tp,0 + 1119c: 0f0f1137 lui sp,0xf0f1 + 111a0: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 111a4: ff0100b7 lui ra,0xff010 + 111a8: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 111ac: 0020ef33 or t5,ra,sp + 111b0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 111b4: 00200293 li t0,2 + 111b8: fe5212e3 bne tp,t0,1119c + 111bc: ff100eb7 lui t4,0xff100 + 111c0: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 111c4: 15c00193 li gp,348 + 111c8: 01df0463 beq t5,t4,111d0 + 111cc: 12d0106f j 12af8 + +000111d0 : + 111d0: 00000213 li tp,0 + 111d4: f0f0f137 lui sp,0xf0f0f + 111d8: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 111dc: 0ff010b7 lui ra,0xff01 + 111e0: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 111e4: 00000013 nop + 111e8: 0020ef33 or t5,ra,sp + 111ec: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 111f0: 00200293 li t0,2 + 111f4: fe5210e3 bne tp,t0,111d4 + 111f8: fff10eb7 lui t4,0xfff10 + 111fc: ff0e8e93 addi t4,t4,-16 # fff0fff0 <__global_pointer$+0xffefbba8> + 11200: 15d00193 li gp,349 + 11204: 01df0463 beq t5,t4,1120c + 11208: 0f10106f j 12af8 + +0001120c : + 1120c: 00000213 li tp,0 + 11210: 0f0f1137 lui sp,0xf0f1 + 11214: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 11218: 00ff00b7 lui ra,0xff0 + 1121c: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 11220: 00000013 nop + 11224: 00000013 nop + 11228: 0020ef33 or t5,ra,sp + 1122c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11230: 00200293 li t0,2 + 11234: fc521ee3 bne tp,t0,11210 + 11238: 0fff1eb7 lui t4,0xfff1 + 1123c: fffe8e93 addi t4,t4,-1 # fff0fff <__global_pointer$+0xffdcbb7> + 11240: 15e00193 li gp,350 + 11244: 01df0463 beq t5,t4,1124c + 11248: 0b10106f j 12af8 + +0001124c : + 1124c: 00000213 li tp,0 + 11250: 0f0f1137 lui sp,0xf0f1 + 11254: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 11258: 00000013 nop + 1125c: ff0100b7 lui ra,0xff010 + 11260: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 11264: 0020ef33 or t5,ra,sp + 11268: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1126c: 00200293 li t0,2 + 11270: fe5210e3 bne tp,t0,11250 + 11274: ff100eb7 lui t4,0xff100 + 11278: f0fe8e93 addi t4,t4,-241 # ff0fff0f <__global_pointer$+0xff0ebac7> + 1127c: 15f00193 li gp,351 + 11280: 01df0463 beq t5,t4,11288 + 11284: 0750106f j 12af8 + +00011288 : + 11288: 00000213 li tp,0 + 1128c: f0f0f137 lui sp,0xf0f0f + 11290: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efaca8> + 11294: 00000013 nop + 11298: 0ff010b7 lui ra,0xff01 + 1129c: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 112a0: 00000013 nop + 112a4: 0020ef33 or t5,ra,sp + 112a8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 112ac: 00200293 li t0,2 + 112b0: fc521ee3 bne tp,t0,1128c + 112b4: fff10eb7 lui t4,0xfff10 + 112b8: ff0e8e93 addi t4,t4,-16 # fff0fff0 <__global_pointer$+0xffefbba8> + 112bc: 16000193 li gp,352 + 112c0: 01df0463 beq t5,t4,112c8 + 112c4: 0350106f j 12af8 + +000112c8 : + 112c8: 00000213 li tp,0 + 112cc: 0f0f1137 lui sp,0xf0f1 + 112d0: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dcac7> + 112d4: 00000013 nop + 112d8: 00000013 nop + 112dc: 00ff00b7 lui ra,0xff0 + 112e0: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 112e4: 0020ef33 or t5,ra,sp + 112e8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 112ec: 00200293 li t0,2 + 112f0: fc521ee3 bne tp,t0,112cc + 112f4: 0fff1eb7 lui t4,0xfff1 + 112f8: fffe8e93 addi t4,t4,-1 # fff0fff <__global_pointer$+0xffdcbb7> + 112fc: 16100193 li gp,353 + 11300: 01df0463 beq t5,t4,11308 + 11304: 7f40106f j 12af8 + +00011308 : + 11308: ff0100b7 lui ra,0xff010 + 1130c: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 11310: 00106133 or sp,zero,ra + 11314: ff010eb7 lui t4,0xff010 + 11318: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 1131c: 16200193 li gp,354 + 11320: 01d10463 beq sp,t4,11328 + 11324: 7d40106f j 12af8 + +00011328 : + 11328: 00ff00b7 lui ra,0xff0 + 1132c: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 11330: 0000e133 or sp,ra,zero + 11334: 00ff0eb7 lui t4,0xff0 + 11338: 0ffe8e93 addi t4,t4,255 # ff00ff <__global_pointer$+0xfdbcb7> + 1133c: 16300193 li gp,355 + 11340: 01d10463 beq sp,t4,11348 + 11344: 7b40106f j 12af8 + +00011348 : + 11348: 000060b3 or ra,zero,zero + 1134c: 00000e93 li t4,0 + 11350: 16400193 li gp,356 + 11354: 01d08463 beq ra,t4,1135c + 11358: 7a00106f j 12af8 + +0001135c : + 1135c: 111110b7 lui ra,0x11111 + 11360: 11108093 addi ra,ra,273 # 11111111 <__global_pointer$+0x110fccc9> + 11364: 22222137 lui sp,0x22222 + 11368: 22210113 addi sp,sp,546 # 22222222 <__global_pointer$+0x2220ddda> + 1136c: 0020e033 or zero,ra,sp + 11370: 00000e93 li t4,0 + 11374: 16500193 li gp,357 + 11378: 01d00463 beq zero,t4,11380 + 1137c: 77c0106f j 12af8 + +00011380 : + 11380: ff0100b7 lui ra,0xff010 + 11384: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 11388: f0f0ef13 ori t5,ra,-241 + 1138c: f0f00e93 li t4,-241 + 11390: 16600193 li gp,358 + 11394: 01df0463 beq t5,t4,1139c + 11398: 7600106f j 12af8 + +0001139c : + 1139c: 0ff010b7 lui ra,0xff01 + 113a0: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 113a4: 0f00ef13 ori t5,ra,240 + 113a8: 0ff01eb7 lui t4,0xff01 + 113ac: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 113b0: 16700193 li gp,359 + 113b4: 01df0463 beq t5,t4,113bc + 113b8: 7400106f j 12af8 + +000113bc : + 113bc: 00ff00b7 lui ra,0xff0 + 113c0: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 113c4: 70f0ef13 ori t5,ra,1807 + 113c8: 00ff0eb7 lui t4,0xff0 + 113cc: 7ffe8e93 addi t4,t4,2047 # ff07ff <__global_pointer$+0xfdc3b7> + 113d0: 16800193 li gp,360 + 113d4: 01df0463 beq t5,t4,113dc + 113d8: 7200106f j 12af8 + +000113dc : + 113dc: f00ff0b7 lui ra,0xf00ff + 113e0: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 113e4: 0f00ef13 ori t5,ra,240 + 113e8: f00ffeb7 lui t4,0xf00ff + 113ec: 0ffe8e93 addi t4,t4,255 # f00ff0ff <__global_pointer$+0xf00eacb7> + 113f0: 16900193 li gp,361 + 113f4: 01df0463 beq t5,t4,113fc + 113f8: 7000106f j 12af8 + +000113fc : + 113fc: ff0100b7 lui ra,0xff010 + 11400: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffbab8> + 11404: 0f00e093 ori ra,ra,240 + 11408: ff010eb7 lui t4,0xff010 + 1140c: ff0e8e93 addi t4,t4,-16 # ff00fff0 <__global_pointer$+0xfeffbba8> + 11410: 16a00193 li gp,362 + 11414: 01d08463 beq ra,t4,1141c + 11418: 6e00106f j 12af8 + +0001141c : + 1141c: 00000213 li tp,0 + 11420: 0ff010b7 lui ra,0xff01 + 11424: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 11428: 0f00ef13 ori t5,ra,240 + 1142c: 000f0313 mv t1,t5 + 11430: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11434: 00200293 li t0,2 + 11438: fe5214e3 bne tp,t0,11420 + 1143c: 0ff01eb7 lui t4,0xff01 + 11440: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 11444: 16b00193 li gp,363 + 11448: 01d30463 beq t1,t4,11450 + 1144c: 6ac0106f j 12af8 + +00011450 : + 11450: 00000213 li tp,0 + 11454: 00ff00b7 lui ra,0xff0 + 11458: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 1145c: 70f0ef13 ori t5,ra,1807 + 11460: 00000013 nop + 11464: 000f0313 mv t1,t5 + 11468: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1146c: 00200293 li t0,2 + 11470: fe5212e3 bne tp,t0,11454 + 11474: 00ff0eb7 lui t4,0xff0 + 11478: 7ffe8e93 addi t4,t4,2047 # ff07ff <__global_pointer$+0xfdc3b7> + 1147c: 16c00193 li gp,364 + 11480: 01d30463 beq t1,t4,11488 + 11484: 6740106f j 12af8 + +00011488 : + 11488: 00000213 li tp,0 + 1148c: f00ff0b7 lui ra,0xf00ff + 11490: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 11494: 0f00ef13 ori t5,ra,240 + 11498: 00000013 nop + 1149c: 00000013 nop + 114a0: 000f0313 mv t1,t5 + 114a4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 114a8: 00200293 li t0,2 + 114ac: fe5210e3 bne tp,t0,1148c + 114b0: f00ffeb7 lui t4,0xf00ff + 114b4: 0ffe8e93 addi t4,t4,255 # f00ff0ff <__global_pointer$+0xf00eacb7> + 114b8: 16d00193 li gp,365 + 114bc: 01d30463 beq t1,t4,114c4 + 114c0: 6380106f j 12af8 + +000114c4 : + 114c4: 00000213 li tp,0 + 114c8: 0ff010b7 lui ra,0xff01 + 114cc: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 114d0: 0f00ef13 ori t5,ra,240 + 114d4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 114d8: 00200293 li t0,2 + 114dc: fe5216e3 bne tp,t0,114c8 + 114e0: 0ff01eb7 lui t4,0xff01 + 114e4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeecba8> + 114e8: 16e00193 li gp,366 + 114ec: 01df0463 beq t5,t4,114f4 + 114f0: 6080106f j 12af8 + +000114f4 : + 114f4: 00000213 li tp,0 + 114f8: 00ff00b7 lui ra,0xff0 + 114fc: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 11500: 00000013 nop + 11504: f0f0ef13 ori t5,ra,-241 + 11508: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1150c: 00200293 li t0,2 + 11510: fe5214e3 bne tp,t0,114f8 + 11514: fff00e93 li t4,-1 + 11518: 16f00193 li gp,367 + 1151c: 01df0463 beq t5,t4,11524 + 11520: 5d80106f j 12af8 + +00011524 : + 11524: 00000213 li tp,0 + 11528: f00ff0b7 lui ra,0xf00ff + 1152c: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00eabc7> + 11530: 00000013 nop + 11534: 00000013 nop + 11538: 0f00ef13 ori t5,ra,240 + 1153c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11540: 00200293 li t0,2 + 11544: fe5212e3 bne tp,t0,11528 + 11548: f00ffeb7 lui t4,0xf00ff + 1154c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <__global_pointer$+0xf00eacb7> + 11550: 17000193 li gp,368 + 11554: 01df0463 beq t5,t4,1155c + 11558: 5a00106f j 12af8 + +0001155c : + 1155c: 0f006093 ori ra,zero,240 + 11560: 0f000e93 li t4,240 + 11564: 17100193 li gp,369 + 11568: 01d08463 beq ra,t4,11570 + 1156c: 58c0106f j 12af8 + +00011570 : + 11570: 00ff00b7 lui ra,0xff0 + 11574: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdbcb7> + 11578: 70f0e013 ori zero,ra,1807 + 1157c: 00000e93 li t4,0 + 11580: 17200193 li gp,370 + 11584: 01d00463 beq zero,t4,1158c + 11588: 5700106f j 12af8 + +0001158c : + 1158c: 00002097 auipc ra,0x2 + 11590: 5c808093 addi ra,ra,1480 # 13b54 + 11594: faa00113 li sp,-86 + 11598: 00208023 sb sp,0(ra) + 1159c: 00008f03 lb t5,0(ra) + 115a0: faa00e93 li t4,-86 + 115a4: 17300193 li gp,371 + 115a8: 01df0463 beq t5,t4,115b0 + 115ac: 54c0106f j 12af8 + +000115b0 : + 115b0: 00002097 auipc ra,0x2 + 115b4: 5a408093 addi ra,ra,1444 # 13b54 + 115b8: 00000113 li sp,0 + 115bc: 002080a3 sb sp,1(ra) + 115c0: 00108f03 lb t5,1(ra) + 115c4: 00000e93 li t4,0 + 115c8: 17400193 li gp,372 + 115cc: 01df0463 beq t5,t4,115d4 + 115d0: 5280106f j 12af8 + +000115d4 : + 115d4: 00002097 auipc ra,0x2 + 115d8: 58008093 addi ra,ra,1408 # 13b54 + 115dc: fffff137 lui sp,0xfffff + 115e0: fa010113 addi sp,sp,-96 # ffffefa0 <__global_pointer$+0xfffeab58> + 115e4: 00208123 sb sp,2(ra) + 115e8: 00209f03 lh t5,2(ra) + 115ec: fffffeb7 lui t4,0xfffff + 115f0: fa0e8e93 addi t4,t4,-96 # ffffefa0 <__global_pointer$+0xfffeab58> + 115f4: 17500193 li gp,373 + 115f8: 01df0463 beq t5,t4,11600 + 115fc: 4fc0106f j 12af8 + +00011600 : + 11600: 00002097 auipc ra,0x2 + 11604: 55408093 addi ra,ra,1364 # 13b54 + 11608: 00a00113 li sp,10 + 1160c: 002081a3 sb sp,3(ra) + 11610: 00308f03 lb t5,3(ra) + 11614: 00a00e93 li t4,10 + 11618: 17600193 li gp,374 + 1161c: 01df0463 beq t5,t4,11624 + 11620: 4d80106f j 12af8 + +00011624 : + 11624: 00002097 auipc ra,0x2 + 11628: 53708093 addi ra,ra,1335 # 13b5b + 1162c: faa00113 li sp,-86 + 11630: fe208ea3 sb sp,-3(ra) + 11634: ffd08f03 lb t5,-3(ra) + 11638: faa00e93 li t4,-86 + 1163c: 17700193 li gp,375 + 11640: 01df0463 beq t5,t4,11648 + 11644: 4b40106f j 12af8 + +00011648 : + 11648: 00002097 auipc ra,0x2 + 1164c: 51308093 addi ra,ra,1299 # 13b5b + 11650: 00000113 li sp,0 + 11654: fe208f23 sb sp,-2(ra) + 11658: ffe08f03 lb t5,-2(ra) + 1165c: 00000e93 li t4,0 + 11660: 17800193 li gp,376 + 11664: 01df0463 beq t5,t4,1166c + 11668: 4900106f j 12af8 + +0001166c : + 1166c: 00002097 auipc ra,0x2 + 11670: 4ef08093 addi ra,ra,1263 # 13b5b + 11674: fa000113 li sp,-96 + 11678: fe208fa3 sb sp,-1(ra) + 1167c: fff08f03 lb t5,-1(ra) + 11680: fa000e93 li t4,-96 + 11684: 17900193 li gp,377 + 11688: 01df0463 beq t5,t4,11690 + 1168c: 46c0106f j 12af8 + +00011690 : + 11690: 00002097 auipc ra,0x2 + 11694: 4cb08093 addi ra,ra,1227 # 13b5b + 11698: 00a00113 li sp,10 + 1169c: 00208023 sb sp,0(ra) + 116a0: 00008f03 lb t5,0(ra) + 116a4: 00a00e93 li t4,10 + 116a8: 17a00193 li gp,378 + 116ac: 01df0463 beq t5,t4,116b4 + 116b0: 4480106f j 12af8 + +000116b4 : + 116b4: 00002097 auipc ra,0x2 + 116b8: 4a808093 addi ra,ra,1192 # 13b5c + 116bc: 12345137 lui sp,0x12345 + 116c0: 67810113 addi sp,sp,1656 # 12345678 <__global_pointer$+0x12331230> + 116c4: fe008213 addi tp,ra,-32 + 116c8: 02220023 sb sp,32(tp) # 20 <_start-0x10060> + 116cc: 00008283 lb t0,0(ra) + 116d0: 07800e93 li t4,120 + 116d4: 17b00193 li gp,379 + 116d8: 01d28463 beq t0,t4,116e0 + 116dc: 41c0106f j 12af8 + +000116e0 : + 116e0: 00002097 auipc ra,0x2 + 116e4: 47c08093 addi ra,ra,1148 # 13b5c + 116e8: 00003137 lui sp,0x3 + 116ec: 09810113 addi sp,sp,152 # 3098 <_start-0xcfe8> + 116f0: ffa08093 addi ra,ra,-6 + 116f4: 002083a3 sb sp,7(ra) + 116f8: 00002217 auipc tp,0x2 + 116fc: 46520213 addi tp,tp,1125 # 13b5d + 11700: 00020283 lb t0,0(tp) # 0 <_start-0x10080> + 11704: f9800e93 li t4,-104 + 11708: 17c00193 li gp,380 + 1170c: 01d28463 beq t0,t4,11714 + 11710: 3e80106f j 12af8 + +00011714 : + 11714: 17d00193 li gp,381 + 11718: 00000213 li tp,0 + 1171c: fdd00093 li ra,-35 + 11720: 00002117 auipc sp,0x2 + 11724: 43410113 addi sp,sp,1076 # 13b54 + 11728: 00110023 sb ra,0(sp) + 1172c: 00010f03 lb t5,0(sp) + 11730: fdd00e93 li t4,-35 + 11734: 01df0463 beq t5,t4,1173c + 11738: 3c00106f j 12af8 + 1173c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11740: 00200293 li t0,2 + 11744: fc521ce3 bne tp,t0,1171c + +00011748 : + 11748: 17e00193 li gp,382 + 1174c: 00000213 li tp,0 + 11750: fcd00093 li ra,-51 + 11754: 00002117 auipc sp,0x2 + 11758: 40010113 addi sp,sp,1024 # 13b54 + 1175c: 00000013 nop + 11760: 001100a3 sb ra,1(sp) + 11764: 00110f03 lb t5,1(sp) + 11768: fcd00e93 li t4,-51 + 1176c: 01df0463 beq t5,t4,11774 + 11770: 3880106f j 12af8 + 11774: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11778: 00200293 li t0,2 + 1177c: fc521ae3 bne tp,t0,11750 + +00011780 : + 11780: 17f00193 li gp,383 + 11784: 00000213 li tp,0 + 11788: fcc00093 li ra,-52 + 1178c: 00002117 auipc sp,0x2 + 11790: 3c810113 addi sp,sp,968 # 13b54 + 11794: 00000013 nop + 11798: 00000013 nop + 1179c: 00110123 sb ra,2(sp) + 117a0: 00210f03 lb t5,2(sp) + 117a4: fcc00e93 li t4,-52 + 117a8: 01df0463 beq t5,t4,117b0 + 117ac: 34c0106f j 12af8 + 117b0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 117b4: 00200293 li t0,2 + 117b8: fc5218e3 bne tp,t0,11788 + +000117bc : + 117bc: 18000193 li gp,384 + 117c0: 00000213 li tp,0 + 117c4: fbc00093 li ra,-68 + 117c8: 00000013 nop + 117cc: 00002117 auipc sp,0x2 + 117d0: 38810113 addi sp,sp,904 # 13b54 + 117d4: 001101a3 sb ra,3(sp) + 117d8: 00310f03 lb t5,3(sp) + 117dc: fbc00e93 li t4,-68 + 117e0: 01df0463 beq t5,t4,117e8 + 117e4: 3140106f j 12af8 + 117e8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 117ec: 00200293 li t0,2 + 117f0: fc521ae3 bne tp,t0,117c4 + +000117f4 : + 117f4: 18100193 li gp,385 + 117f8: 00000213 li tp,0 + 117fc: fbb00093 li ra,-69 + 11800: 00000013 nop + 11804: 00002117 auipc sp,0x2 + 11808: 35010113 addi sp,sp,848 # 13b54 + 1180c: 00000013 nop + 11810: 00110223 sb ra,4(sp) + 11814: 00410f03 lb t5,4(sp) + 11818: fbb00e93 li t4,-69 + 1181c: 01df0463 beq t5,t4,11824 + 11820: 2d80106f j 12af8 + 11824: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11828: 00200293 li t0,2 + 1182c: fc5218e3 bne tp,t0,117fc + +00011830 : + 11830: 18200193 li gp,386 + 11834: 00000213 li tp,0 + 11838: fab00093 li ra,-85 + 1183c: 00000013 nop + 11840: 00000013 nop + 11844: 00002117 auipc sp,0x2 + 11848: 31010113 addi sp,sp,784 # 13b54 + 1184c: 001102a3 sb ra,5(sp) + 11850: 00510f03 lb t5,5(sp) + 11854: fab00e93 li t4,-85 + 11858: 01df0463 beq t5,t4,11860 + 1185c: 29c0106f j 12af8 + 11860: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11864: 00200293 li t0,2 + 11868: fc5218e3 bne tp,t0,11838 + +0001186c : + 1186c: 18300193 li gp,387 + 11870: 00000213 li tp,0 + 11874: 00002117 auipc sp,0x2 + 11878: 2e010113 addi sp,sp,736 # 13b54 + 1187c: 03300093 li ra,51 + 11880: 00110023 sb ra,0(sp) + 11884: 00010f03 lb t5,0(sp) + 11888: 03300e93 li t4,51 + 1188c: 01df0463 beq t5,t4,11894 + 11890: 2680106f j 12af8 + 11894: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11898: 00200293 li t0,2 + 1189c: fc521ce3 bne tp,t0,11874 + +000118a0 : + 118a0: 18400193 li gp,388 + 118a4: 00000213 li tp,0 + 118a8: 00002117 auipc sp,0x2 + 118ac: 2ac10113 addi sp,sp,684 # 13b54 + 118b0: 02300093 li ra,35 + 118b4: 00000013 nop + 118b8: 001100a3 sb ra,1(sp) + 118bc: 00110f03 lb t5,1(sp) + 118c0: 02300e93 li t4,35 + 118c4: 01df0463 beq t5,t4,118cc + 118c8: 2300106f j 12af8 + 118cc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 118d0: 00200293 li t0,2 + 118d4: fc521ae3 bne tp,t0,118a8 + +000118d8 : + 118d8: 18500193 li gp,389 + 118dc: 00000213 li tp,0 + 118e0: 00002117 auipc sp,0x2 + 118e4: 27410113 addi sp,sp,628 # 13b54 + 118e8: 02200093 li ra,34 + 118ec: 00000013 nop + 118f0: 00000013 nop + 118f4: 00110123 sb ra,2(sp) + 118f8: 00210f03 lb t5,2(sp) + 118fc: 02200e93 li t4,34 + 11900: 01df0463 beq t5,t4,11908 + 11904: 1f40106f j 12af8 + 11908: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1190c: 00200293 li t0,2 + 11910: fc5218e3 bne tp,t0,118e0 + +00011914 : + 11914: 18600193 li gp,390 + 11918: 00000213 li tp,0 + 1191c: 00002117 auipc sp,0x2 + 11920: 23810113 addi sp,sp,568 # 13b54 + 11924: 00000013 nop + 11928: 01200093 li ra,18 + 1192c: 001101a3 sb ra,3(sp) + 11930: 00310f03 lb t5,3(sp) + 11934: 01200e93 li t4,18 + 11938: 01df0463 beq t5,t4,11940 + 1193c: 1bc0106f j 12af8 + 11940: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11944: 00200293 li t0,2 + 11948: fc521ae3 bne tp,t0,1191c + +0001194c : + 1194c: 18700193 li gp,391 + 11950: 00000213 li tp,0 + 11954: 00002117 auipc sp,0x2 + 11958: 20010113 addi sp,sp,512 # 13b54 + 1195c: 00000013 nop + 11960: 01100093 li ra,17 + 11964: 00000013 nop + 11968: 00110223 sb ra,4(sp) + 1196c: 00410f03 lb t5,4(sp) + 11970: 01100e93 li t4,17 + 11974: 01df0463 beq t5,t4,1197c + 11978: 1800106f j 12af8 + 1197c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11980: 00200293 li t0,2 + 11984: fc5218e3 bne tp,t0,11954 + +00011988 : + 11988: 18800193 li gp,392 + 1198c: 00000213 li tp,0 + 11990: 00002117 auipc sp,0x2 + 11994: 1c410113 addi sp,sp,452 # 13b54 + 11998: 00000013 nop + 1199c: 00000013 nop + 119a0: 00100093 li ra,1 + 119a4: 001102a3 sb ra,5(sp) + 119a8: 00510f03 lb t5,5(sp) + 119ac: 00100e93 li t4,1 + 119b0: 01df0463 beq t5,t4,119b8 + 119b4: 1440106f j 12af8 + 119b8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 119bc: 00200293 li t0,2 + 119c0: fc5218e3 bne tp,t0,11990 + 119c4: 0ef00513 li a0,239 + 119c8: 00002597 auipc a1,0x2 + 119cc: 18c58593 addi a1,a1,396 # 13b54 + 119d0: 00a581a3 sb a0,3(a1) + +000119d4 : + 119d4: 00002097 auipc ra,0x2 + 119d8: 19408093 addi ra,ra,404 # 13b68 + 119dc: 0aa00113 li sp,170 + 119e0: 00209023 sh sp,0(ra) + 119e4: 00009f03 lh t5,0(ra) + 119e8: 0aa00e93 li t4,170 + 119ec: 18900193 li gp,393 + 119f0: 01df0463 beq t5,t4,119f8 + 119f4: 1040106f j 12af8 + +000119f8 : + 119f8: 00002097 auipc ra,0x2 + 119fc: 17008093 addi ra,ra,368 # 13b68 + 11a00: ffffb137 lui sp,0xffffb + 11a04: a0010113 addi sp,sp,-1536 # ffffaa00 <__global_pointer$+0xfffe65b8> + 11a08: 00209123 sh sp,2(ra) + 11a0c: 00209f03 lh t5,2(ra) + 11a10: ffffbeb7 lui t4,0xffffb + 11a14: a00e8e93 addi t4,t4,-1536 # ffffaa00 <__global_pointer$+0xfffe65b8> + 11a18: 18a00193 li gp,394 + 11a1c: 01df0463 beq t5,t4,11a24 + 11a20: 0d80106f j 12af8 + +00011a24 : + 11a24: 00002097 auipc ra,0x2 + 11a28: 14408093 addi ra,ra,324 # 13b68 + 11a2c: beef1137 lui sp,0xbeef1 + 11a30: aa010113 addi sp,sp,-1376 # beef0aa0 <__global_pointer$+0xbeedc658> + 11a34: 00209223 sh sp,4(ra) + 11a38: 0040af03 lw t5,4(ra) + 11a3c: beef1eb7 lui t4,0xbeef1 + 11a40: aa0e8e93 addi t4,t4,-1376 # beef0aa0 <__global_pointer$+0xbeedc658> + 11a44: 18b00193 li gp,395 + 11a48: 01df0463 beq t5,t4,11a50 + 11a4c: 0ac0106f j 12af8 + +00011a50 : + 11a50: 00002097 auipc ra,0x2 + 11a54: 11808093 addi ra,ra,280 # 13b68 + 11a58: ffffa137 lui sp,0xffffa + 11a5c: 00a10113 addi sp,sp,10 # ffffa00a <__global_pointer$+0xfffe5bc2> + 11a60: 00209323 sh sp,6(ra) + 11a64: 00609f03 lh t5,6(ra) + 11a68: ffffaeb7 lui t4,0xffffa + 11a6c: 00ae8e93 addi t4,t4,10 # ffffa00a <__global_pointer$+0xfffe5bc2> + 11a70: 18c00193 li gp,396 + 11a74: 01df0463 beq t5,t4,11a7c + 11a78: 0800106f j 12af8 + +00011a7c : + 11a7c: 00002097 auipc ra,0x2 + 11a80: 0fa08093 addi ra,ra,250 # 13b76 + 11a84: 0aa00113 li sp,170 + 11a88: fe209d23 sh sp,-6(ra) + 11a8c: ffa09f03 lh t5,-6(ra) + 11a90: 0aa00e93 li t4,170 + 11a94: 18d00193 li gp,397 + 11a98: 01df0463 beq t5,t4,11aa0 + 11a9c: 05c0106f j 12af8 + +00011aa0 : + 11aa0: 00002097 auipc ra,0x2 + 11aa4: 0d608093 addi ra,ra,214 # 13b76 + 11aa8: ffffb137 lui sp,0xffffb + 11aac: a0010113 addi sp,sp,-1536 # ffffaa00 <__global_pointer$+0xfffe65b8> + 11ab0: fe209e23 sh sp,-4(ra) + 11ab4: ffc09f03 lh t5,-4(ra) + 11ab8: ffffbeb7 lui t4,0xffffb + 11abc: a00e8e93 addi t4,t4,-1536 # ffffaa00 <__global_pointer$+0xfffe65b8> + 11ac0: 18e00193 li gp,398 + 11ac4: 01df0463 beq t5,t4,11acc + 11ac8: 0300106f j 12af8 + +00011acc : + 11acc: 00002097 auipc ra,0x2 + 11ad0: 0aa08093 addi ra,ra,170 # 13b76 + 11ad4: 00001137 lui sp,0x1 + 11ad8: aa010113 addi sp,sp,-1376 # aa0 <_start-0xf5e0> + 11adc: fe209f23 sh sp,-2(ra) + 11ae0: ffe09f03 lh t5,-2(ra) + 11ae4: 00001eb7 lui t4,0x1 + 11ae8: aa0e8e93 addi t4,t4,-1376 # aa0 <_start-0xf5e0> + 11aec: 18f00193 li gp,399 + 11af0: 01df0463 beq t5,t4,11af8 + 11af4: 0040106f j 12af8 + +00011af8 : + 11af8: 00002097 auipc ra,0x2 + 11afc: 07e08093 addi ra,ra,126 # 13b76 + 11b00: ffffa137 lui sp,0xffffa + 11b04: 00a10113 addi sp,sp,10 # ffffa00a <__global_pointer$+0xfffe5bc2> + 11b08: 00209023 sh sp,0(ra) + 11b0c: 00009f03 lh t5,0(ra) + 11b10: ffffaeb7 lui t4,0xffffa + 11b14: 00ae8e93 addi t4,t4,10 # ffffa00a <__global_pointer$+0xfffe5bc2> + 11b18: 19000193 li gp,400 + 11b1c: 7ddf1ee3 bne t5,t4,12af8 + +00011b20 : + 11b20: 00002097 auipc ra,0x2 + 11b24: 05808093 addi ra,ra,88 # 13b78 + 11b28: 12345137 lui sp,0x12345 + 11b2c: 67810113 addi sp,sp,1656 # 12345678 <__global_pointer$+0x12331230> + 11b30: fe008213 addi tp,ra,-32 + 11b34: 02221023 sh sp,32(tp) # 20 <_start-0x10060> + 11b38: 00009283 lh t0,0(ra) + 11b3c: 00005eb7 lui t4,0x5 + 11b40: 678e8e93 addi t4,t4,1656 # 5678 <_start-0xaa08> + 11b44: 19100193 li gp,401 + 11b48: 7bd298e3 bne t0,t4,12af8 + +00011b4c : + 11b4c: 00002097 auipc ra,0x2 + 11b50: 02c08093 addi ra,ra,44 # 13b78 + 11b54: 00003137 lui sp,0x3 + 11b58: 09810113 addi sp,sp,152 # 3098 <_start-0xcfe8> + 11b5c: ffb08093 addi ra,ra,-5 + 11b60: 002093a3 sh sp,7(ra) + 11b64: 00002217 auipc tp,0x2 + 11b68: 01620213 addi tp,tp,22 # 13b7a + 11b6c: 00021283 lh t0,0(tp) # 0 <_start-0x10080> + 11b70: 00003eb7 lui t4,0x3 + 11b74: 098e8e93 addi t4,t4,152 # 3098 <_start-0xcfe8> + 11b78: 19200193 li gp,402 + 11b7c: 77d29ee3 bne t0,t4,12af8 + +00011b80 : + 11b80: 19300193 li gp,403 + 11b84: 00000213 li tp,0 + 11b88: ffffd0b7 lui ra,0xffffd + 11b8c: cdd08093 addi ra,ra,-803 # ffffccdd <__global_pointer$+0xfffe8895> + 11b90: 00002117 auipc sp,0x2 + 11b94: fd810113 addi sp,sp,-40 # 13b68 + 11b98: 00111023 sh ra,0(sp) + 11b9c: 00011f03 lh t5,0(sp) + 11ba0: ffffdeb7 lui t4,0xffffd + 11ba4: cdde8e93 addi t4,t4,-803 # ffffccdd <__global_pointer$+0xfffe8895> + 11ba8: 75df18e3 bne t5,t4,12af8 + 11bac: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11bb0: 00200293 li t0,2 + 11bb4: fc521ae3 bne tp,t0,11b88 + +00011bb8 : + 11bb8: 19400193 li gp,404 + 11bbc: 00000213 li tp,0 + 11bc0: ffffc0b7 lui ra,0xffffc + 11bc4: ccd08093 addi ra,ra,-819 # ffffbccd <__global_pointer$+0xfffe7885> + 11bc8: 00002117 auipc sp,0x2 + 11bcc: fa010113 addi sp,sp,-96 # 13b68 + 11bd0: 00000013 nop + 11bd4: 00111123 sh ra,2(sp) + 11bd8: 00211f03 lh t5,2(sp) + 11bdc: ffffceb7 lui t4,0xffffc + 11be0: ccde8e93 addi t4,t4,-819 # ffffbccd <__global_pointer$+0xfffe7885> + 11be4: 71df1ae3 bne t5,t4,12af8 + 11be8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11bec: 00200293 li t0,2 + 11bf0: fc5218e3 bne tp,t0,11bc0 + +00011bf4 : + 11bf4: 19500193 li gp,405 + 11bf8: 00000213 li tp,0 + 11bfc: ffffc0b7 lui ra,0xffffc + 11c00: bcc08093 addi ra,ra,-1076 # ffffbbcc <__global_pointer$+0xfffe7784> + 11c04: 00002117 auipc sp,0x2 + 11c08: f6410113 addi sp,sp,-156 # 13b68 + 11c0c: 00000013 nop + 11c10: 00000013 nop + 11c14: 00111223 sh ra,4(sp) + 11c18: 00411f03 lh t5,4(sp) + 11c1c: ffffceb7 lui t4,0xffffc + 11c20: bcce8e93 addi t4,t4,-1076 # ffffbbcc <__global_pointer$+0xfffe7784> + 11c24: 6ddf1ae3 bne t5,t4,12af8 + 11c28: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11c2c: 00200293 li t0,2 + 11c30: fc5216e3 bne tp,t0,11bfc + +00011c34 : + 11c34: 19600193 li gp,406 + 11c38: 00000213 li tp,0 + 11c3c: ffffb0b7 lui ra,0xffffb + 11c40: bbc08093 addi ra,ra,-1092 # ffffabbc <__global_pointer$+0xfffe6774> + 11c44: 00000013 nop + 11c48: 00002117 auipc sp,0x2 + 11c4c: f2010113 addi sp,sp,-224 # 13b68 + 11c50: 00111323 sh ra,6(sp) + 11c54: 00611f03 lh t5,6(sp) + 11c58: ffffbeb7 lui t4,0xffffb + 11c5c: bbce8e93 addi t4,t4,-1092 # ffffabbc <__global_pointer$+0xfffe6774> + 11c60: 69df1ce3 bne t5,t4,12af8 + 11c64: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11c68: 00200293 li t0,2 + 11c6c: fc5218e3 bne tp,t0,11c3c + +00011c70 : + 11c70: 19700193 li gp,407 + 11c74: 00000213 li tp,0 + 11c78: ffffb0b7 lui ra,0xffffb + 11c7c: abb08093 addi ra,ra,-1349 # ffffaabb <__global_pointer$+0xfffe6673> + 11c80: 00000013 nop + 11c84: 00002117 auipc sp,0x2 + 11c88: ee410113 addi sp,sp,-284 # 13b68 + 11c8c: 00000013 nop + 11c90: 00111423 sh ra,8(sp) + 11c94: 00811f03 lh t5,8(sp) + 11c98: ffffbeb7 lui t4,0xffffb + 11c9c: abbe8e93 addi t4,t4,-1349 # ffffaabb <__global_pointer$+0xfffe6673> + 11ca0: 65df1ce3 bne t5,t4,12af8 + 11ca4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11ca8: 00200293 li t0,2 + 11cac: fc5216e3 bne tp,t0,11c78 + +00011cb0 : + 11cb0: 19800193 li gp,408 + 11cb4: 00000213 li tp,0 + 11cb8: ffffe0b7 lui ra,0xffffe + 11cbc: aab08093 addi ra,ra,-1365 # ffffdaab <__global_pointer$+0xfffe9663> + 11cc0: 00000013 nop + 11cc4: 00000013 nop + 11cc8: 00002117 auipc sp,0x2 + 11ccc: ea010113 addi sp,sp,-352 # 13b68 + 11cd0: 00111523 sh ra,10(sp) + 11cd4: 00a11f03 lh t5,10(sp) + 11cd8: ffffeeb7 lui t4,0xffffe + 11cdc: aabe8e93 addi t4,t4,-1365 # ffffdaab <__global_pointer$+0xfffe9663> + 11ce0: 61df1ce3 bne t5,t4,12af8 + 11ce4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11ce8: 00200293 li t0,2 + 11cec: fc5216e3 bne tp,t0,11cb8 + +00011cf0 : + 11cf0: 19900193 li gp,409 + 11cf4: 00000213 li tp,0 + 11cf8: 00002117 auipc sp,0x2 + 11cfc: e7010113 addi sp,sp,-400 # 13b68 + 11d00: 000020b7 lui ra,0x2 + 11d04: 23308093 addi ra,ra,563 # 2233 <_start-0xde4d> + 11d08: 00111023 sh ra,0(sp) + 11d0c: 00011f03 lh t5,0(sp) + 11d10: 00002eb7 lui t4,0x2 + 11d14: 233e8e93 addi t4,t4,563 # 2233 <_start-0xde4d> + 11d18: 5fdf10e3 bne t5,t4,12af8 + 11d1c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d20: 00200293 li t0,2 + 11d24: fc521ae3 bne tp,t0,11cf8 + +00011d28 : + 11d28: 19a00193 li gp,410 + 11d2c: 00000213 li tp,0 + 11d30: 00002117 auipc sp,0x2 + 11d34: e3810113 addi sp,sp,-456 # 13b68 + 11d38: 000010b7 lui ra,0x1 + 11d3c: 22308093 addi ra,ra,547 # 1223 <_start-0xee5d> + 11d40: 00000013 nop + 11d44: 00111123 sh ra,2(sp) + 11d48: 00211f03 lh t5,2(sp) + 11d4c: 00001eb7 lui t4,0x1 + 11d50: 223e8e93 addi t4,t4,547 # 1223 <_start-0xee5d> + 11d54: 5bdf12e3 bne t5,t4,12af8 + 11d58: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d5c: 00200293 li t0,2 + 11d60: fc5218e3 bne tp,t0,11d30 + +00011d64 : + 11d64: 19b00193 li gp,411 + 11d68: 00000213 li tp,0 + 11d6c: 00002117 auipc sp,0x2 + 11d70: dfc10113 addi sp,sp,-516 # 13b68 + 11d74: 000010b7 lui ra,0x1 + 11d78: 12208093 addi ra,ra,290 # 1122 <_start-0xef5e> + 11d7c: 00000013 nop + 11d80: 00000013 nop + 11d84: 00111223 sh ra,4(sp) + 11d88: 00411f03 lh t5,4(sp) + 11d8c: 00001eb7 lui t4,0x1 + 11d90: 122e8e93 addi t4,t4,290 # 1122 <_start-0xef5e> + 11d94: 57df12e3 bne t5,t4,12af8 + 11d98: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d9c: 00200293 li t0,2 + 11da0: fc5216e3 bne tp,t0,11d6c + +00011da4 : + 11da4: 19c00193 li gp,412 + 11da8: 00000213 li tp,0 + 11dac: 00002117 auipc sp,0x2 + 11db0: dbc10113 addi sp,sp,-580 # 13b68 + 11db4: 00000013 nop + 11db8: 11200093 li ra,274 + 11dbc: 00111323 sh ra,6(sp) + 11dc0: 00611f03 lh t5,6(sp) + 11dc4: 11200e93 li t4,274 + 11dc8: 53df18e3 bne t5,t4,12af8 + 11dcc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11dd0: 00200293 li t0,2 + 11dd4: fc521ce3 bne tp,t0,11dac + +00011dd8 : + 11dd8: 19d00193 li gp,413 + 11ddc: 00000213 li tp,0 + 11de0: 00002117 auipc sp,0x2 + 11de4: d8810113 addi sp,sp,-632 # 13b68 + 11de8: 00000013 nop + 11dec: 01100093 li ra,17 + 11df0: 00000013 nop + 11df4: 00111423 sh ra,8(sp) + 11df8: 00811f03 lh t5,8(sp) + 11dfc: 01100e93 li t4,17 + 11e00: 4fdf1ce3 bne t5,t4,12af8 + 11e04: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11e08: 00200293 li t0,2 + 11e0c: fc521ae3 bne tp,t0,11de0 + +00011e10 : + 11e10: 19e00193 li gp,414 + 11e14: 00000213 li tp,0 + 11e18: 00002117 auipc sp,0x2 + 11e1c: d5010113 addi sp,sp,-688 # 13b68 + 11e20: 00000013 nop + 11e24: 00000013 nop + 11e28: 000030b7 lui ra,0x3 + 11e2c: 00108093 addi ra,ra,1 # 3001 <_start-0xd07f> + 11e30: 00111523 sh ra,10(sp) + 11e34: 00a11f03 lh t5,10(sp) + 11e38: 00003eb7 lui t4,0x3 + 11e3c: 001e8e93 addi t4,t4,1 # 3001 <_start-0xd07f> + 11e40: 4bdf1ce3 bne t5,t4,12af8 + 11e44: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11e48: 00200293 li t0,2 + 11e4c: fc5216e3 bne tp,t0,11e18 + 11e50: 0000c537 lui a0,0xc + 11e54: eef50513 addi a0,a0,-273 # beef <_start-0x4191> + 11e58: 00002597 auipc a1,0x2 + 11e5c: d1058593 addi a1,a1,-752 # 13b68 + 11e60: 00a59323 sh a0,6(a1) + +00011e64 : + 11e64: 00100093 li ra,1 + 11e68: 00000113 li sp,0 + 11e6c: 00209f33 sll t5,ra,sp + 11e70: 00100e93 li t4,1 + 11e74: 19f00193 li gp,415 + 11e78: 49df10e3 bne t5,t4,12af8 + +00011e7c : + 11e7c: 00100093 li ra,1 + 11e80: 00100113 li sp,1 + 11e84: 00209f33 sll t5,ra,sp + 11e88: 00200e93 li t4,2 + 11e8c: 1a000193 li gp,416 + 11e90: 47df14e3 bne t5,t4,12af8 + +00011e94 : + 11e94: 00100093 li ra,1 + 11e98: 00700113 li sp,7 + 11e9c: 00209f33 sll t5,ra,sp + 11ea0: 08000e93 li t4,128 + 11ea4: 1a100193 li gp,417 + 11ea8: 45df18e3 bne t5,t4,12af8 + +00011eac : + 11eac: 00100093 li ra,1 + 11eb0: 00e00113 li sp,14 + 11eb4: 00209f33 sll t5,ra,sp + 11eb8: 00004eb7 lui t4,0x4 + 11ebc: 1a200193 li gp,418 + 11ec0: 43df1ce3 bne t5,t4,12af8 + +00011ec4 : + 11ec4: 00100093 li ra,1 + 11ec8: 01f00113 li sp,31 + 11ecc: 00209f33 sll t5,ra,sp + 11ed0: 80000eb7 lui t4,0x80000 + 11ed4: 1a300193 li gp,419 + 11ed8: 43df10e3 bne t5,t4,12af8 + +00011edc : + 11edc: fff00093 li ra,-1 + 11ee0: 00000113 li sp,0 + 11ee4: 00209f33 sll t5,ra,sp + 11ee8: fff00e93 li t4,-1 + 11eec: 1a400193 li gp,420 + 11ef0: 41df14e3 bne t5,t4,12af8 + +00011ef4 : + 11ef4: fff00093 li ra,-1 + 11ef8: 00100113 li sp,1 + 11efc: 00209f33 sll t5,ra,sp + 11f00: ffe00e93 li t4,-2 + 11f04: 1a500193 li gp,421 + 11f08: 3fdf18e3 bne t5,t4,12af8 + +00011f0c : + 11f0c: fff00093 li ra,-1 + 11f10: 00700113 li sp,7 + 11f14: 00209f33 sll t5,ra,sp + 11f18: f8000e93 li t4,-128 + 11f1c: 1a600193 li gp,422 + 11f20: 3ddf1ce3 bne t5,t4,12af8 + +00011f24 : + 11f24: fff00093 li ra,-1 + 11f28: 00e00113 li sp,14 + 11f2c: 00209f33 sll t5,ra,sp + 11f30: ffffceb7 lui t4,0xffffc + 11f34: 1a700193 li gp,423 + 11f38: 3ddf10e3 bne t5,t4,12af8 + +00011f3c : + 11f3c: fff00093 li ra,-1 + 11f40: 01f00113 li sp,31 + 11f44: 00209f33 sll t5,ra,sp + 11f48: 80000eb7 lui t4,0x80000 + 11f4c: 1a800193 li gp,424 + 11f50: 3bdf14e3 bne t5,t4,12af8 + +00011f54 : + 11f54: 212120b7 lui ra,0x21212 + 11f58: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11f5c: 00000113 li sp,0 + 11f60: 00209f33 sll t5,ra,sp + 11f64: 21212eb7 lui t4,0x21212 + 11f68: 121e8e93 addi t4,t4,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11f6c: 1a900193 li gp,425 + 11f70: 39df14e3 bne t5,t4,12af8 + +00011f74 : + 11f74: 212120b7 lui ra,0x21212 + 11f78: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11f7c: 00100113 li sp,1 + 11f80: 00209f33 sll t5,ra,sp + 11f84: 42424eb7 lui t4,0x42424 + 11f88: 242e8e93 addi t4,t4,578 # 42424242 <__global_pointer$+0x4240fdfa> + 11f8c: 1aa00193 li gp,426 + 11f90: 37df14e3 bne t5,t4,12af8 + +00011f94 : + 11f94: 212120b7 lui ra,0x21212 + 11f98: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11f9c: 00700113 li sp,7 + 11fa0: 00209f33 sll t5,ra,sp + 11fa4: 90909eb7 lui t4,0x90909 + 11fa8: 080e8e93 addi t4,t4,128 # 90909080 <__global_pointer$+0x908f4c38> + 11fac: 1ab00193 li gp,427 + 11fb0: 35df14e3 bne t5,t4,12af8 + +00011fb4 : + 11fb4: 212120b7 lui ra,0x21212 + 11fb8: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11fbc: 00e00113 li sp,14 + 11fc0: 00209f33 sll t5,ra,sp + 11fc4: 48484eb7 lui t4,0x48484 + 11fc8: 1ac00193 li gp,428 + 11fcc: 33df16e3 bne t5,t4,12af8 + +00011fd0 : + 11fd0: 212120b7 lui ra,0x21212 + 11fd4: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11fd8: 01f00113 li sp,31 + 11fdc: 00209f33 sll t5,ra,sp + 11fe0: 80000eb7 lui t4,0x80000 + 11fe4: 1ad00193 li gp,429 + 11fe8: 31df18e3 bne t5,t4,12af8 + +00011fec : + 11fec: 212120b7 lui ra,0x21212 + 11ff0: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 11ff4: fc000113 li sp,-64 + 11ff8: 00209f33 sll t5,ra,sp + 11ffc: 21212eb7 lui t4,0x21212 + 12000: 121e8e93 addi t4,t4,289 # 21212121 <__global_pointer$+0x211fdcd9> + 12004: 1ae00193 li gp,430 + 12008: 2fdf18e3 bne t5,t4,12af8 + +0001200c : + 1200c: 212120b7 lui ra,0x21212 + 12010: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 12014: fc100113 li sp,-63 + 12018: 00209f33 sll t5,ra,sp + 1201c: 42424eb7 lui t4,0x42424 + 12020: 242e8e93 addi t4,t4,578 # 42424242 <__global_pointer$+0x4240fdfa> + 12024: 1af00193 li gp,431 + 12028: 2ddf18e3 bne t5,t4,12af8 + +0001202c : + 1202c: 212120b7 lui ra,0x21212 + 12030: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 12034: fc700113 li sp,-57 + 12038: 00209f33 sll t5,ra,sp + 1203c: 90909eb7 lui t4,0x90909 + 12040: 080e8e93 addi t4,t4,128 # 90909080 <__global_pointer$+0x908f4c38> + 12044: 1b000193 li gp,432 + 12048: 2bdf18e3 bne t5,t4,12af8 + +0001204c : + 1204c: 212120b7 lui ra,0x21212 + 12050: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 12054: fce00113 li sp,-50 + 12058: 00209f33 sll t5,ra,sp + 1205c: 48484eb7 lui t4,0x48484 + 12060: 1b100193 li gp,433 + 12064: 29df1ae3 bne t5,t4,12af8 + +00012068 : + 12068: 00100093 li ra,1 + 1206c: 00700113 li sp,7 + 12070: 002090b3 sll ra,ra,sp + 12074: 08000e93 li t4,128 + 12078: 1b600193 li gp,438 + 1207c: 27d09ee3 bne ra,t4,12af8 + +00012080 : + 12080: 00100093 li ra,1 + 12084: 00e00113 li sp,14 + 12088: 00209133 sll sp,ra,sp + 1208c: 00004eb7 lui t4,0x4 + 12090: 1b700193 li gp,439 + 12094: 27d112e3 bne sp,t4,12af8 + +00012098 : + 12098: 00300093 li ra,3 + 1209c: 001090b3 sll ra,ra,ra + 120a0: 01800e93 li t4,24 + 120a4: 1b800193 li gp,440 + 120a8: 25d098e3 bne ra,t4,12af8 + +000120ac : + 120ac: 00000213 li tp,0 + 120b0: 00100093 li ra,1 + 120b4: 00700113 li sp,7 + 120b8: 00209f33 sll t5,ra,sp + 120bc: 000f0313 mv t1,t5 + 120c0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 120c4: 00200293 li t0,2 + 120c8: fe5214e3 bne tp,t0,120b0 + 120cc: 08000e93 li t4,128 + 120d0: 1b900193 li gp,441 + 120d4: 23d312e3 bne t1,t4,12af8 + +000120d8 : + 120d8: 00000213 li tp,0 + 120dc: 00100093 li ra,1 + 120e0: 00e00113 li sp,14 + 120e4: 00209f33 sll t5,ra,sp + 120e8: 00000013 nop + 120ec: 000f0313 mv t1,t5 + 120f0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 120f4: 00200293 li t0,2 + 120f8: fe5212e3 bne tp,t0,120dc + 120fc: 00004eb7 lui t4,0x4 + 12100: 1ba00193 li gp,442 + 12104: 1fd31ae3 bne t1,t4,12af8 + +00012108 : + 12108: 00000213 li tp,0 + 1210c: 00100093 li ra,1 + 12110: 01f00113 li sp,31 + 12114: 00209f33 sll t5,ra,sp + 12118: 00000013 nop + 1211c: 00000013 nop + 12120: 000f0313 mv t1,t5 + 12124: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12128: 00200293 li t0,2 + 1212c: fe5210e3 bne tp,t0,1210c + 12130: 80000eb7 lui t4,0x80000 + 12134: 1bb00193 li gp,443 + 12138: 1dd310e3 bne t1,t4,12af8 + +0001213c : + 1213c: 00000213 li tp,0 + 12140: 00100093 li ra,1 + 12144: 00700113 li sp,7 + 12148: 00209f33 sll t5,ra,sp + 1214c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12150: 00200293 li t0,2 + 12154: fe5216e3 bne tp,t0,12140 + 12158: 08000e93 li t4,128 + 1215c: 1bc00193 li gp,444 + 12160: 19df1ce3 bne t5,t4,12af8 + +00012164 : + 12164: 00000213 li tp,0 + 12168: 00100093 li ra,1 + 1216c: 00e00113 li sp,14 + 12170: 00000013 nop + 12174: 00209f33 sll t5,ra,sp + 12178: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1217c: 00200293 li t0,2 + 12180: fe5214e3 bne tp,t0,12168 + 12184: 00004eb7 lui t4,0x4 + 12188: 1bd00193 li gp,445 + 1218c: 17df16e3 bne t5,t4,12af8 + +00012190 : + 12190: 00000213 li tp,0 + 12194: 00100093 li ra,1 + 12198: 01f00113 li sp,31 + 1219c: 00000013 nop + 121a0: 00000013 nop + 121a4: 00209f33 sll t5,ra,sp + 121a8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 121ac: 00200293 li t0,2 + 121b0: fe5212e3 bne tp,t0,12194 + 121b4: 80000eb7 lui t4,0x80000 + 121b8: 1be00193 li gp,446 + 121bc: 13df1ee3 bne t5,t4,12af8 + +000121c0 : + 121c0: 00000213 li tp,0 + 121c4: 00100093 li ra,1 + 121c8: 00000013 nop + 121cc: 00700113 li sp,7 + 121d0: 00209f33 sll t5,ra,sp + 121d4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 121d8: 00200293 li t0,2 + 121dc: fe5214e3 bne tp,t0,121c4 + 121e0: 08000e93 li t4,128 + 121e4: 1bf00193 li gp,447 + 121e8: 11df18e3 bne t5,t4,12af8 + +000121ec : + 121ec: 00000213 li tp,0 + 121f0: 00100093 li ra,1 + 121f4: 00000013 nop + 121f8: 00e00113 li sp,14 + 121fc: 00000013 nop + 12200: 00209f33 sll t5,ra,sp + 12204: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12208: 00200293 li t0,2 + 1220c: fe5212e3 bne tp,t0,121f0 + 12210: 00004eb7 lui t4,0x4 + 12214: 1c000193 li gp,448 + 12218: 0fdf10e3 bne t5,t4,12af8 + +0001221c : + 1221c: 00000213 li tp,0 + 12220: 00100093 li ra,1 + 12224: 00000013 nop + 12228: 00000013 nop + 1222c: 01f00113 li sp,31 + 12230: 00209f33 sll t5,ra,sp + 12234: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12238: 00200293 li t0,2 + 1223c: fe5212e3 bne tp,t0,12220 + 12240: 80000eb7 lui t4,0x80000 + 12244: 1c100193 li gp,449 + 12248: 0bdf18e3 bne t5,t4,12af8 + +0001224c : + 1224c: 00000213 li tp,0 + 12250: 00700113 li sp,7 + 12254: 00100093 li ra,1 + 12258: 00209f33 sll t5,ra,sp + 1225c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12260: 00200293 li t0,2 + 12264: fe5216e3 bne tp,t0,12250 + 12268: 08000e93 li t4,128 + 1226c: 1c200193 li gp,450 + 12270: 09df14e3 bne t5,t4,12af8 + +00012274 : + 12274: 00000213 li tp,0 + 12278: 00e00113 li sp,14 + 1227c: 00100093 li ra,1 + 12280: 00000013 nop + 12284: 00209f33 sll t5,ra,sp + 12288: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1228c: 00200293 li t0,2 + 12290: fe5214e3 bne tp,t0,12278 + 12294: 00004eb7 lui t4,0x4 + 12298: 1c300193 li gp,451 + 1229c: 05df1ee3 bne t5,t4,12af8 + +000122a0 : + 122a0: 00000213 li tp,0 + 122a4: 01f00113 li sp,31 + 122a8: 00100093 li ra,1 + 122ac: 00000013 nop + 122b0: 00000013 nop + 122b4: 00209f33 sll t5,ra,sp + 122b8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 122bc: 00200293 li t0,2 + 122c0: fe5212e3 bne tp,t0,122a4 + 122c4: 80000eb7 lui t4,0x80000 + 122c8: 1c400193 li gp,452 + 122cc: 03df16e3 bne t5,t4,12af8 + +000122d0 : + 122d0: 00000213 li tp,0 + 122d4: 00700113 li sp,7 + 122d8: 00000013 nop + 122dc: 00100093 li ra,1 + 122e0: 00209f33 sll t5,ra,sp + 122e4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 122e8: 00200293 li t0,2 + 122ec: fe5214e3 bne tp,t0,122d4 + 122f0: 08000e93 li t4,128 + 122f4: 1c500193 li gp,453 + 122f8: 01df10e3 bne t5,t4,12af8 + +000122fc : + 122fc: 00000213 li tp,0 + 12300: 00e00113 li sp,14 + 12304: 00000013 nop + 12308: 00100093 li ra,1 + 1230c: 00000013 nop + 12310: 00209f33 sll t5,ra,sp + 12314: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12318: 00200293 li t0,2 + 1231c: fe5212e3 bne tp,t0,12300 + 12320: 00004eb7 lui t4,0x4 + 12324: 1c600193 li gp,454 + 12328: 7ddf1863 bne t5,t4,12af8 + +0001232c : + 1232c: 00000213 li tp,0 + 12330: 01f00113 li sp,31 + 12334: 00000013 nop + 12338: 00000013 nop + 1233c: 00100093 li ra,1 + 12340: 00209f33 sll t5,ra,sp + 12344: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12348: 00200293 li t0,2 + 1234c: fe5212e3 bne tp,t0,12330 + 12350: 80000eb7 lui t4,0x80000 + 12354: 1c700193 li gp,455 + 12358: 7bdf1063 bne t5,t4,12af8 + +0001235c : + 1235c: 00f00093 li ra,15 + 12360: 00101133 sll sp,zero,ra + 12364: 00000e93 li t4,0 + 12368: 1c800193 li gp,456 + 1236c: 79d11663 bne sp,t4,12af8 + +00012370 : + 12370: 02000093 li ra,32 + 12374: 00009133 sll sp,ra,zero + 12378: 02000e93 li t4,32 + 1237c: 1c900193 li gp,457 + 12380: 77d11c63 bne sp,t4,12af8 + +00012384 : + 12384: 000010b3 sll ra,zero,zero + 12388: 00000e93 li t4,0 + 1238c: 1ca00193 li gp,458 + 12390: 77d09463 bne ra,t4,12af8 + +00012394 : + 12394: 40000093 li ra,1024 + 12398: 00001137 lui sp,0x1 + 1239c: 80010113 addi sp,sp,-2048 # 800 <_start-0xf880> + 123a0: 00209033 sll zero,ra,sp + 123a4: 00000e93 li t4,0 + 123a8: 1cb00193 li gp,459 + 123ac: 75d01663 bne zero,t4,12af8 + +000123b0 : + 123b0: 00100093 li ra,1 + 123b4: 00009f13 slli t5,ra,0x0 + 123b8: 00100e93 li t4,1 + 123bc: 1cc00193 li gp,460 + 123c0: 73df1c63 bne t5,t4,12af8 + +000123c4 : + 123c4: 00100093 li ra,1 + 123c8: 00109f13 slli t5,ra,0x1 + 123cc: 00200e93 li t4,2 + 123d0: 1cd00193 li gp,461 + 123d4: 73df1263 bne t5,t4,12af8 + +000123d8 : + 123d8: 00100093 li ra,1 + 123dc: 00709f13 slli t5,ra,0x7 + 123e0: 08000e93 li t4,128 + 123e4: 1ce00193 li gp,462 + 123e8: 71df1863 bne t5,t4,12af8 + +000123ec : + 123ec: 00100093 li ra,1 + 123f0: 00e09f13 slli t5,ra,0xe + 123f4: 00004eb7 lui t4,0x4 + 123f8: 1cf00193 li gp,463 + 123fc: 6fdf1e63 bne t5,t4,12af8 + +00012400 : + 12400: 00100093 li ra,1 + 12404: 01f09f13 slli t5,ra,0x1f + 12408: 80000eb7 lui t4,0x80000 + 1240c: 1d000193 li gp,464 + 12410: 6fdf1463 bne t5,t4,12af8 + +00012414 : + 12414: fff00093 li ra,-1 + 12418: 00009f13 slli t5,ra,0x0 + 1241c: fff00e93 li t4,-1 + 12420: 1d100193 li gp,465 + 12424: 6ddf1a63 bne t5,t4,12af8 + +00012428 : + 12428: fff00093 li ra,-1 + 1242c: 00109f13 slli t5,ra,0x1 + 12430: ffe00e93 li t4,-2 + 12434: 1d200193 li gp,466 + 12438: 6ddf1063 bne t5,t4,12af8 + +0001243c : + 1243c: fff00093 li ra,-1 + 12440: 00709f13 slli t5,ra,0x7 + 12444: f8000e93 li t4,-128 + 12448: 1d300193 li gp,467 + 1244c: 6bdf1663 bne t5,t4,12af8 + +00012450 : + 12450: fff00093 li ra,-1 + 12454: 00e09f13 slli t5,ra,0xe + 12458: ffffceb7 lui t4,0xffffc + 1245c: 1d400193 li gp,468 + 12460: 69df1c63 bne t5,t4,12af8 + +00012464 : + 12464: fff00093 li ra,-1 + 12468: 01f09f13 slli t5,ra,0x1f + 1246c: 80000eb7 lui t4,0x80000 + 12470: 1d500193 li gp,469 + 12474: 69df1263 bne t5,t4,12af8 + +00012478 : + 12478: 212120b7 lui ra,0x21212 + 1247c: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 12480: 00009f13 slli t5,ra,0x0 + 12484: 21212eb7 lui t4,0x21212 + 12488: 121e8e93 addi t4,t4,289 # 21212121 <__global_pointer$+0x211fdcd9> + 1248c: 1d600193 li gp,470 + 12490: 67df1463 bne t5,t4,12af8 + +00012494 : + 12494: 212120b7 lui ra,0x21212 + 12498: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 1249c: 00109f13 slli t5,ra,0x1 + 124a0: 42424eb7 lui t4,0x42424 + 124a4: 242e8e93 addi t4,t4,578 # 42424242 <__global_pointer$+0x4240fdfa> + 124a8: 1d700193 li gp,471 + 124ac: 65df1663 bne t5,t4,12af8 + +000124b0 : + 124b0: 212120b7 lui ra,0x21212 + 124b4: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 124b8: 00709f13 slli t5,ra,0x7 + 124bc: 90909eb7 lui t4,0x90909 + 124c0: 080e8e93 addi t4,t4,128 # 90909080 <__global_pointer$+0x908f4c38> + 124c4: 1d800193 li gp,472 + 124c8: 63df1863 bne t5,t4,12af8 + +000124cc : + 124cc: 212120b7 lui ra,0x21212 + 124d0: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 124d4: 00e09f13 slli t5,ra,0xe + 124d8: 48484eb7 lui t4,0x48484 + 124dc: 1d900193 li gp,473 + 124e0: 61df1c63 bne t5,t4,12af8 + +000124e4 : + 124e4: 212120b7 lui ra,0x21212 + 124e8: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fdcd9> + 124ec: 01f09f13 slli t5,ra,0x1f + 124f0: 80000eb7 lui t4,0x80000 + 124f4: 1da00193 li gp,474 + 124f8: 61df1063 bne t5,t4,12af8 + +000124fc : + 124fc: 00100093 li ra,1 + 12500: 00709093 slli ra,ra,0x7 + 12504: 08000e93 li t4,128 + 12508: 1de00193 li gp,478 + 1250c: 5fd09663 bne ra,t4,12af8 + +00012510 : + 12510: 00000213 li tp,0 + 12514: 00100093 li ra,1 + 12518: 00709f13 slli t5,ra,0x7 + 1251c: 000f0313 mv t1,t5 + 12520: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12524: 00200293 li t0,2 + 12528: fe5216e3 bne tp,t0,12514 + 1252c: 08000e93 li t4,128 + 12530: 1df00193 li gp,479 + 12534: 5dd31263 bne t1,t4,12af8 + +00012538 : + 12538: 00000213 li tp,0 + 1253c: 00100093 li ra,1 + 12540: 00e09f13 slli t5,ra,0xe + 12544: 00000013 nop + 12548: 000f0313 mv t1,t5 + 1254c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12550: 00200293 li t0,2 + 12554: fe5214e3 bne tp,t0,1253c + 12558: 00004eb7 lui t4,0x4 + 1255c: 1e000193 li gp,480 + 12560: 59d31c63 bne t1,t4,12af8 + +00012564 : + 12564: 00000213 li tp,0 + 12568: 00100093 li ra,1 + 1256c: 01f09f13 slli t5,ra,0x1f + 12570: 00000013 nop + 12574: 00000013 nop + 12578: 000f0313 mv t1,t5 + 1257c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12580: 00200293 li t0,2 + 12584: fe5212e3 bne tp,t0,12568 + 12588: 80000eb7 lui t4,0x80000 + 1258c: 1e100193 li gp,481 + 12590: 57d31463 bne t1,t4,12af8 + +00012594 : + 12594: 00000213 li tp,0 + 12598: 00100093 li ra,1 + 1259c: 00709f13 slli t5,ra,0x7 + 125a0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 125a4: 00200293 li t0,2 + 125a8: fe5218e3 bne tp,t0,12598 + 125ac: 08000e93 li t4,128 + 125b0: 1e200193 li gp,482 + 125b4: 55df1263 bne t5,t4,12af8 + +000125b8 : + 125b8: 00000213 li tp,0 + 125bc: 00100093 li ra,1 + 125c0: 00000013 nop + 125c4: 00e09f13 slli t5,ra,0xe + 125c8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 125cc: 00200293 li t0,2 + 125d0: fe5216e3 bne tp,t0,125bc + 125d4: 00004eb7 lui t4,0x4 + 125d8: 1e300193 li gp,483 + 125dc: 51df1e63 bne t5,t4,12af8 + +000125e0 : + 125e0: 00000213 li tp,0 + 125e4: 00100093 li ra,1 + 125e8: 00000013 nop + 125ec: 00000013 nop + 125f0: 01f09f13 slli t5,ra,0x1f + 125f4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 125f8: 00200293 li t0,2 + 125fc: fe5214e3 bne tp,t0,125e4 + 12600: 80000eb7 lui t4,0x80000 + 12604: 1e400193 li gp,484 + 12608: 4fdf1863 bne t5,t4,12af8 + +0001260c : + 1260c: 01f01093 slli ra,zero,0x1f + 12610: 00000e93 li t4,0 + 12614: 1e500193 li gp,485 + 12618: 4fd09063 bne ra,t4,12af8 + +0001261c : + 1261c: 02100093 li ra,33 + 12620: 01409013 slli zero,ra,0x14 + 12624: 00000e93 li t4,0 + 12628: 1e600193 li gp,486 + 1262c: 4dd01663 bne zero,t4,12af8 + +00012630 : + 12630: 00000093 li ra,0 + 12634: 00000113 li sp,0 + 12638: 0020af33 slt t5,ra,sp + 1263c: 00000e93 li t4,0 + 12640: 1e700193 li gp,487 + 12644: 4bdf1a63 bne t5,t4,12af8 + +00012648 : + 12648: 00100093 li ra,1 + 1264c: 00100113 li sp,1 + 12650: 0020af33 slt t5,ra,sp + 12654: 00000e93 li t4,0 + 12658: 1e800193 li gp,488 + 1265c: 49df1e63 bne t5,t4,12af8 + +00012660 : + 12660: 00300093 li ra,3 + 12664: 00700113 li sp,7 + 12668: 0020af33 slt t5,ra,sp + 1266c: 00100e93 li t4,1 + 12670: 1e900193 li gp,489 + 12674: 49df1263 bne t5,t4,12af8 + +00012678 : + 12678: 00700093 li ra,7 + 1267c: 00300113 li sp,3 + 12680: 0020af33 slt t5,ra,sp + 12684: 00000e93 li t4,0 + 12688: 1ea00193 li gp,490 + 1268c: 47df1663 bne t5,t4,12af8 + +00012690 : + 12690: 00000093 li ra,0 + 12694: ffff8137 lui sp,0xffff8 + 12698: 0020af33 slt t5,ra,sp + 1269c: 00000e93 li t4,0 + 126a0: 1eb00193 li gp,491 + 126a4: 45df1a63 bne t5,t4,12af8 + +000126a8 : + 126a8: 800000b7 lui ra,0x80000 + 126ac: 00000113 li sp,0 + 126b0: 0020af33 slt t5,ra,sp + 126b4: 00100e93 li t4,1 + 126b8: 1ec00193 li gp,492 + 126bc: 43df1e63 bne t5,t4,12af8 + +000126c0 : + 126c0: 800000b7 lui ra,0x80000 + 126c4: ffff8137 lui sp,0xffff8 + 126c8: 0020af33 slt t5,ra,sp + 126cc: 00100e93 li t4,1 + 126d0: 1ed00193 li gp,493 + 126d4: 43df1263 bne t5,t4,12af8 + +000126d8 : + 126d8: 00000093 li ra,0 + 126dc: 00008137 lui sp,0x8 + 126e0: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 126e4: 0020af33 slt t5,ra,sp + 126e8: 00100e93 li t4,1 + 126ec: 1ee00193 li gp,494 + 126f0: 41df1463 bne t5,t4,12af8 + +000126f4 : + 126f4: 800000b7 lui ra,0x80000 + 126f8: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffebbb7> + 126fc: 00000113 li sp,0 + 12700: 0020af33 slt t5,ra,sp + 12704: 00000e93 li t4,0 + 12708: 1ef00193 li gp,495 + 1270c: 3fdf1663 bne t5,t4,12af8 + +00012710 : + 12710: 800000b7 lui ra,0x80000 + 12714: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffebbb7> + 12718: 00008137 lui sp,0x8 + 1271c: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 12720: 0020af33 slt t5,ra,sp + 12724: 00000e93 li t4,0 + 12728: 1f000193 li gp,496 + 1272c: 3ddf1663 bne t5,t4,12af8 + +00012730 : + 12730: 800000b7 lui ra,0x80000 + 12734: 00008137 lui sp,0x8 + 12738: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 1273c: 0020af33 slt t5,ra,sp + 12740: 00100e93 li t4,1 + 12744: 1f100193 li gp,497 + 12748: 3bdf1863 bne t5,t4,12af8 + +0001274c : + 1274c: 800000b7 lui ra,0x80000 + 12750: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffebbb7> + 12754: ffff8137 lui sp,0xffff8 + 12758: 0020af33 slt t5,ra,sp + 1275c: 00000e93 li t4,0 + 12760: 1f200193 li gp,498 + 12764: 39df1a63 bne t5,t4,12af8 + +00012768 : + 12768: 00000093 li ra,0 + 1276c: fff00113 li sp,-1 + 12770: 0020af33 slt t5,ra,sp + 12774: 00000e93 li t4,0 + 12778: 1f300193 li gp,499 + 1277c: 37df1e63 bne t5,t4,12af8 + +00012780 : + 12780: fff00093 li ra,-1 + 12784: 00100113 li sp,1 + 12788: 0020af33 slt t5,ra,sp + 1278c: 00100e93 li t4,1 + 12790: 1f400193 li gp,500 + 12794: 37df1263 bne t5,t4,12af8 + +00012798 : + 12798: fff00093 li ra,-1 + 1279c: fff00113 li sp,-1 + 127a0: 0020af33 slt t5,ra,sp + 127a4: 00000e93 li t4,0 + 127a8: 1f500193 li gp,501 + 127ac: 35df1663 bne t5,t4,12af8 + +000127b0 : + 127b0: 00e00093 li ra,14 + 127b4: 00d00113 li sp,13 + 127b8: 0020a0b3 slt ra,ra,sp + 127bc: 00000e93 li t4,0 + 127c0: 1f600193 li gp,502 + 127c4: 33d09a63 bne ra,t4,12af8 + +000127c8 : + 127c8: 00b00093 li ra,11 + 127cc: 00d00113 li sp,13 + 127d0: 0020a133 slt sp,ra,sp + 127d4: 00100e93 li t4,1 + 127d8: 1f700193 li gp,503 + 127dc: 31d11e63 bne sp,t4,12af8 + +000127e0 : + 127e0: 00d00093 li ra,13 + 127e4: 0010a0b3 slt ra,ra,ra + 127e8: 00000e93 li t4,0 + 127ec: 1f800193 li gp,504 + 127f0: 31d09463 bne ra,t4,12af8 + +000127f4 : + 127f4: 00000213 li tp,0 + 127f8: 00b00093 li ra,11 + 127fc: 00d00113 li sp,13 + 12800: 0020af33 slt t5,ra,sp + 12804: 000f0313 mv t1,t5 + 12808: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1280c: 00200293 li t0,2 + 12810: fe5214e3 bne tp,t0,127f8 + 12814: 00100e93 li t4,1 + 12818: 1f900193 li gp,505 + 1281c: 2dd31e63 bne t1,t4,12af8 + +00012820 : + 12820: 00000213 li tp,0 + 12824: 00e00093 li ra,14 + 12828: 00d00113 li sp,13 + 1282c: 0020af33 slt t5,ra,sp + 12830: 00000013 nop + 12834: 000f0313 mv t1,t5 + 12838: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1283c: 00200293 li t0,2 + 12840: fe5212e3 bne tp,t0,12824 + 12844: 00000e93 li t4,0 + 12848: 1fa00193 li gp,506 + 1284c: 2bd31663 bne t1,t4,12af8 + +00012850 : + 12850: 00000213 li tp,0 + 12854: 00c00093 li ra,12 + 12858: 00d00113 li sp,13 + 1285c: 0020af33 slt t5,ra,sp + 12860: 00000013 nop + 12864: 00000013 nop + 12868: 000f0313 mv t1,t5 + 1286c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12870: 00200293 li t0,2 + 12874: fe5210e3 bne tp,t0,12854 + 12878: 00100e93 li t4,1 + 1287c: 1fb00193 li gp,507 + 12880: 27d31c63 bne t1,t4,12af8 + +00012884 : + 12884: 00000213 li tp,0 + 12888: 00e00093 li ra,14 + 1288c: 00d00113 li sp,13 + 12890: 0020af33 slt t5,ra,sp + 12894: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12898: 00200293 li t0,2 + 1289c: fe5216e3 bne tp,t0,12888 + 128a0: 00000e93 li t4,0 + 128a4: 1fc00193 li gp,508 + 128a8: 25df1863 bne t5,t4,12af8 + +000128ac : + 128ac: 00000213 li tp,0 + 128b0: 00b00093 li ra,11 + 128b4: 00d00113 li sp,13 + 128b8: 00000013 nop + 128bc: 0020af33 slt t5,ra,sp + 128c0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 128c4: 00200293 li t0,2 + 128c8: fe5214e3 bne tp,t0,128b0 + 128cc: 00100e93 li t4,1 + 128d0: 1fd00193 li gp,509 + 128d4: 23df1263 bne t5,t4,12af8 + +000128d8 : + 128d8: 00000213 li tp,0 + 128dc: 00f00093 li ra,15 + 128e0: 00d00113 li sp,13 + 128e4: 00000013 nop + 128e8: 00000013 nop + 128ec: 0020af33 slt t5,ra,sp + 128f0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 128f4: 00200293 li t0,2 + 128f8: fe5212e3 bne tp,t0,128dc + 128fc: 00000e93 li t4,0 + 12900: 1fe00193 li gp,510 + 12904: 1fdf1a63 bne t5,t4,12af8 + +00012908 : + 12908: 00000213 li tp,0 + 1290c: 00a00093 li ra,10 + 12910: 00000013 nop + 12914: 00d00113 li sp,13 + 12918: 0020af33 slt t5,ra,sp + 1291c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12920: 00200293 li t0,2 + 12924: fe5214e3 bne tp,t0,1290c + 12928: 00100e93 li t4,1 + 1292c: 1ff00193 li gp,511 + 12930: 1ddf1463 bne t5,t4,12af8 + +00012934 : + 12934: 00000213 li tp,0 + 12938: 01000093 li ra,16 + 1293c: 00000013 nop + 12940: 00d00113 li sp,13 + 12944: 00000013 nop + 12948: 0020af33 slt t5,ra,sp + 1294c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12950: 00200293 li t0,2 + 12954: fe5212e3 bne tp,t0,12938 + 12958: 00000e93 li t4,0 + 1295c: 20000193 li gp,512 + 12960: 19df1c63 bne t5,t4,12af8 + +00012964 : + 12964: 00000213 li tp,0 + 12968: 00900093 li ra,9 + 1296c: 00000013 nop + 12970: 00000013 nop + 12974: 00d00113 li sp,13 + 12978: 0020af33 slt t5,ra,sp + 1297c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12980: 00200293 li t0,2 + 12984: fe5212e3 bne tp,t0,12968 + 12988: 00100e93 li t4,1 + 1298c: 20100193 li gp,513 + 12990: 17df1463 bne t5,t4,12af8 + +00012994 : + 12994: 00000213 li tp,0 + 12998: 00d00113 li sp,13 + 1299c: 01100093 li ra,17 + 129a0: 0020af33 slt t5,ra,sp + 129a4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 129a8: 00200293 li t0,2 + 129ac: fe5216e3 bne tp,t0,12998 + 129b0: 00000e93 li t4,0 + 129b4: 20200193 li gp,514 + 129b8: 15df1063 bne t5,t4,12af8 + +000129bc : + 129bc: 00000213 li tp,0 + 129c0: 00d00113 li sp,13 + 129c4: 00800093 li ra,8 + 129c8: 00000013 nop + 129cc: 0020af33 slt t5,ra,sp + 129d0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 129d4: 00200293 li t0,2 + 129d8: fe5214e3 bne tp,t0,129c0 + 129dc: 00100e93 li t4,1 + 129e0: 20300193 li gp,515 + 129e4: 11df1a63 bne t5,t4,12af8 + +000129e8 : + 129e8: 00000213 li tp,0 + 129ec: 00d00113 li sp,13 + 129f0: 01200093 li ra,18 + 129f4: 00000013 nop + 129f8: 00000013 nop + 129fc: 0020af33 slt t5,ra,sp + 12a00: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a04: 00200293 li t0,2 + 12a08: fe5212e3 bne tp,t0,129ec + 12a0c: 00000e93 li t4,0 + 12a10: 20400193 li gp,516 + 12a14: 0fdf1263 bne t5,t4,12af8 + +00012a18 : + 12a18: 00000213 li tp,0 + 12a1c: 00d00113 li sp,13 + 12a20: 00000013 nop + 12a24: 00700093 li ra,7 + 12a28: 0020af33 slt t5,ra,sp + 12a2c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a30: 00200293 li t0,2 + 12a34: fe5214e3 bne tp,t0,12a1c + 12a38: 00100e93 li t4,1 + 12a3c: 20500193 li gp,517 + 12a40: 0bdf1c63 bne t5,t4,12af8 + +00012a44 : + 12a44: 00000213 li tp,0 + 12a48: 00d00113 li sp,13 + 12a4c: 00000013 nop + 12a50: 01300093 li ra,19 + 12a54: 00000013 nop + 12a58: 0020af33 slt t5,ra,sp + 12a5c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a60: 00200293 li t0,2 + 12a64: fe5212e3 bne tp,t0,12a48 + 12a68: 00000e93 li t4,0 + 12a6c: 20600193 li gp,518 + 12a70: 09df1463 bne t5,t4,12af8 + +00012a74 : + 12a74: 00000213 li tp,0 + 12a78: 00d00113 li sp,13 + 12a7c: 00000013 nop + 12a80: 00000013 nop + 12a84: 00600093 li ra,6 + 12a88: 0020af33 slt t5,ra,sp + 12a8c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a90: 00200293 li t0,2 + 12a94: fe5212e3 bne tp,t0,12a78 + 12a98: 00100e93 li t4,1 + 12a9c: 20700193 li gp,519 + 12aa0: 05df1c63 bne t5,t4,12af8 + +00012aa4 : + 12aa4: fff00093 li ra,-1 + 12aa8: 00102133 sgtz sp,ra + 12aac: 00000e93 li t4,0 + 12ab0: 20800193 li gp,520 + 12ab4: 05d11263 bne sp,t4,12af8 + +00012ab8 : + 12ab8: fff00093 li ra,-1 + 12abc: 0000a133 sltz sp,ra + 12ac0: 00100e93 li t4,1 + 12ac4: 20900193 li gp,521 + 12ac8: 03d11863 bne sp,t4,12af8 + +00012acc : + 12acc: 000020b3 sltz ra,zero + 12ad0: 00000e93 li t4,0 + 12ad4: 20a00193 li gp,522 + 12ad8: 03d09063 bne ra,t4,12af8 + +00012adc : + 12adc: 01000093 li ra,16 + 12ae0: 01e00113 li sp,30 + 12ae4: 0020a033 slt zero,ra,sp + 12ae8: 00000e93 li t4,0 + 12aec: 20b00193 li gp,523 + 12af0: 01d01463 bne zero,t4,12af8 + 12af4: 00301463 bne zero,gp,12afc + +00012af8 : + 12af8: 00000a6f jal s4,12af8 + +00012afc : + 12afc: 00100193 li gp,1 + +00012b00 : + 12b00: 00000a6f jal s4,12b00 diff --git a/src/Rv32iCPU/benchmark/testB_data.txt b/src/Rv32iCPU/benchmark/testB_data.txt new file mode 100644 index 0000000..ec3e1bd --- /dev/null +++ b/src/Rv32iCPU/benchmark/testB_data.txt @@ -0,0 +1,3825 @@ +00004097 +acc08093 +00008f03 +fff00e93 +0ed00193 +01df0463 +25d0206f +00004097 +ab008093 +00108f03 +00000e93 +0ee00193 +01df0463 +2410206f +00004097 +a9408093 +00208f03 +ff000e93 +0ef00193 +01df0463 +2250206f +00004097 +a7808093 +00308f03 +00f00e93 +0f000193 +01df0463 +2090206f +00004097 +a5f08093 +ffd08f03 +fff00e93 +0f100193 +01df0463 +1ed0206f +00004097 +a4308093 +ffe08f03 +00000e93 +0f200193 +01df0463 +1d10206f +00004097 +a2708093 +fff08f03 +ff000e93 +0f300193 +01df0463 +1b50206f +00004097 +a0b08093 +00008f03 +00f00e93 +0f400193 +01df0463 +1990206f +00004097 +9ec08093 +fe008093 +02008283 +fff00e93 +0f500193 +01d28463 +1790206f +00004097 +9cc08093 +ffa08093 +00708283 +00000e93 +0f600193 +01d28463 +1590206f +0f700193 +00000213 +00004097 +9a508093 +00108f03 +000f0313 +ff000e93 +01d30463 +1350206f +00120213 +00200293 +fc521ee3 +0f800193 +00000213 +00004097 +97608093 +00108f03 +00000013 +000f0313 +00f00e93 +01d30463 +1010206f +00120213 +00200293 +fc521ce3 +0f900193 +00000213 +00004097 +94008093 +00108f03 +00000013 +00000013 +000f0313 +00000e93 +01d30463 +0c90206f +00120213 +00200293 +fc521ae3 +0fa00193 +00000213 +00004097 +90908093 +00108f03 +ff000e93 +01df0463 +09d0206f +00120213 +00200293 +fe5210e3 +0fb00193 +00000213 +00004097 +8de08093 +00000013 +00108f03 +00f00e93 +01df0463 +06d0206f +00120213 +00200293 +fc521ee3 +0fc00193 +00000213 +00004097 +8ac08093 +00000013 +00000013 +00108f03 +00000e93 +01df0463 +0390206f +00120213 +00200293 +fc521ce3 +00004297 +88028293 +00028103 +00200113 +00200e93 +0fd00193 +01d10463 +00d0206f +00004297 +86028293 +00028103 +00000013 +00200113 +00200e93 +0fe00193 +01d10463 +7e80206f +00004097 +83c08093 +0000cf03 +0ff00e93 +0ff00193 +01df0463 +7cc0206f +00004097 +82008093 +0010cf03 +00000e93 +10000193 +01df0463 +7b00206f +00004097 +80408093 +0020cf03 +0f000e93 +10100193 +01df0463 +7940206f +00003097 +7e808093 +0030cf03 +00f00e93 +10200193 +01df0463 +7780206f +00003097 +7cf08093 +ffd0cf03 +0ff00e93 +10300193 +01df0463 +75c0206f +00003097 +7b308093 +ffe0cf03 +00000e93 +10400193 +01df0463 +7400206f +00003097 +79708093 +fff0cf03 +0f000e93 +10500193 +01df0463 +7240206f +00003097 +77b08093 +0000cf03 +00f00e93 +10600193 +01df0463 +7080206f +00003097 +75c08093 +fe008093 +0200c283 +0ff00e93 +10700193 +01d28463 +6e80206f +00003097 +73c08093 +ffa08093 +0070c283 +00000e93 +10800193 +01d28463 +6c80206f +10900193 +00000213 +00003097 +71508093 +0010cf03 +000f0313 +0f000e93 +01d30463 +6a40206f +00120213 +00200293 +fc521ee3 +10a00193 +00000213 +00003097 +6e608093 +0010cf03 +00000013 +000f0313 +00f00e93 +01d30463 +6700206f +00120213 +00200293 +fc521ce3 +10b00193 +00000213 +00003097 +6b008093 +0010cf03 +00000013 +00000013 +000f0313 +00000e93 +01d30463 +6380206f +00120213 +00200293 +fc521ae3 +10c00193 +00000213 +00003097 +67908093 +0010cf03 +0f000e93 +01df0463 +60c0206f +00120213 +00200293 +fe5210e3 +10d00193 +00000213 +00003097 +64e08093 +00000013 +0010cf03 +00f00e93 +01df0463 +5dc0206f +00120213 +00200293 +fc521ee3 +10e00193 +00000213 +00003097 +61c08093 +00000013 +00000013 +0010cf03 +00000e93 +01df0463 +5a80206f +00120213 +00200293 +fc521ce3 +00003297 +5f028293 +0002c103 +00200113 +00200e93 +10f00193 +01d10463 +57c0206f +00003297 +5d028293 +0002c103 +00000013 +00200113 +00200e93 +11000193 +01d10463 +5580206f +00003097 +5bc08093 +00009f03 +0ff00e93 +11100193 +01df0463 +53c0206f +00003097 +5a008093 +00209f03 +f0000e93 +11200193 +01df0463 +5200206f +00003097 +58408093 +00409f03 +00001eb7 +ff0e8e93 +11300193 +01df0463 +5000206f +00003097 +56408093 +00609f03 +fffffeb7 +00fe8e93 +11400193 +01df0463 +4e00206f +00003097 +54a08093 +ffa09f03 +0ff00e93 +11500193 +01df0463 +4c40206f +00003097 +52e08093 +ffc09f03 +f0000e93 +11600193 +01df0463 +4a80206f +00003097 +51208093 +ffe09f03 +00001eb7 +ff0e8e93 +11700193 +01df0463 +4880206f +00003097 +4f208093 +00009f03 +fffffeb7 +00fe8e93 +11800193 +01df0463 +4680206f +00003097 +4cc08093 +fe008093 +02009283 +0ff00e93 +11900193 +01d28463 +4480206f +00003097 +4ac08093 +ffb08093 +00709283 +f0000e93 +11a00193 +01d28463 +4280206f +11b00193 +00000213 +00003097 +48608093 +00209f03 +000f0313 +00001eb7 +ff0e8e93 +01d30463 +4000206f +00120213 +00200293 +fc521ce3 +11c00193 +00000213 +00003097 +45408093 +00209f03 +00000013 +000f0313 +fffffeb7 +00fe8e93 +01d30463 +3c80206f +00120213 +00200293 +fc521ae3 +11d00193 +00000213 +00003097 +41808093 +00209f03 +00000013 +00000013 +000f0313 +f0000e93 +01d30463 +3900206f +00120213 +00200293 +fc521ae3 +11e00193 +00000213 +00003097 +3e208093 +00209f03 +00001eb7 +ff0e8e93 +01df0463 +3600206f +00120213 +00200293 +fc521ee3 +11f00193 +00000213 +00003097 +3b408093 +00000013 +00209f03 +fffffeb7 +00fe8e93 +01df0463 +32c0206f +00120213 +00200293 +fc521ce3 +12000193 +00000213 +00003097 +37c08093 +00000013 +00000013 +00209f03 +f0000e93 +01df0463 +2f80206f +00120213 +00200293 +fc521ce3 +00003297 +35028293 +00029103 +00200113 +00200e93 +12100193 +01d10463 +2cc0206f +00003297 +33028293 +00029103 +00000013 +00200113 +00200e93 +12200193 +01d10463 +2a80206f +00003097 +30c08093 +0000df03 +0ff00e93 +12300193 +01df0463 +28c0206f +00003097 +2f008093 +0020df03 +00010eb7 +f00e8e93 +12400193 +01df0463 +26c0206f +00003097 +2d008093 +0040df03 +00001eb7 +ff0e8e93 +12500193 +01df0463 +24c0206f +00003097 +2b008093 +0060df03 +0000feb7 +00fe8e93 +12600193 +01df0463 +22c0206f +00003097 +29608093 +ffa0df03 +0ff00e93 +12700193 +01df0463 +2100206f +00003097 +27a08093 +ffc0df03 +00010eb7 +f00e8e93 +12800193 +01df0463 +1f00206f +00003097 +25a08093 +ffe0df03 +00001eb7 +ff0e8e93 +12900193 +01df0463 +1d00206f +00003097 +23a08093 +0000df03 +0000feb7 +00fe8e93 +12a00193 +01df0463 +1b00206f +00003097 +21408093 +fe008093 +0200d283 +0ff00e93 +12b00193 +01d28463 +1900206f +00003097 +1f408093 +ffb08093 +0070d283 +00010eb7 +f00e8e93 +12c00193 +01d28463 +16c0206f +12d00193 +00000213 +00003097 +1ca08093 +0020df03 +000f0313 +00001eb7 +ff0e8e93 +01d30463 +1440206f +00120213 +00200293 +fc521ce3 +12e00193 +00000213 +00003097 +19808093 +0020df03 +00000013 +000f0313 +0000feb7 +00fe8e93 +01d30463 +10c0206f +00120213 +00200293 +fc521ae3 +12f00193 +00000213 +00003097 +15c08093 +0020df03 +00000013 +00000013 +000f0313 +00010eb7 +f00e8e93 +01d30463 +0d00206f +00120213 +00200293 +fc5218e3 +13000193 +00000213 +00003097 +12208093 +0020df03 +00001eb7 +ff0e8e93 +01df0463 +0a00206f +00120213 +00200293 +fc521ee3 +13100193 +00000213 +00003097 +0f408093 +00000013 +0020df03 +0000feb7 +00fe8e93 +01df0463 +06c0206f +00120213 +00200293 +fc521ce3 +13200193 +00000213 +00003097 +0bc08093 +00000013 +00000013 +0020df03 +00010eb7 +f00e8e93 +01df0463 +0340206f +00120213 +00200293 +fc521ae3 +00003297 +08c28293 +0002d103 +00200113 +00200e93 +13300193 +01d10463 +0080206f +00003297 +06c28293 +0002d103 +00000013 +00200113 +00200e93 +13400193 +01d10463 +7e50106f +000000b7 +00000e93 +13500193 +01d08463 +7d10106f +fffff0b7 +4010d093 +80000e93 +13600193 +01d08463 +7b90106f +7ffff0b7 +4140d093 +7ff00e93 +13700193 +01d08463 +7a10106f +800000b7 +4140d093 +80000e93 +13800193 +01d08463 +7890106f +80000037 +00000e93 +13900193 +01d00463 +7750106f +00003097 +ff808093 +0000af03 +00ff0eb7 +0ffe8e93 +13a00193 +01df0463 +7550106f +00003097 +fd808093 +0040af03 +ff010eb7 +f00e8e93 +13b00193 +01df0463 +7350106f +00003097 +fb808093 +0080af03 +0ff01eb7 +ff0e8e93 +13c00193 +01df0463 +7150106f +00003097 +f9808093 +00c0af03 +f00ffeb7 +00fe8e93 +13d00193 +01df0463 +6f50106f +00003097 +f8408093 +ff40af03 +00ff0eb7 +0ffe8e93 +13e00193 +01df0463 +6d50106f +00003097 +f6408093 +ff80af03 +ff010eb7 +f00e8e93 +13f00193 +01df0463 +6b50106f +00003097 +f4408093 +ffc0af03 +0ff01eb7 +ff0e8e93 +14000193 +01df0463 +6950106f +00003097 +f2408093 +0000af03 +f00ffeb7 +00fe8e93 +14100193 +01df0463 +6750106f +00003097 +ef808093 +fe008093 +0200a283 +00ff0eb7 +0ffe8e93 +14200193 +01d28463 +6510106f +00003097 +ed408093 +ffd08093 +0070a283 +ff010eb7 +f00e8e93 +14300193 +01d28463 +62d0106f +14400193 +00000213 +00003097 +eac08093 +0040af03 +000f0313 +0ff01eb7 +ff0e8e93 +01d30463 +6050106f +00120213 +00200293 +fc521ce3 +14500193 +00000213 +00003097 +e7c08093 +0040af03 +00000013 +000f0313 +f00ffeb7 +00fe8e93 +01d30463 +5cd0106f +00120213 +00200293 +fc521ae3 +14600193 +00000213 +00003097 +e3c08093 +0040af03 +00000013 +00000013 +000f0313 +ff010eb7 +f00e8e93 +01d30463 +5910106f +00120213 +00200293 +fc5218e3 +14700193 +00000213 +00003097 +e0408093 +0040af03 +0ff01eb7 +ff0e8e93 +01df0463 +5610106f +00120213 +00200293 +fc521ee3 +14800193 +00000213 +00003097 +dd808093 +00000013 +0040af03 +f00ffeb7 +00fe8e93 +01df0463 +52d0106f +00120213 +00200293 +fc521ce3 +14900193 +00000213 +00003097 +d9c08093 +00000013 +00000013 +0040af03 +ff010eb7 +f00e8e93 +01df0463 +4f50106f +00120213 +00200293 +fc521ae3 +00003297 +d6c28293 +0002a103 +00200113 +00200e93 +14a00193 +01d10463 +4c90106f +00003297 +d4c28293 +0002a103 +00000013 +00200113 +00200e93 +14b00193 +01d10463 +4a50106f +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020ef33 +ff100eb7 +f0fe8e93 +14c00193 +01df0463 +47d0106f +0ff010b7 +ff008093 +f0f0f137 +0f010113 +0020ef33 +fff10eb7 +ff0e8e93 +14d00193 +01df0463 +4550106f +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +0020ef33 +0fff1eb7 +fffe8e93 +14e00193 +01df0463 +42d0106f +f00ff0b7 +00f08093 +f0f0f137 +0f010113 +0020ef33 +f0fffeb7 +0ffe8e93 +14f00193 +01df0463 +4050106f +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020e0b3 +ff100eb7 +f0fe8e93 +15000193 +01d08463 +3dd0106f +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020e133 +ff100eb7 +f0fe8e93 +15100193 +01d10463 +3b50106f +ff0100b7 +f0008093 +0010e0b3 +ff010eb7 +f00e8e93 +15200193 +01d08463 +3950106f +00000213 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020ef33 +000f0313 +00120213 +00200293 +fe5210e3 +ff100eb7 +f0fe8e93 +15300193 +01d30463 +3590106f +00000213 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +0020ef33 +00000013 +000f0313 +00120213 +00200293 +fc521ee3 +fff10eb7 +ff0e8e93 +15400193 +01d30463 +3190106f +00000213 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +0020ef33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fc521ce3 +0fff1eb7 +fffe8e93 +15500193 +01d30463 +2d50106f +00000213 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020ef33 +00120213 +00200293 +fe5212e3 +ff100eb7 +f0fe8e93 +15600193 +01df0463 +29d0106f +00000213 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +00000013 +0020ef33 +00120213 +00200293 +fe5210e3 +fff10eb7 +ff0e8e93 +15700193 +01df0463 +2610106f +00000213 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +00000013 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +15800193 +01df0463 +2210106f +00000213 +ff0100b7 +f0008093 +00000013 +0f0f1137 +f0f10113 +0020ef33 +00120213 +00200293 +fe5210e3 +ff100eb7 +f0fe8e93 +15900193 +01df0463 +1e50106f +00000213 +0ff010b7 +ff008093 +00000013 +f0f0f137 +0f010113 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +fff10eb7 +ff0e8e93 +15a00193 +01df0463 +1a50106f +00000213 +00ff00b7 +0ff08093 +00000013 +00000013 +0f0f1137 +f0f10113 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +15b00193 +01df0463 +1650106f +00000213 +0f0f1137 +f0f10113 +ff0100b7 +f0008093 +0020ef33 +00120213 +00200293 +fe5212e3 +ff100eb7 +f0fe8e93 +15c00193 +01df0463 +12d0106f +00000213 +f0f0f137 +0f010113 +0ff010b7 +ff008093 +00000013 +0020ef33 +00120213 +00200293 +fe5210e3 +fff10eb7 +ff0e8e93 +15d00193 +01df0463 +0f10106f +00000213 +0f0f1137 +f0f10113 +00ff00b7 +0ff08093 +00000013 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +15e00193 +01df0463 +0b10106f +00000213 +0f0f1137 +f0f10113 +00000013 +ff0100b7 +f0008093 +0020ef33 +00120213 +00200293 +fe5210e3 +ff100eb7 +f0fe8e93 +15f00193 +01df0463 +0750106f +00000213 +f0f0f137 +0f010113 +00000013 +0ff010b7 +ff008093 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +fff10eb7 +ff0e8e93 +16000193 +01df0463 +0350106f +00000213 +0f0f1137 +f0f10113 +00000013 +00000013 +00ff00b7 +0ff08093 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +16100193 +01df0463 +7f40106f +ff0100b7 +f0008093 +00106133 +ff010eb7 +f00e8e93 +16200193 +01d10463 +7d40106f +00ff00b7 +0ff08093 +0000e133 +00ff0eb7 +0ffe8e93 +16300193 +01d10463 +7b40106f +000060b3 +00000e93 +16400193 +01d08463 +7a00106f +111110b7 +11108093 +22222137 +22210113 +0020e033 +00000e93 +16500193 +01d00463 +77c0106f +ff0100b7 +f0008093 +f0f0ef13 +f0f00e93 +16600193 +01df0463 +7600106f +0ff010b7 +ff008093 +0f00ef13 +0ff01eb7 +ff0e8e93 +16700193 +01df0463 +7400106f +00ff00b7 +0ff08093 +70f0ef13 +00ff0eb7 +7ffe8e93 +16800193 +01df0463 +7200106f +f00ff0b7 +00f08093 +0f00ef13 +f00ffeb7 +0ffe8e93 +16900193 +01df0463 +7000106f +ff0100b7 +f0008093 +0f00e093 +ff010eb7 +ff0e8e93 +16a00193 +01d08463 +6e00106f +00000213 +0ff010b7 +ff008093 +0f00ef13 +000f0313 +00120213 +00200293 +fe5214e3 +0ff01eb7 +ff0e8e93 +16b00193 +01d30463 +6ac0106f +00000213 +00ff00b7 +0ff08093 +70f0ef13 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00ff0eb7 +7ffe8e93 +16c00193 +01d30463 +6740106f +00000213 +f00ff0b7 +00f08093 +0f00ef13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +f00ffeb7 +0ffe8e93 +16d00193 +01d30463 +6380106f +00000213 +0ff010b7 +ff008093 +0f00ef13 +00120213 +00200293 +fe5216e3 +0ff01eb7 +ff0e8e93 +16e00193 +01df0463 +6080106f +00000213 +00ff00b7 +0ff08093 +00000013 +f0f0ef13 +00120213 +00200293 +fe5214e3 +fff00e93 +16f00193 +01df0463 +5d80106f +00000213 +f00ff0b7 +00f08093 +00000013 +00000013 +0f00ef13 +00120213 +00200293 +fe5212e3 +f00ffeb7 +0ffe8e93 +17000193 +01df0463 +5a00106f +0f006093 +0f000e93 +17100193 +01d08463 +58c0106f +00ff00b7 +0ff08093 +70f0e013 +00000e93 +17200193 +01d00463 +5700106f +00002097 +5c808093 +faa00113 +00208023 +00008f03 +faa00e93 +17300193 +01df0463 +54c0106f +00002097 +5a408093 +00000113 +002080a3 +00108f03 +00000e93 +17400193 +01df0463 +5280106f +00002097 +58008093 +fffff137 +fa010113 +00208123 +00209f03 +fffffeb7 +fa0e8e93 +17500193 +01df0463 +4fc0106f +00002097 +55408093 +00a00113 +002081a3 +00308f03 +00a00e93 +17600193 +01df0463 +4d80106f +00002097 +53708093 +faa00113 +fe208ea3 +ffd08f03 +faa00e93 +17700193 +01df0463 +4b40106f +00002097 +51308093 +00000113 +fe208f23 +ffe08f03 +00000e93 +17800193 +01df0463 +4900106f +00002097 +4ef08093 +fa000113 +fe208fa3 +fff08f03 +fa000e93 +17900193 +01df0463 +46c0106f +00002097 +4cb08093 +00a00113 +00208023 +00008f03 +00a00e93 +17a00193 +01df0463 +4480106f +00002097 +4a808093 +12345137 +67810113 +fe008213 +02220023 +00008283 +07800e93 +17b00193 +01d28463 +41c0106f +00002097 +47c08093 +00003137 +09810113 +ffa08093 +002083a3 +00002217 +46520213 +00020283 +f9800e93 +17c00193 +01d28463 +3e80106f +17d00193 +00000213 +fdd00093 +00002117 +43410113 +00110023 +00010f03 +fdd00e93 +01df0463 +3c00106f +00120213 +00200293 +fc521ce3 +17e00193 +00000213 +fcd00093 +00002117 +40010113 +00000013 +001100a3 +00110f03 +fcd00e93 +01df0463 +3880106f +00120213 +00200293 +fc521ae3 +17f00193 +00000213 +fcc00093 +00002117 +3c810113 +00000013 +00000013 +00110123 +00210f03 +fcc00e93 +01df0463 +34c0106f +00120213 +00200293 +fc5218e3 +18000193 +00000213 +fbc00093 +00000013 +00002117 +38810113 +001101a3 +00310f03 +fbc00e93 +01df0463 +3140106f +00120213 +00200293 +fc521ae3 +18100193 +00000213 +fbb00093 +00000013 +00002117 +35010113 +00000013 +00110223 +00410f03 +fbb00e93 +01df0463 +2d80106f +00120213 +00200293 +fc5218e3 +18200193 +00000213 +fab00093 +00000013 +00000013 +00002117 +31010113 +001102a3 +00510f03 +fab00e93 +01df0463 +29c0106f +00120213 +00200293 +fc5218e3 +18300193 +00000213 +00002117 +2e010113 +03300093 +00110023 +00010f03 +03300e93 +01df0463 +2680106f +00120213 +00200293 +fc521ce3 +18400193 +00000213 +00002117 +2ac10113 +02300093 +00000013 +001100a3 +00110f03 +02300e93 +01df0463 +2300106f +00120213 +00200293 +fc521ae3 +18500193 +00000213 +00002117 +27410113 +02200093 +00000013 +00000013 +00110123 +00210f03 +02200e93 +01df0463 +1f40106f +00120213 +00200293 +fc5218e3 +18600193 +00000213 +00002117 +23810113 +00000013 +01200093 +001101a3 +00310f03 +01200e93 +01df0463 +1bc0106f +00120213 +00200293 +fc521ae3 +18700193 +00000213 +00002117 +20010113 +00000013 +01100093 +00000013 +00110223 +00410f03 +01100e93 +01df0463 +1800106f +00120213 +00200293 +fc5218e3 +18800193 +00000213 +00002117 +1c410113 +00000013 +00000013 +00100093 +001102a3 +00510f03 +00100e93 +01df0463 +1440106f +00120213 +00200293 +fc5218e3 +0ef00513 +00002597 +18c58593 +00a581a3 +00002097 +19408093 +0aa00113 +00209023 +00009f03 +0aa00e93 +18900193 +01df0463 +1040106f +00002097 +17008093 +ffffb137 +a0010113 +00209123 +00209f03 +ffffbeb7 +a00e8e93 +18a00193 +01df0463 +0d80106f +00002097 +14408093 +beef1137 +aa010113 +00209223 +0040af03 +beef1eb7 +aa0e8e93 +18b00193 +01df0463 +0ac0106f +00002097 +11808093 +ffffa137 +00a10113 +00209323 +00609f03 +ffffaeb7 +00ae8e93 +18c00193 +01df0463 +0800106f +00002097 +0fa08093 +0aa00113 +fe209d23 +ffa09f03 +0aa00e93 +18d00193 +01df0463 +05c0106f +00002097 +0d608093 +ffffb137 +a0010113 +fe209e23 +ffc09f03 +ffffbeb7 +a00e8e93 +18e00193 +01df0463 +0300106f +00002097 +0aa08093 +00001137 +aa010113 +fe209f23 +ffe09f03 +00001eb7 +aa0e8e93 +18f00193 +01df0463 +0040106f +00002097 +07e08093 +ffffa137 +00a10113 +00209023 +00009f03 +ffffaeb7 +00ae8e93 +19000193 +7ddf1ee3 +00002097 +05808093 +12345137 +67810113 +fe008213 +02221023 +00009283 +00005eb7 +678e8e93 +19100193 +7bd298e3 +00002097 +02c08093 +00003137 +09810113 +ffb08093 +002093a3 +00002217 +01620213 +00021283 +00003eb7 +098e8e93 +19200193 +77d29ee3 +19300193 +00000213 +ffffd0b7 +cdd08093 +00002117 +fd810113 +00111023 +00011f03 +ffffdeb7 +cdde8e93 +75df18e3 +00120213 +00200293 +fc521ae3 +19400193 +00000213 +ffffc0b7 +ccd08093 +00002117 +fa010113 +00000013 +00111123 +00211f03 +ffffceb7 +ccde8e93 +71df1ae3 +00120213 +00200293 +fc5218e3 +19500193 +00000213 +ffffc0b7 +bcc08093 +00002117 +f6410113 +00000013 +00000013 +00111223 +00411f03 +ffffceb7 +bcce8e93 +6ddf1ae3 +00120213 +00200293 +fc5216e3 +19600193 +00000213 +ffffb0b7 +bbc08093 +00000013 +00002117 +f2010113 +00111323 +00611f03 +ffffbeb7 +bbce8e93 +69df1ce3 +00120213 +00200293 +fc5218e3 +19700193 +00000213 +ffffb0b7 +abb08093 +00000013 +00002117 +ee410113 +00000013 +00111423 +00811f03 +ffffbeb7 +abbe8e93 +65df1ce3 +00120213 +00200293 +fc5216e3 +19800193 +00000213 +ffffe0b7 +aab08093 +00000013 +00000013 +00002117 +ea010113 +00111523 +00a11f03 +ffffeeb7 +aabe8e93 +61df1ce3 +00120213 +00200293 +fc5216e3 +19900193 +00000213 +00002117 +e7010113 +000020b7 +23308093 +00111023 +00011f03 +00002eb7 +233e8e93 +5fdf10e3 +00120213 +00200293 +fc521ae3 +19a00193 +00000213 +00002117 +e3810113 +000010b7 +22308093 +00000013 +00111123 +00211f03 +00001eb7 +223e8e93 +5bdf12e3 +00120213 +00200293 +fc5218e3 +19b00193 +00000213 +00002117 +dfc10113 +000010b7 +12208093 +00000013 +00000013 +00111223 +00411f03 +00001eb7 +122e8e93 +57df12e3 +00120213 +00200293 +fc5216e3 +19c00193 +00000213 +00002117 +dbc10113 +00000013 +11200093 +00111323 +00611f03 +11200e93 +53df18e3 +00120213 +00200293 +fc521ce3 +19d00193 +00000213 +00002117 +d8810113 +00000013 +01100093 +00000013 +00111423 +00811f03 +01100e93 +4fdf1ce3 +00120213 +00200293 +fc521ae3 +19e00193 +00000213 +00002117 +d5010113 +00000013 +00000013 +000030b7 +00108093 +00111523 +00a11f03 +00003eb7 +001e8e93 +4bdf1ce3 +00120213 +00200293 +fc5216e3 +0000c537 +eef50513 +00002597 +d1058593 +00a59323 +00100093 +00000113 +00209f33 +00100e93 +19f00193 +49df10e3 +00100093 +00100113 +00209f33 +00200e93 +1a000193 +47df14e3 +00100093 +00700113 +00209f33 +08000e93 +1a100193 +45df18e3 +00100093 +00e00113 +00209f33 +00004eb7 +1a200193 +43df1ce3 +00100093 +01f00113 +00209f33 +80000eb7 +1a300193 +43df10e3 +fff00093 +00000113 +00209f33 +fff00e93 +1a400193 +41df14e3 +fff00093 +00100113 +00209f33 +ffe00e93 +1a500193 +3fdf18e3 +fff00093 +00700113 +00209f33 +f8000e93 +1a600193 +3ddf1ce3 +fff00093 +00e00113 +00209f33 +ffffceb7 +1a700193 +3ddf10e3 +fff00093 +01f00113 +00209f33 +80000eb7 +1a800193 +3bdf14e3 +212120b7 +12108093 +00000113 +00209f33 +21212eb7 +121e8e93 +1a900193 +39df14e3 +212120b7 +12108093 +00100113 +00209f33 +42424eb7 +242e8e93 +1aa00193 +37df14e3 +212120b7 +12108093 +00700113 +00209f33 +90909eb7 +080e8e93 +1ab00193 +35df14e3 +212120b7 +12108093 +00e00113 +00209f33 +48484eb7 +1ac00193 +33df16e3 +212120b7 +12108093 +01f00113 +00209f33 +80000eb7 +1ad00193 +31df18e3 +212120b7 +12108093 +fc000113 +00209f33 +21212eb7 +121e8e93 +1ae00193 +2fdf18e3 +212120b7 +12108093 +fc100113 +00209f33 +42424eb7 +242e8e93 +1af00193 +2ddf18e3 +212120b7 +12108093 +fc700113 +00209f33 +90909eb7 +080e8e93 +1b000193 +2bdf18e3 +212120b7 +12108093 +fce00113 +00209f33 +48484eb7 +1b100193 +29df1ae3 +00100093 +00700113 +002090b3 +08000e93 +1b600193 +27d09ee3 +00100093 +00e00113 +00209133 +00004eb7 +1b700193 +27d112e3 +00300093 +001090b3 +01800e93 +1b800193 +25d098e3 +00000213 +00100093 +00700113 +00209f33 +000f0313 +00120213 +00200293 +fe5214e3 +08000e93 +1b900193 +23d312e3 +00000213 +00100093 +00e00113 +00209f33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00004eb7 +1ba00193 +1fd31ae3 +00000213 +00100093 +01f00113 +00209f33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +80000eb7 +1bb00193 +1dd310e3 +00000213 +00100093 +00700113 +00209f33 +00120213 +00200293 +fe5216e3 +08000e93 +1bc00193 +19df1ce3 +00000213 +00100093 +00e00113 +00000013 +00209f33 +00120213 +00200293 +fe5214e3 +00004eb7 +1bd00193 +17df16e3 +00000213 +00100093 +01f00113 +00000013 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1be00193 +13df1ee3 +00000213 +00100093 +00000013 +00700113 +00209f33 +00120213 +00200293 +fe5214e3 +08000e93 +1bf00193 +11df18e3 +00000213 +00100093 +00000013 +00e00113 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +00004eb7 +1c000193 +0fdf10e3 +00000213 +00100093 +00000013 +00000013 +01f00113 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1c100193 +0bdf18e3 +00000213 +00700113 +00100093 +00209f33 +00120213 +00200293 +fe5216e3 +08000e93 +1c200193 +09df14e3 +00000213 +00e00113 +00100093 +00000013 +00209f33 +00120213 +00200293 +fe5214e3 +00004eb7 +1c300193 +05df1ee3 +00000213 +01f00113 +00100093 +00000013 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1c400193 +03df16e3 +00000213 +00700113 +00000013 +00100093 +00209f33 +00120213 +00200293 +fe5214e3 +08000e93 +1c500193 +01df10e3 +00000213 +00e00113 +00000013 +00100093 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +00004eb7 +1c600193 +7ddf1863 +00000213 +01f00113 +00000013 +00000013 +00100093 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1c700193 +7bdf1063 +00f00093 +00101133 +00000e93 +1c800193 +79d11663 +02000093 +00009133 +02000e93 +1c900193 +77d11c63 +000010b3 +00000e93 +1ca00193 +77d09463 +40000093 +00001137 +80010113 +00209033 +00000e93 +1cb00193 +75d01663 +00100093 +00009f13 +00100e93 +1cc00193 +73df1c63 +00100093 +00109f13 +00200e93 +1cd00193 +73df1263 +00100093 +00709f13 +08000e93 +1ce00193 +71df1863 +00100093 +00e09f13 +00004eb7 +1cf00193 +6fdf1e63 +00100093 +01f09f13 +80000eb7 +1d000193 +6fdf1463 +fff00093 +00009f13 +fff00e93 +1d100193 +6ddf1a63 +fff00093 +00109f13 +ffe00e93 +1d200193 +6ddf1063 +fff00093 +00709f13 +f8000e93 +1d300193 +6bdf1663 +fff00093 +00e09f13 +ffffceb7 +1d400193 +69df1c63 +fff00093 +01f09f13 +80000eb7 +1d500193 +69df1263 +212120b7 +12108093 +00009f13 +21212eb7 +121e8e93 +1d600193 +67df1463 +212120b7 +12108093 +00109f13 +42424eb7 +242e8e93 +1d700193 +65df1663 +212120b7 +12108093 +00709f13 +90909eb7 +080e8e93 +1d800193 +63df1863 +212120b7 +12108093 +00e09f13 +48484eb7 +1d900193 +61df1c63 +212120b7 +12108093 +01f09f13 +80000eb7 +1da00193 +61df1063 +00100093 +00709093 +08000e93 +1de00193 +5fd09663 +00000213 +00100093 +00709f13 +000f0313 +00120213 +00200293 +fe5216e3 +08000e93 +1df00193 +5dd31263 +00000213 +00100093 +00e09f13 +00000013 +000f0313 +00120213 +00200293 +fe5214e3 +00004eb7 +1e000193 +59d31c63 +00000213 +00100093 +01f09f13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +80000eb7 +1e100193 +57d31463 +00000213 +00100093 +00709f13 +00120213 +00200293 +fe5218e3 +08000e93 +1e200193 +55df1263 +00000213 +00100093 +00000013 +00e09f13 +00120213 +00200293 +fe5216e3 +00004eb7 +1e300193 +51df1e63 +00000213 +00100093 +00000013 +00000013 +01f09f13 +00120213 +00200293 +fe5214e3 +80000eb7 +1e400193 +4fdf1863 +01f01093 +00000e93 +1e500193 +4fd09063 +02100093 +01409013 +00000e93 +1e600193 +4dd01663 +00000093 +00000113 +0020af33 +00000e93 +1e700193 +4bdf1a63 +00100093 +00100113 +0020af33 +00000e93 +1e800193 +49df1e63 +00300093 +00700113 +0020af33 +00100e93 +1e900193 +49df1263 +00700093 +00300113 +0020af33 +00000e93 +1ea00193 +47df1663 +00000093 +ffff8137 +0020af33 +00000e93 +1eb00193 +45df1a63 +800000b7 +00000113 +0020af33 +00100e93 +1ec00193 +43df1e63 +800000b7 +ffff8137 +0020af33 +00100e93 +1ed00193 +43df1263 +00000093 +00008137 +fff10113 +0020af33 +00100e93 +1ee00193 +41df1463 +800000b7 +fff08093 +00000113 +0020af33 +00000e93 +1ef00193 +3fdf1663 +800000b7 +fff08093 +00008137 +fff10113 +0020af33 +00000e93 +1f000193 +3ddf1663 +800000b7 +00008137 +fff10113 +0020af33 +00100e93 +1f100193 +3bdf1863 +800000b7 +fff08093 +ffff8137 +0020af33 +00000e93 +1f200193 +39df1a63 +00000093 +fff00113 +0020af33 +00000e93 +1f300193 +37df1e63 +fff00093 +00100113 +0020af33 +00100e93 +1f400193 +37df1263 +fff00093 +fff00113 +0020af33 +00000e93 +1f500193 +35df1663 +00e00093 +00d00113 +0020a0b3 +00000e93 +1f600193 +33d09a63 +00b00093 +00d00113 +0020a133 +00100e93 +1f700193 +31d11e63 +00d00093 +0010a0b3 +00000e93 +1f800193 +31d09463 +00000213 +00b00093 +00d00113 +0020af33 +000f0313 +00120213 +00200293 +fe5214e3 +00100e93 +1f900193 +2dd31e63 +00000213 +00e00093 +00d00113 +0020af33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00000e93 +1fa00193 +2bd31663 +00000213 +00c00093 +00d00113 +0020af33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +00100e93 +1fb00193 +27d31c63 +00000213 +00e00093 +00d00113 +0020af33 +00120213 +00200293 +fe5216e3 +00000e93 +1fc00193 +25df1863 +00000213 +00b00093 +00d00113 +00000013 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +1fd00193 +23df1263 +00000213 +00f00093 +00d00113 +00000013 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +1fe00193 +1fdf1a63 +00000213 +00a00093 +00000013 +00d00113 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +1ff00193 +1ddf1463 +00000213 +01000093 +00000013 +00d00113 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +20000193 +19df1c63 +00000213 +00900093 +00000013 +00000013 +00d00113 +0020af33 +00120213 +00200293 +fe5212e3 +00100e93 +20100193 +17df1463 +00000213 +00d00113 +01100093 +0020af33 +00120213 +00200293 +fe5216e3 +00000e93 +20200193 +15df1063 +00000213 +00d00113 +00800093 +00000013 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +20300193 +11df1a63 +00000213 +00d00113 +01200093 +00000013 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +20400193 +0fdf1263 +00000213 +00d00113 +00000013 +00700093 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +20500193 +0bdf1c63 +00000213 +00d00113 +00000013 +01300093 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +20600193 +09df1463 +00000213 +00d00113 +00000013 +00000013 +00600093 +0020af33 +00120213 +00200293 +fe5212e3 +00100e93 +20700193 +05df1c63 +fff00093 +00102133 +00000e93 +20800193 +05d11263 +fff00093 +0000a133 +00100e93 +20900193 +03d11863 +000020b3 +00000e93 +20a00193 +03d09063 +01000093 +01e00113 +0020a033 +00000e93 +20b00193 +01d01463 +00301463 +00000a6f +00100193 +00000a6f +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +0ff000ff +efefefef +efefefef +0000efef +ff0000ff +f00f0ff0 +beefbeef +beefbeef +beefbeef +beefbeef +beefbeef +00000000 +00ff00ff +ff00ff00 +0ff00ff0 +f00ff00f +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +00000000 +00000000 +14d68693 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 diff --git a/src/Rv32iCPU/benchmark/testB_instruction.txt b/src/Rv32iCPU/benchmark/testB_instruction.txt new file mode 100644 index 0000000..08db896 --- /dev/null +++ b/src/Rv32iCPU/benchmark/testB_instruction.txt @@ -0,0 +1,2721 @@ +00004097 +acc08093 +00008f03 +fff00e93 +0ed00193 +01df0463 +25d0206f +00004097 +ab008093 +00108f03 +00000e93 +0ee00193 +01df0463 +2410206f +00004097 +a9408093 +00208f03 +ff000e93 +0ef00193 +01df0463 +2250206f +00004097 +a7808093 +00308f03 +00f00e93 +0f000193 +01df0463 +2090206f +00004097 +a5f08093 +ffd08f03 +fff00e93 +0f100193 +01df0463 +1ed0206f +00004097 +a4308093 +ffe08f03 +00000e93 +0f200193 +01df0463 +1d10206f +00004097 +a2708093 +fff08f03 +ff000e93 +0f300193 +01df0463 +1b50206f +00004097 +a0b08093 +00008f03 +00f00e93 +0f400193 +01df0463 +1990206f +00004097 +9ec08093 +fe008093 +02008283 +fff00e93 +0f500193 +01d28463 +1790206f +00004097 +9cc08093 +ffa08093 +00708283 +00000e93 +0f600193 +01d28463 +1590206f +0f700193 +00000213 +00004097 +9a508093 +00108f03 +000f0313 +ff000e93 +01d30463 +1350206f +00120213 +00200293 +fc521ee3 +0f800193 +00000213 +00004097 +97608093 +00108f03 +00000013 +000f0313 +00f00e93 +01d30463 +1010206f +00120213 +00200293 +fc521ce3 +0f900193 +00000213 +00004097 +94008093 +00108f03 +00000013 +00000013 +000f0313 +00000e93 +01d30463 +0c90206f +00120213 +00200293 +fc521ae3 +0fa00193 +00000213 +00004097 +90908093 +00108f03 +ff000e93 +01df0463 +09d0206f +00120213 +00200293 +fe5210e3 +0fb00193 +00000213 +00004097 +8de08093 +00000013 +00108f03 +00f00e93 +01df0463 +06d0206f +00120213 +00200293 +fc521ee3 +0fc00193 +00000213 +00004097 +8ac08093 +00000013 +00000013 +00108f03 +00000e93 +01df0463 +0390206f +00120213 +00200293 +fc521ce3 +00004297 +88028293 +00028103 +00200113 +00200e93 +0fd00193 +01d10463 +00d0206f +00004297 +86028293 +00028103 +00000013 +00200113 +00200e93 +0fe00193 +01d10463 +7e80206f +00004097 +83c08093 +0000cf03 +0ff00e93 +0ff00193 +01df0463 +7cc0206f +00004097 +82008093 +0010cf03 +00000e93 +10000193 +01df0463 +7b00206f +00004097 +80408093 +0020cf03 +0f000e93 +10100193 +01df0463 +7940206f +00003097 +7e808093 +0030cf03 +00f00e93 +10200193 +01df0463 +7780206f +00003097 +7cf08093 +ffd0cf03 +0ff00e93 +10300193 +01df0463 +75c0206f +00003097 +7b308093 +ffe0cf03 +00000e93 +10400193 +01df0463 +7400206f +00003097 +79708093 +fff0cf03 +0f000e93 +10500193 +01df0463 +7240206f +00003097 +77b08093 +0000cf03 +00f00e93 +10600193 +01df0463 +7080206f +00003097 +75c08093 +fe008093 +0200c283 +0ff00e93 +10700193 +01d28463 +6e80206f +00003097 +73c08093 +ffa08093 +0070c283 +00000e93 +10800193 +01d28463 +6c80206f +10900193 +00000213 +00003097 +71508093 +0010cf03 +000f0313 +0f000e93 +01d30463 +6a40206f +00120213 +00200293 +fc521ee3 +10a00193 +00000213 +00003097 +6e608093 +0010cf03 +00000013 +000f0313 +00f00e93 +01d30463 +6700206f +00120213 +00200293 +fc521ce3 +10b00193 +00000213 +00003097 +6b008093 +0010cf03 +00000013 +00000013 +000f0313 +00000e93 +01d30463 +6380206f +00120213 +00200293 +fc521ae3 +10c00193 +00000213 +00003097 +67908093 +0010cf03 +0f000e93 +01df0463 +60c0206f +00120213 +00200293 +fe5210e3 +10d00193 +00000213 +00003097 +64e08093 +00000013 +0010cf03 +00f00e93 +01df0463 +5dc0206f +00120213 +00200293 +fc521ee3 +10e00193 +00000213 +00003097 +61c08093 +00000013 +00000013 +0010cf03 +00000e93 +01df0463 +5a80206f +00120213 +00200293 +fc521ce3 +00003297 +5f028293 +0002c103 +00200113 +00200e93 +10f00193 +01d10463 +57c0206f +00003297 +5d028293 +0002c103 +00000013 +00200113 +00200e93 +11000193 +01d10463 +5580206f +00003097 +5bc08093 +00009f03 +0ff00e93 +11100193 +01df0463 +53c0206f +00003097 +5a008093 +00209f03 +f0000e93 +11200193 +01df0463 +5200206f +00003097 +58408093 +00409f03 +00001eb7 +ff0e8e93 +11300193 +01df0463 +5000206f +00003097 +56408093 +00609f03 +fffffeb7 +00fe8e93 +11400193 +01df0463 +4e00206f +00003097 +54a08093 +ffa09f03 +0ff00e93 +11500193 +01df0463 +4c40206f +00003097 +52e08093 +ffc09f03 +f0000e93 +11600193 +01df0463 +4a80206f +00003097 +51208093 +ffe09f03 +00001eb7 +ff0e8e93 +11700193 +01df0463 +4880206f +00003097 +4f208093 +00009f03 +fffffeb7 +00fe8e93 +11800193 +01df0463 +4680206f +00003097 +4cc08093 +fe008093 +02009283 +0ff00e93 +11900193 +01d28463 +4480206f +00003097 +4ac08093 +ffb08093 +00709283 +f0000e93 +11a00193 +01d28463 +4280206f +11b00193 +00000213 +00003097 +48608093 +00209f03 +000f0313 +00001eb7 +ff0e8e93 +01d30463 +4000206f +00120213 +00200293 +fc521ce3 +11c00193 +00000213 +00003097 +45408093 +00209f03 +00000013 +000f0313 +fffffeb7 +00fe8e93 +01d30463 +3c80206f +00120213 +00200293 +fc521ae3 +11d00193 +00000213 +00003097 +41808093 +00209f03 +00000013 +00000013 +000f0313 +f0000e93 +01d30463 +3900206f +00120213 +00200293 +fc521ae3 +11e00193 +00000213 +00003097 +3e208093 +00209f03 +00001eb7 +ff0e8e93 +01df0463 +3600206f +00120213 +00200293 +fc521ee3 +11f00193 +00000213 +00003097 +3b408093 +00000013 +00209f03 +fffffeb7 +00fe8e93 +01df0463 +32c0206f +00120213 +00200293 +fc521ce3 +12000193 +00000213 +00003097 +37c08093 +00000013 +00000013 +00209f03 +f0000e93 +01df0463 +2f80206f +00120213 +00200293 +fc521ce3 +00003297 +35028293 +00029103 +00200113 +00200e93 +12100193 +01d10463 +2cc0206f +00003297 +33028293 +00029103 +00000013 +00200113 +00200e93 +12200193 +01d10463 +2a80206f +00003097 +30c08093 +0000df03 +0ff00e93 +12300193 +01df0463 +28c0206f +00003097 +2f008093 +0020df03 +00010eb7 +f00e8e93 +12400193 +01df0463 +26c0206f +00003097 +2d008093 +0040df03 +00001eb7 +ff0e8e93 +12500193 +01df0463 +24c0206f +00003097 +2b008093 +0060df03 +0000feb7 +00fe8e93 +12600193 +01df0463 +22c0206f +00003097 +29608093 +ffa0df03 +0ff00e93 +12700193 +01df0463 +2100206f +00003097 +27a08093 +ffc0df03 +00010eb7 +f00e8e93 +12800193 +01df0463 +1f00206f +00003097 +25a08093 +ffe0df03 +00001eb7 +ff0e8e93 +12900193 +01df0463 +1d00206f +00003097 +23a08093 +0000df03 +0000feb7 +00fe8e93 +12a00193 +01df0463 +1b00206f +00003097 +21408093 +fe008093 +0200d283 +0ff00e93 +12b00193 +01d28463 +1900206f +00003097 +1f408093 +ffb08093 +0070d283 +00010eb7 +f00e8e93 +12c00193 +01d28463 +16c0206f +12d00193 +00000213 +00003097 +1ca08093 +0020df03 +000f0313 +00001eb7 +ff0e8e93 +01d30463 +1440206f +00120213 +00200293 +fc521ce3 +12e00193 +00000213 +00003097 +19808093 +0020df03 +00000013 +000f0313 +0000feb7 +00fe8e93 +01d30463 +10c0206f +00120213 +00200293 +fc521ae3 +12f00193 +00000213 +00003097 +15c08093 +0020df03 +00000013 +00000013 +000f0313 +00010eb7 +f00e8e93 +01d30463 +0d00206f +00120213 +00200293 +fc5218e3 +13000193 +00000213 +00003097 +12208093 +0020df03 +00001eb7 +ff0e8e93 +01df0463 +0a00206f +00120213 +00200293 +fc521ee3 +13100193 +00000213 +00003097 +0f408093 +00000013 +0020df03 +0000feb7 +00fe8e93 +01df0463 +06c0206f +00120213 +00200293 +fc521ce3 +13200193 +00000213 +00003097 +0bc08093 +00000013 +00000013 +0020df03 +00010eb7 +f00e8e93 +01df0463 +0340206f +00120213 +00200293 +fc521ae3 +00003297 +08c28293 +0002d103 +00200113 +00200e93 +13300193 +01d10463 +0080206f +00003297 +06c28293 +0002d103 +00000013 +00200113 +00200e93 +13400193 +01d10463 +7e50106f +000000b7 +00000e93 +13500193 +01d08463 +7d10106f +fffff0b7 +4010d093 +80000e93 +13600193 +01d08463 +7b90106f +7ffff0b7 +4140d093 +7ff00e93 +13700193 +01d08463 +7a10106f +800000b7 +4140d093 +80000e93 +13800193 +01d08463 +7890106f +80000037 +00000e93 +13900193 +01d00463 +7750106f +00003097 +ff808093 +0000af03 +00ff0eb7 +0ffe8e93 +13a00193 +01df0463 +7550106f +00003097 +fd808093 +0040af03 +ff010eb7 +f00e8e93 +13b00193 +01df0463 +7350106f +00003097 +fb808093 +0080af03 +0ff01eb7 +ff0e8e93 +13c00193 +01df0463 +7150106f +00003097 +f9808093 +00c0af03 +f00ffeb7 +00fe8e93 +13d00193 +01df0463 +6f50106f +00003097 +f8408093 +ff40af03 +00ff0eb7 +0ffe8e93 +13e00193 +01df0463 +6d50106f +00003097 +f6408093 +ff80af03 +ff010eb7 +f00e8e93 +13f00193 +01df0463 +6b50106f +00003097 +f4408093 +ffc0af03 +0ff01eb7 +ff0e8e93 +14000193 +01df0463 +6950106f +00003097 +f2408093 +0000af03 +f00ffeb7 +00fe8e93 +14100193 +01df0463 +6750106f +00003097 +ef808093 +fe008093 +0200a283 +00ff0eb7 +0ffe8e93 +14200193 +01d28463 +6510106f +00003097 +ed408093 +ffd08093 +0070a283 +ff010eb7 +f00e8e93 +14300193 +01d28463 +62d0106f +14400193 +00000213 +00003097 +eac08093 +0040af03 +000f0313 +0ff01eb7 +ff0e8e93 +01d30463 +6050106f +00120213 +00200293 +fc521ce3 +14500193 +00000213 +00003097 +e7c08093 +0040af03 +00000013 +000f0313 +f00ffeb7 +00fe8e93 +01d30463 +5cd0106f +00120213 +00200293 +fc521ae3 +14600193 +00000213 +00003097 +e3c08093 +0040af03 +00000013 +00000013 +000f0313 +ff010eb7 +f00e8e93 +01d30463 +5910106f +00120213 +00200293 +fc5218e3 +14700193 +00000213 +00003097 +e0408093 +0040af03 +0ff01eb7 +ff0e8e93 +01df0463 +5610106f +00120213 +00200293 +fc521ee3 +14800193 +00000213 +00003097 +dd808093 +00000013 +0040af03 +f00ffeb7 +00fe8e93 +01df0463 +52d0106f +00120213 +00200293 +fc521ce3 +14900193 +00000213 +00003097 +d9c08093 +00000013 +00000013 +0040af03 +ff010eb7 +f00e8e93 +01df0463 +4f50106f +00120213 +00200293 +fc521ae3 +00003297 +d6c28293 +0002a103 +00200113 +00200e93 +14a00193 +01d10463 +4c90106f +00003297 +d4c28293 +0002a103 +00000013 +00200113 +00200e93 +14b00193 +01d10463 +4a50106f +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020ef33 +ff100eb7 +f0fe8e93 +14c00193 +01df0463 +47d0106f +0ff010b7 +ff008093 +f0f0f137 +0f010113 +0020ef33 +fff10eb7 +ff0e8e93 +14d00193 +01df0463 +4550106f +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +0020ef33 +0fff1eb7 +fffe8e93 +14e00193 +01df0463 +42d0106f +f00ff0b7 +00f08093 +f0f0f137 +0f010113 +0020ef33 +f0fffeb7 +0ffe8e93 +14f00193 +01df0463 +4050106f +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020e0b3 +ff100eb7 +f0fe8e93 +15000193 +01d08463 +3dd0106f +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020e133 +ff100eb7 +f0fe8e93 +15100193 +01d10463 +3b50106f +ff0100b7 +f0008093 +0010e0b3 +ff010eb7 +f00e8e93 +15200193 +01d08463 +3950106f +00000213 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020ef33 +000f0313 +00120213 +00200293 +fe5210e3 +ff100eb7 +f0fe8e93 +15300193 +01d30463 +3590106f +00000213 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +0020ef33 +00000013 +000f0313 +00120213 +00200293 +fc521ee3 +fff10eb7 +ff0e8e93 +15400193 +01d30463 +3190106f +00000213 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +0020ef33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fc521ce3 +0fff1eb7 +fffe8e93 +15500193 +01d30463 +2d50106f +00000213 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020ef33 +00120213 +00200293 +fe5212e3 +ff100eb7 +f0fe8e93 +15600193 +01df0463 +29d0106f +00000213 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +00000013 +0020ef33 +00120213 +00200293 +fe5210e3 +fff10eb7 +ff0e8e93 +15700193 +01df0463 +2610106f +00000213 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +00000013 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +15800193 +01df0463 +2210106f +00000213 +ff0100b7 +f0008093 +00000013 +0f0f1137 +f0f10113 +0020ef33 +00120213 +00200293 +fe5210e3 +ff100eb7 +f0fe8e93 +15900193 +01df0463 +1e50106f +00000213 +0ff010b7 +ff008093 +00000013 +f0f0f137 +0f010113 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +fff10eb7 +ff0e8e93 +15a00193 +01df0463 +1a50106f +00000213 +00ff00b7 +0ff08093 +00000013 +00000013 +0f0f1137 +f0f10113 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +15b00193 +01df0463 +1650106f +00000213 +0f0f1137 +f0f10113 +ff0100b7 +f0008093 +0020ef33 +00120213 +00200293 +fe5212e3 +ff100eb7 +f0fe8e93 +15c00193 +01df0463 +12d0106f +00000213 +f0f0f137 +0f010113 +0ff010b7 +ff008093 +00000013 +0020ef33 +00120213 +00200293 +fe5210e3 +fff10eb7 +ff0e8e93 +15d00193 +01df0463 +0f10106f +00000213 +0f0f1137 +f0f10113 +00ff00b7 +0ff08093 +00000013 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +15e00193 +01df0463 +0b10106f +00000213 +0f0f1137 +f0f10113 +00000013 +ff0100b7 +f0008093 +0020ef33 +00120213 +00200293 +fe5210e3 +ff100eb7 +f0fe8e93 +15f00193 +01df0463 +0750106f +00000213 +f0f0f137 +0f010113 +00000013 +0ff010b7 +ff008093 +00000013 +0020ef33 +00120213 +00200293 +fc521ee3 +fff10eb7 +ff0e8e93 +16000193 +01df0463 +0350106f +00000213 +0f0f1137 +f0f10113 +00000013 +00000013 +00ff00b7 +0ff08093 +0020ef33 +00120213 +00200293 +fc521ee3 +0fff1eb7 +fffe8e93 +16100193 +01df0463 +7f40106f +ff0100b7 +f0008093 +00106133 +ff010eb7 +f00e8e93 +16200193 +01d10463 +7d40106f +00ff00b7 +0ff08093 +0000e133 +00ff0eb7 +0ffe8e93 +16300193 +01d10463 +7b40106f +000060b3 +00000e93 +16400193 +01d08463 +7a00106f +111110b7 +11108093 +22222137 +22210113 +0020e033 +00000e93 +16500193 +01d00463 +77c0106f +ff0100b7 +f0008093 +f0f0ef13 +f0f00e93 +16600193 +01df0463 +7600106f +0ff010b7 +ff008093 +0f00ef13 +0ff01eb7 +ff0e8e93 +16700193 +01df0463 +7400106f +00ff00b7 +0ff08093 +70f0ef13 +00ff0eb7 +7ffe8e93 +16800193 +01df0463 +7200106f +f00ff0b7 +00f08093 +0f00ef13 +f00ffeb7 +0ffe8e93 +16900193 +01df0463 +7000106f +ff0100b7 +f0008093 +0f00e093 +ff010eb7 +ff0e8e93 +16a00193 +01d08463 +6e00106f +00000213 +0ff010b7 +ff008093 +0f00ef13 +000f0313 +00120213 +00200293 +fe5214e3 +0ff01eb7 +ff0e8e93 +16b00193 +01d30463 +6ac0106f +00000213 +00ff00b7 +0ff08093 +70f0ef13 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00ff0eb7 +7ffe8e93 +16c00193 +01d30463 +6740106f +00000213 +f00ff0b7 +00f08093 +0f00ef13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +f00ffeb7 +0ffe8e93 +16d00193 +01d30463 +6380106f +00000213 +0ff010b7 +ff008093 +0f00ef13 +00120213 +00200293 +fe5216e3 +0ff01eb7 +ff0e8e93 +16e00193 +01df0463 +6080106f +00000213 +00ff00b7 +0ff08093 +00000013 +f0f0ef13 +00120213 +00200293 +fe5214e3 +fff00e93 +16f00193 +01df0463 +5d80106f +00000213 +f00ff0b7 +00f08093 +00000013 +00000013 +0f00ef13 +00120213 +00200293 +fe5212e3 +f00ffeb7 +0ffe8e93 +17000193 +01df0463 +5a00106f +0f006093 +0f000e93 +17100193 +01d08463 +58c0106f +00ff00b7 +0ff08093 +70f0e013 +00000e93 +17200193 +01d00463 +5700106f +00002097 +5c808093 +faa00113 +00208023 +00008f03 +faa00e93 +17300193 +01df0463 +54c0106f +00002097 +5a408093 +00000113 +002080a3 +00108f03 +00000e93 +17400193 +01df0463 +5280106f +00002097 +58008093 +fffff137 +fa010113 +00208123 +00209f03 +fffffeb7 +fa0e8e93 +17500193 +01df0463 +4fc0106f +00002097 +55408093 +00a00113 +002081a3 +00308f03 +00a00e93 +17600193 +01df0463 +4d80106f +00002097 +53708093 +faa00113 +fe208ea3 +ffd08f03 +faa00e93 +17700193 +01df0463 +4b40106f +00002097 +51308093 +00000113 +fe208f23 +ffe08f03 +00000e93 +17800193 +01df0463 +4900106f +00002097 +4ef08093 +fa000113 +fe208fa3 +fff08f03 +fa000e93 +17900193 +01df0463 +46c0106f +00002097 +4cb08093 +00a00113 +00208023 +00008f03 +00a00e93 +17a00193 +01df0463 +4480106f +00002097 +4a808093 +12345137 +67810113 +fe008213 +02220023 +00008283 +07800e93 +17b00193 +01d28463 +41c0106f +00002097 +47c08093 +00003137 +09810113 +ffa08093 +002083a3 +00002217 +46520213 +00020283 +f9800e93 +17c00193 +01d28463 +3e80106f +17d00193 +00000213 +fdd00093 +00002117 +43410113 +00110023 +00010f03 +fdd00e93 +01df0463 +3c00106f +00120213 +00200293 +fc521ce3 +17e00193 +00000213 +fcd00093 +00002117 +40010113 +00000013 +001100a3 +00110f03 +fcd00e93 +01df0463 +3880106f +00120213 +00200293 +fc521ae3 +17f00193 +00000213 +fcc00093 +00002117 +3c810113 +00000013 +00000013 +00110123 +00210f03 +fcc00e93 +01df0463 +34c0106f +00120213 +00200293 +fc5218e3 +18000193 +00000213 +fbc00093 +00000013 +00002117 +38810113 +001101a3 +00310f03 +fbc00e93 +01df0463 +3140106f +00120213 +00200293 +fc521ae3 +18100193 +00000213 +fbb00093 +00000013 +00002117 +35010113 +00000013 +00110223 +00410f03 +fbb00e93 +01df0463 +2d80106f +00120213 +00200293 +fc5218e3 +18200193 +00000213 +fab00093 +00000013 +00000013 +00002117 +31010113 +001102a3 +00510f03 +fab00e93 +01df0463 +29c0106f +00120213 +00200293 +fc5218e3 +18300193 +00000213 +00002117 +2e010113 +03300093 +00110023 +00010f03 +03300e93 +01df0463 +2680106f +00120213 +00200293 +fc521ce3 +18400193 +00000213 +00002117 +2ac10113 +02300093 +00000013 +001100a3 +00110f03 +02300e93 +01df0463 +2300106f +00120213 +00200293 +fc521ae3 +18500193 +00000213 +00002117 +27410113 +02200093 +00000013 +00000013 +00110123 +00210f03 +02200e93 +01df0463 +1f40106f +00120213 +00200293 +fc5218e3 +18600193 +00000213 +00002117 +23810113 +00000013 +01200093 +001101a3 +00310f03 +01200e93 +01df0463 +1bc0106f +00120213 +00200293 +fc521ae3 +18700193 +00000213 +00002117 +20010113 +00000013 +01100093 +00000013 +00110223 +00410f03 +01100e93 +01df0463 +1800106f +00120213 +00200293 +fc5218e3 +18800193 +00000213 +00002117 +1c410113 +00000013 +00000013 +00100093 +001102a3 +00510f03 +00100e93 +01df0463 +1440106f +00120213 +00200293 +fc5218e3 +0ef00513 +00002597 +18c58593 +00a581a3 +00002097 +19408093 +0aa00113 +00209023 +00009f03 +0aa00e93 +18900193 +01df0463 +1040106f +00002097 +17008093 +ffffb137 +a0010113 +00209123 +00209f03 +ffffbeb7 +a00e8e93 +18a00193 +01df0463 +0d80106f +00002097 +14408093 +beef1137 +aa010113 +00209223 +0040af03 +beef1eb7 +aa0e8e93 +18b00193 +01df0463 +0ac0106f +00002097 +11808093 +ffffa137 +00a10113 +00209323 +00609f03 +ffffaeb7 +00ae8e93 +18c00193 +01df0463 +0800106f +00002097 +0fa08093 +0aa00113 +fe209d23 +ffa09f03 +0aa00e93 +18d00193 +01df0463 +05c0106f +00002097 +0d608093 +ffffb137 +a0010113 +fe209e23 +ffc09f03 +ffffbeb7 +a00e8e93 +18e00193 +01df0463 +0300106f +00002097 +0aa08093 +00001137 +aa010113 +fe209f23 +ffe09f03 +00001eb7 +aa0e8e93 +18f00193 +01df0463 +0040106f +00002097 +07e08093 +ffffa137 +00a10113 +00209023 +00009f03 +ffffaeb7 +00ae8e93 +19000193 +7ddf1ee3 +00002097 +05808093 +12345137 +67810113 +fe008213 +02221023 +00009283 +00005eb7 +678e8e93 +19100193 +7bd298e3 +00002097 +02c08093 +00003137 +09810113 +ffb08093 +002093a3 +00002217 +01620213 +00021283 +00003eb7 +098e8e93 +19200193 +77d29ee3 +19300193 +00000213 +ffffd0b7 +cdd08093 +00002117 +fd810113 +00111023 +00011f03 +ffffdeb7 +cdde8e93 +75df18e3 +00120213 +00200293 +fc521ae3 +19400193 +00000213 +ffffc0b7 +ccd08093 +00002117 +fa010113 +00000013 +00111123 +00211f03 +ffffceb7 +ccde8e93 +71df1ae3 +00120213 +00200293 +fc5218e3 +19500193 +00000213 +ffffc0b7 +bcc08093 +00002117 +f6410113 +00000013 +00000013 +00111223 +00411f03 +ffffceb7 +bcce8e93 +6ddf1ae3 +00120213 +00200293 +fc5216e3 +19600193 +00000213 +ffffb0b7 +bbc08093 +00000013 +00002117 +f2010113 +00111323 +00611f03 +ffffbeb7 +bbce8e93 +69df1ce3 +00120213 +00200293 +fc5218e3 +19700193 +00000213 +ffffb0b7 +abb08093 +00000013 +00002117 +ee410113 +00000013 +00111423 +00811f03 +ffffbeb7 +abbe8e93 +65df1ce3 +00120213 +00200293 +fc5216e3 +19800193 +00000213 +ffffe0b7 +aab08093 +00000013 +00000013 +00002117 +ea010113 +00111523 +00a11f03 +ffffeeb7 +aabe8e93 +61df1ce3 +00120213 +00200293 +fc5216e3 +19900193 +00000213 +00002117 +e7010113 +000020b7 +23308093 +00111023 +00011f03 +00002eb7 +233e8e93 +5fdf10e3 +00120213 +00200293 +fc521ae3 +19a00193 +00000213 +00002117 +e3810113 +000010b7 +22308093 +00000013 +00111123 +00211f03 +00001eb7 +223e8e93 +5bdf12e3 +00120213 +00200293 +fc5218e3 +19b00193 +00000213 +00002117 +dfc10113 +000010b7 +12208093 +00000013 +00000013 +00111223 +00411f03 +00001eb7 +122e8e93 +57df12e3 +00120213 +00200293 +fc5216e3 +19c00193 +00000213 +00002117 +dbc10113 +00000013 +11200093 +00111323 +00611f03 +11200e93 +53df18e3 +00120213 +00200293 +fc521ce3 +19d00193 +00000213 +00002117 +d8810113 +00000013 +01100093 +00000013 +00111423 +00811f03 +01100e93 +4fdf1ce3 +00120213 +00200293 +fc521ae3 +19e00193 +00000213 +00002117 +d5010113 +00000013 +00000013 +000030b7 +00108093 +00111523 +00a11f03 +00003eb7 +001e8e93 +4bdf1ce3 +00120213 +00200293 +fc5216e3 +0000c537 +eef50513 +00002597 +d1058593 +00a59323 +00100093 +00000113 +00209f33 +00100e93 +19f00193 +49df10e3 +00100093 +00100113 +00209f33 +00200e93 +1a000193 +47df14e3 +00100093 +00700113 +00209f33 +08000e93 +1a100193 +45df18e3 +00100093 +00e00113 +00209f33 +00004eb7 +1a200193 +43df1ce3 +00100093 +01f00113 +00209f33 +80000eb7 +1a300193 +43df10e3 +fff00093 +00000113 +00209f33 +fff00e93 +1a400193 +41df14e3 +fff00093 +00100113 +00209f33 +ffe00e93 +1a500193 +3fdf18e3 +fff00093 +00700113 +00209f33 +f8000e93 +1a600193 +3ddf1ce3 +fff00093 +00e00113 +00209f33 +ffffceb7 +1a700193 +3ddf10e3 +fff00093 +01f00113 +00209f33 +80000eb7 +1a800193 +3bdf14e3 +212120b7 +12108093 +00000113 +00209f33 +21212eb7 +121e8e93 +1a900193 +39df14e3 +212120b7 +12108093 +00100113 +00209f33 +42424eb7 +242e8e93 +1aa00193 +37df14e3 +212120b7 +12108093 +00700113 +00209f33 +90909eb7 +080e8e93 +1ab00193 +35df14e3 +212120b7 +12108093 +00e00113 +00209f33 +48484eb7 +1ac00193 +33df16e3 +212120b7 +12108093 +01f00113 +00209f33 +80000eb7 +1ad00193 +31df18e3 +212120b7 +12108093 +fc000113 +00209f33 +21212eb7 +121e8e93 +1ae00193 +2fdf18e3 +212120b7 +12108093 +fc100113 +00209f33 +42424eb7 +242e8e93 +1af00193 +2ddf18e3 +212120b7 +12108093 +fc700113 +00209f33 +90909eb7 +080e8e93 +1b000193 +2bdf18e3 +212120b7 +12108093 +fce00113 +00209f33 +48484eb7 +1b100193 +29df1ae3 +00100093 +00700113 +002090b3 +08000e93 +1b600193 +27d09ee3 +00100093 +00e00113 +00209133 +00004eb7 +1b700193 +27d112e3 +00300093 +001090b3 +01800e93 +1b800193 +25d098e3 +00000213 +00100093 +00700113 +00209f33 +000f0313 +00120213 +00200293 +fe5214e3 +08000e93 +1b900193 +23d312e3 +00000213 +00100093 +00e00113 +00209f33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00004eb7 +1ba00193 +1fd31ae3 +00000213 +00100093 +01f00113 +00209f33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +80000eb7 +1bb00193 +1dd310e3 +00000213 +00100093 +00700113 +00209f33 +00120213 +00200293 +fe5216e3 +08000e93 +1bc00193 +19df1ce3 +00000213 +00100093 +00e00113 +00000013 +00209f33 +00120213 +00200293 +fe5214e3 +00004eb7 +1bd00193 +17df16e3 +00000213 +00100093 +01f00113 +00000013 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1be00193 +13df1ee3 +00000213 +00100093 +00000013 +00700113 +00209f33 +00120213 +00200293 +fe5214e3 +08000e93 +1bf00193 +11df18e3 +00000213 +00100093 +00000013 +00e00113 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +00004eb7 +1c000193 +0fdf10e3 +00000213 +00100093 +00000013 +00000013 +01f00113 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1c100193 +0bdf18e3 +00000213 +00700113 +00100093 +00209f33 +00120213 +00200293 +fe5216e3 +08000e93 +1c200193 +09df14e3 +00000213 +00e00113 +00100093 +00000013 +00209f33 +00120213 +00200293 +fe5214e3 +00004eb7 +1c300193 +05df1ee3 +00000213 +01f00113 +00100093 +00000013 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1c400193 +03df16e3 +00000213 +00700113 +00000013 +00100093 +00209f33 +00120213 +00200293 +fe5214e3 +08000e93 +1c500193 +01df10e3 +00000213 +00e00113 +00000013 +00100093 +00000013 +00209f33 +00120213 +00200293 +fe5212e3 +00004eb7 +1c600193 +7ddf1863 +00000213 +01f00113 +00000013 +00000013 +00100093 +00209f33 +00120213 +00200293 +fe5212e3 +80000eb7 +1c700193 +7bdf1063 +00f00093 +00101133 +00000e93 +1c800193 +79d11663 +02000093 +00009133 +02000e93 +1c900193 +77d11c63 +000010b3 +00000e93 +1ca00193 +77d09463 +40000093 +00001137 +80010113 +00209033 +00000e93 +1cb00193 +75d01663 +00100093 +00009f13 +00100e93 +1cc00193 +73df1c63 +00100093 +00109f13 +00200e93 +1cd00193 +73df1263 +00100093 +00709f13 +08000e93 +1ce00193 +71df1863 +00100093 +00e09f13 +00004eb7 +1cf00193 +6fdf1e63 +00100093 +01f09f13 +80000eb7 +1d000193 +6fdf1463 +fff00093 +00009f13 +fff00e93 +1d100193 +6ddf1a63 +fff00093 +00109f13 +ffe00e93 +1d200193 +6ddf1063 +fff00093 +00709f13 +f8000e93 +1d300193 +6bdf1663 +fff00093 +00e09f13 +ffffceb7 +1d400193 +69df1c63 +fff00093 +01f09f13 +80000eb7 +1d500193 +69df1263 +212120b7 +12108093 +00009f13 +21212eb7 +121e8e93 +1d600193 +67df1463 +212120b7 +12108093 +00109f13 +42424eb7 +242e8e93 +1d700193 +65df1663 +212120b7 +12108093 +00709f13 +90909eb7 +080e8e93 +1d800193 +63df1863 +212120b7 +12108093 +00e09f13 +48484eb7 +1d900193 +61df1c63 +212120b7 +12108093 +01f09f13 +80000eb7 +1da00193 +61df1063 +00100093 +00709093 +08000e93 +1de00193 +5fd09663 +00000213 +00100093 +00709f13 +000f0313 +00120213 +00200293 +fe5216e3 +08000e93 +1df00193 +5dd31263 +00000213 +00100093 +00e09f13 +00000013 +000f0313 +00120213 +00200293 +fe5214e3 +00004eb7 +1e000193 +59d31c63 +00000213 +00100093 +01f09f13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +80000eb7 +1e100193 +57d31463 +00000213 +00100093 +00709f13 +00120213 +00200293 +fe5218e3 +08000e93 +1e200193 +55df1263 +00000213 +00100093 +00000013 +00e09f13 +00120213 +00200293 +fe5216e3 +00004eb7 +1e300193 +51df1e63 +00000213 +00100093 +00000013 +00000013 +01f09f13 +00120213 +00200293 +fe5214e3 +80000eb7 +1e400193 +4fdf1863 +01f01093 +00000e93 +1e500193 +4fd09063 +02100093 +01409013 +00000e93 +1e600193 +4dd01663 +00000093 +00000113 +0020af33 +00000e93 +1e700193 +4bdf1a63 +00100093 +00100113 +0020af33 +00000e93 +1e800193 +49df1e63 +00300093 +00700113 +0020af33 +00100e93 +1e900193 +49df1263 +00700093 +00300113 +0020af33 +00000e93 +1ea00193 +47df1663 +00000093 +ffff8137 +0020af33 +00000e93 +1eb00193 +45df1a63 +800000b7 +00000113 +0020af33 +00100e93 +1ec00193 +43df1e63 +800000b7 +ffff8137 +0020af33 +00100e93 +1ed00193 +43df1263 +00000093 +00008137 +fff10113 +0020af33 +00100e93 +1ee00193 +41df1463 +800000b7 +fff08093 +00000113 +0020af33 +00000e93 +1ef00193 +3fdf1663 +800000b7 +fff08093 +00008137 +fff10113 +0020af33 +00000e93 +1f000193 +3ddf1663 +800000b7 +00008137 +fff10113 +0020af33 +00100e93 +1f100193 +3bdf1863 +800000b7 +fff08093 +ffff8137 +0020af33 +00000e93 +1f200193 +39df1a63 +00000093 +fff00113 +0020af33 +00000e93 +1f300193 +37df1e63 +fff00093 +00100113 +0020af33 +00100e93 +1f400193 +37df1263 +fff00093 +fff00113 +0020af33 +00000e93 +1f500193 +35df1663 +00e00093 +00d00113 +0020a0b3 +00000e93 +1f600193 +33d09a63 +00b00093 +00d00113 +0020a133 +00100e93 +1f700193 +31d11e63 +00d00093 +0010a0b3 +00000e93 +1f800193 +31d09463 +00000213 +00b00093 +00d00113 +0020af33 +000f0313 +00120213 +00200293 +fe5214e3 +00100e93 +1f900193 +2dd31e63 +00000213 +00e00093 +00d00113 +0020af33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00000e93 +1fa00193 +2bd31663 +00000213 +00c00093 +00d00113 +0020af33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +00100e93 +1fb00193 +27d31c63 +00000213 +00e00093 +00d00113 +0020af33 +00120213 +00200293 +fe5216e3 +00000e93 +1fc00193 +25df1863 +00000213 +00b00093 +00d00113 +00000013 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +1fd00193 +23df1263 +00000213 +00f00093 +00d00113 +00000013 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +1fe00193 +1fdf1a63 +00000213 +00a00093 +00000013 +00d00113 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +1ff00193 +1ddf1463 +00000213 +01000093 +00000013 +00d00113 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +20000193 +19df1c63 +00000213 +00900093 +00000013 +00000013 +00d00113 +0020af33 +00120213 +00200293 +fe5212e3 +00100e93 +20100193 +17df1463 +00000213 +00d00113 +01100093 +0020af33 +00120213 +00200293 +fe5216e3 +00000e93 +20200193 +15df1063 +00000213 +00d00113 +00800093 +00000013 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +20300193 +11df1a63 +00000213 +00d00113 +01200093 +00000013 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +20400193 +0fdf1263 +00000213 +00d00113 +00000013 +00700093 +0020af33 +00120213 +00200293 +fe5214e3 +00100e93 +20500193 +0bdf1c63 +00000213 +00d00113 +00000013 +01300093 +00000013 +0020af33 +00120213 +00200293 +fe5212e3 +00000e93 +20600193 +09df1463 +00000213 +00d00113 +00000013 +00000013 +00600093 +0020af33 +00120213 +00200293 +fe5212e3 +00100e93 +20700193 +05df1c63 +fff00093 +00102133 +00000e93 +20800193 +05d11263 +fff00093 +0000a133 +00100e93 +20900193 +03d11863 +000020b3 +00000e93 +20a00193 +03d09063 +01000093 +01e00113 +0020a033 +00000e93 +20b00193 +01d01463 +00301463 +00000a6f +00100193 +00000a6f +00000000 diff --git a/src/Rv32iCPU/benchmark/testC_assembly.txt b/src/Rv32iCPU/benchmark/testC_assembly.txt new file mode 100644 index 0000000..fd648f4 --- /dev/null +++ b/src/Rv32iCPU/benchmark/testC_assembly.txt @@ -0,0 +1,3538 @@ +00010084 : + 10084: 00000093 li ra,0 + 10088: 0000af13 slti t5,ra,0 + 1008c: 00000e93 li t4,0 + 10090: 20c00193 li gp,524 + 10094: 01df0463 beq t5,t4,1009c + 10098: 54d0206f j 12de4 + +0001009c : + 1009c: 00100093 li ra,1 + 100a0: 0010af13 slti t5,ra,1 + 100a4: 00000e93 li t4,0 + 100a8: 20d00193 li gp,525 + 100ac: 01df0463 beq t5,t4,100b4 + 100b0: 5350206f j 12de4 + +000100b4 : + 100b4: 00300093 li ra,3 + 100b8: 0070af13 slti t5,ra,7 + 100bc: 00100e93 li t4,1 + 100c0: 20e00193 li gp,526 + 100c4: 01df0463 beq t5,t4,100cc + 100c8: 51d0206f j 12de4 + +000100cc : + 100cc: 00700093 li ra,7 + 100d0: 0030af13 slti t5,ra,3 + 100d4: 00000e93 li t4,0 + 100d8: 20f00193 li gp,527 + 100dc: 01df0463 beq t5,t4,100e4 + 100e0: 5050206f j 12de4 + +000100e4 : + 100e4: 00000093 li ra,0 + 100e8: 8000af13 slti t5,ra,-2048 + 100ec: 00000e93 li t4,0 + 100f0: 21000193 li gp,528 + 100f4: 01df0463 beq t5,t4,100fc + 100f8: 4ed0206f j 12de4 + +000100fc : + 100fc: 800000b7 lui ra,0x80000 + 10100: 0000af13 slti t5,ra,0 + 10104: 00100e93 li t4,1 + 10108: 21100193 li gp,529 + 1010c: 01df0463 beq t5,t4,10114 + 10110: 4d50206f j 12de4 + +00010114 : + 10114: 800000b7 lui ra,0x80000 + 10118: 8000af13 slti t5,ra,-2048 + 1011c: 00100e93 li t4,1 + 10120: 21200193 li gp,530 + 10124: 01df0463 beq t5,t4,1012c + 10128: 4bd0206f j 12de4 + +0001012c : + 1012c: 00000093 li ra,0 + 10130: 7ff0af13 slti t5,ra,2047 + 10134: 00100e93 li t4,1 + 10138: 21300193 li gp,531 + 1013c: 01df0463 beq t5,t4,10144 + 10140: 4a50206f j 12de4 + +00010144 : + 10144: 800000b7 lui ra,0x80000 + 10148: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 1014c: 0000af13 slti t5,ra,0 + 10150: 00000e93 li t4,0 + 10154: 21400193 li gp,532 + 10158: 01df0463 beq t5,t4,10160 + 1015c: 4890206f j 12de4 + +00010160 : + 10160: 800000b7 lui ra,0x80000 + 10164: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10168: 7ff0af13 slti t5,ra,2047 + 1016c: 00000e93 li t4,0 + 10170: 21500193 li gp,533 + 10174: 01df0463 beq t5,t4,1017c + 10178: 46d0206f j 12de4 + +0001017c : + 1017c: 800000b7 lui ra,0x80000 + 10180: 7ff0af13 slti t5,ra,2047 + 10184: 00100e93 li t4,1 + 10188: 21600193 li gp,534 + 1018c: 01df0463 beq t5,t4,10194 + 10190: 4550206f j 12de4 + +00010194 : + 10194: 800000b7 lui ra,0x80000 + 10198: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 1019c: 8000af13 slti t5,ra,-2048 + 101a0: 00000e93 li t4,0 + 101a4: 21700193 li gp,535 + 101a8: 01df0463 beq t5,t4,101b0 + 101ac: 4390206f j 12de4 + +000101b0 : + 101b0: 00000093 li ra,0 + 101b4: fff0af13 slti t5,ra,-1 + 101b8: 00000e93 li t4,0 + 101bc: 21800193 li gp,536 + 101c0: 01df0463 beq t5,t4,101c8 + 101c4: 4210206f j 12de4 + +000101c8 : + 101c8: fff00093 li ra,-1 + 101cc: 0010af13 slti t5,ra,1 + 101d0: 00100e93 li t4,1 + 101d4: 21900193 li gp,537 + 101d8: 01df0463 beq t5,t4,101e0 + 101dc: 4090206f j 12de4 + +000101e0 : + 101e0: fff00093 li ra,-1 + 101e4: fff0af13 slti t5,ra,-1 + 101e8: 00000e93 li t4,0 + 101ec: 21a00193 li gp,538 + 101f0: 01df0463 beq t5,t4,101f8 + 101f4: 3f10206f j 12de4 + +000101f8 : + 101f8: 00b00093 li ra,11 + 101fc: 00d0a093 slti ra,ra,13 + 10200: 00100e93 li t4,1 + 10204: 21b00193 li gp,539 + 10208: 01d08463 beq ra,t4,10210 + 1020c: 3d90206f j 12de4 + +00010210 : + 10210: 00000213 li tp,0 + 10214: 00f00093 li ra,15 + 10218: 00a0af13 slti t5,ra,10 + 1021c: 000f0313 mv t1,t5 + 10220: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10224: 00200293 li t0,2 + 10228: fe5216e3 bne tp,t0,10214 + 1022c: 00000e93 li t4,0 + 10230: 21c00193 li gp,540 + 10234: 01d30463 beq t1,t4,1023c + 10238: 3ad0206f j 12de4 + +0001023c : + 1023c: 00000213 li tp,0 + 10240: 00a00093 li ra,10 + 10244: 0100af13 slti t5,ra,16 + 10248: 00000013 nop + 1024c: 000f0313 mv t1,t5 + 10250: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10254: 00200293 li t0,2 + 10258: fe5214e3 bne tp,t0,10240 + 1025c: 00100e93 li t4,1 + 10260: 21d00193 li gp,541 + 10264: 01d30463 beq t1,t4,1026c + 10268: 37d0206f j 12de4 + +0001026c : + 1026c: 00000213 li tp,0 + 10270: 01000093 li ra,16 + 10274: 0090af13 slti t5,ra,9 + 10278: 00000013 nop + 1027c: 00000013 nop + 10280: 000f0313 mv t1,t5 + 10284: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10288: 00200293 li t0,2 + 1028c: fe5212e3 bne tp,t0,10270 + 10290: 00000e93 li t4,0 + 10294: 21e00193 li gp,542 + 10298: 01d30463 beq t1,t4,102a0 + 1029c: 3490206f j 12de4 + +000102a0 : + 102a0: 00000213 li tp,0 + 102a4: 00b00093 li ra,11 + 102a8: 00f0af13 slti t5,ra,15 + 102ac: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 102b0: 00200293 li t0,2 + 102b4: fe5218e3 bne tp,t0,102a4 + 102b8: 00100e93 li t4,1 + 102bc: 21f00193 li gp,543 + 102c0: 01df0463 beq t5,t4,102c8 + 102c4: 3210206f j 12de4 + +000102c8 : + 102c8: 00000213 li tp,0 + 102cc: 01100093 li ra,17 + 102d0: 00000013 nop + 102d4: 0080af13 slti t5,ra,8 + 102d8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 102dc: 00200293 li t0,2 + 102e0: fe5216e3 bne tp,t0,102cc + 102e4: 00000e93 li t4,0 + 102e8: 22000193 li gp,544 + 102ec: 01df0463 beq t5,t4,102f4 + 102f0: 2f50206f j 12de4 + +000102f4 : + 102f4: 00000213 li tp,0 + 102f8: 00c00093 li ra,12 + 102fc: 00000013 nop + 10300: 00000013 nop + 10304: 00e0af13 slti t5,ra,14 + 10308: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1030c: 00200293 li t0,2 + 10310: fe5214e3 bne tp,t0,102f8 + 10314: 00100e93 li t4,1 + 10318: 22100193 li gp,545 + 1031c: 01df0463 beq t5,t4,10324 + 10320: 2c50206f j 12de4 + +00010324 : + 10324: fff02093 slti ra,zero,-1 + 10328: 00000e93 li t4,0 + 1032c: 22200193 li gp,546 + 10330: 01d08463 beq ra,t4,10338 + 10334: 2b10206f j 12de4 + +00010338 : + 10338: 00ff00b7 lui ra,0xff0 + 1033c: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 10340: fff0a013 slti zero,ra,-1 + 10344: 00000e93 li t4,0 + 10348: 22300193 li gp,547 + 1034c: 01d00463 beq zero,t4,10354 + 10350: 2950206f j 12de4 + +00010354 : + 10354: 00000093 li ra,0 + 10358: 0000bf13 sltiu t5,ra,0 + 1035c: 00000e93 li t4,0 + 10360: 22400193 li gp,548 + 10364: 01df0463 beq t5,t4,1036c + 10368: 27d0206f j 12de4 + +0001036c : + 1036c: 00100093 li ra,1 + 10370: 0010bf13 seqz t5,ra + 10374: 00000e93 li t4,0 + 10378: 22500193 li gp,549 + 1037c: 01df0463 beq t5,t4,10384 + 10380: 2650206f j 12de4 + +00010384 : + 10384: 00300093 li ra,3 + 10388: 0070bf13 sltiu t5,ra,7 + 1038c: 00100e93 li t4,1 + 10390: 22600193 li gp,550 + 10394: 01df0463 beq t5,t4,1039c + 10398: 24d0206f j 12de4 + +0001039c : + 1039c: 00700093 li ra,7 + 103a0: 0030bf13 sltiu t5,ra,3 + 103a4: 00000e93 li t4,0 + 103a8: 22700193 li gp,551 + 103ac: 01df0463 beq t5,t4,103b4 + 103b0: 2350206f j 12de4 + +000103b4 : + 103b4: 00000093 li ra,0 + 103b8: 8000bf13 sltiu t5,ra,-2048 + 103bc: 00100e93 li t4,1 + 103c0: 22800193 li gp,552 + 103c4: 01df0463 beq t5,t4,103cc + 103c8: 21d0206f j 12de4 + +000103cc : + 103cc: 800000b7 lui ra,0x80000 + 103d0: 0000bf13 sltiu t5,ra,0 + 103d4: 00000e93 li t4,0 + 103d8: 22900193 li gp,553 + 103dc: 01df0463 beq t5,t4,103e4 + 103e0: 2050206f j 12de4 + +000103e4 : + 103e4: 800000b7 lui ra,0x80000 + 103e8: 8000bf13 sltiu t5,ra,-2048 + 103ec: 00100e93 li t4,1 + 103f0: 22a00193 li gp,554 + 103f4: 01df0463 beq t5,t4,103fc + 103f8: 1ed0206f j 12de4 + +000103fc : + 103fc: 00000093 li ra,0 + 10400: 7ff0bf13 sltiu t5,ra,2047 + 10404: 00100e93 li t4,1 + 10408: 22b00193 li gp,555 + 1040c: 01df0463 beq t5,t4,10414 + 10410: 1d50206f j 12de4 + +00010414 : + 10414: 800000b7 lui ra,0x80000 + 10418: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 1041c: 0000bf13 sltiu t5,ra,0 + 10420: 00000e93 li t4,0 + 10424: 22c00193 li gp,556 + 10428: 01df0463 beq t5,t4,10430 + 1042c: 1b90206f j 12de4 + +00010430 : + 10430: 800000b7 lui ra,0x80000 + 10434: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10438: 7ff0bf13 sltiu t5,ra,2047 + 1043c: 00000e93 li t4,0 + 10440: 22d00193 li gp,557 + 10444: 01df0463 beq t5,t4,1044c + 10448: 19d0206f j 12de4 + +0001044c : + 1044c: 800000b7 lui ra,0x80000 + 10450: 7ff0bf13 sltiu t5,ra,2047 + 10454: 00000e93 li t4,0 + 10458: 22e00193 li gp,558 + 1045c: 01df0463 beq t5,t4,10464 + 10460: 1850206f j 12de4 + +00010464 : + 10464: 800000b7 lui ra,0x80000 + 10468: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 1046c: 8000bf13 sltiu t5,ra,-2048 + 10470: 00100e93 li t4,1 + 10474: 22f00193 li gp,559 + 10478: 01df0463 beq t5,t4,10480 + 1047c: 1690206f j 12de4 + +00010480 : + 10480: 00000093 li ra,0 + 10484: fff0bf13 sltiu t5,ra,-1 + 10488: 00100e93 li t4,1 + 1048c: 23000193 li gp,560 + 10490: 01df0463 beq t5,t4,10498 + 10494: 1510206f j 12de4 + +00010498 : + 10498: fff00093 li ra,-1 + 1049c: 0010bf13 seqz t5,ra + 104a0: 00000e93 li t4,0 + 104a4: 23100193 li gp,561 + 104a8: 01df0463 beq t5,t4,104b0 + 104ac: 1390206f j 12de4 + +000104b0 : + 104b0: fff00093 li ra,-1 + 104b4: fff0bf13 sltiu t5,ra,-1 + 104b8: 00000e93 li t4,0 + 104bc: 23200193 li gp,562 + 104c0: 01df0463 beq t5,t4,104c8 + 104c4: 1210206f j 12de4 + +000104c8 : + 104c8: 00b00093 li ra,11 + 104cc: 00d0b093 sltiu ra,ra,13 + 104d0: 00100e93 li t4,1 + 104d4: 23300193 li gp,563 + 104d8: 01d08463 beq ra,t4,104e0 + 104dc: 1090206f j 12de4 + +000104e0 : + 104e0: 00000213 li tp,0 + 104e4: 00f00093 li ra,15 + 104e8: 00a0bf13 sltiu t5,ra,10 + 104ec: 000f0313 mv t1,t5 + 104f0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 104f4: 00200293 li t0,2 + 104f8: fe5216e3 bne tp,t0,104e4 + 104fc: 00000e93 li t4,0 + 10500: 23400193 li gp,564 + 10504: 01d30463 beq t1,t4,1050c + 10508: 0dd0206f j 12de4 + +0001050c : + 1050c: 00000213 li tp,0 + 10510: 00a00093 li ra,10 + 10514: 0100bf13 sltiu t5,ra,16 + 10518: 00000013 nop + 1051c: 000f0313 mv t1,t5 + 10520: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10524: 00200293 li t0,2 + 10528: fe5214e3 bne tp,t0,10510 + 1052c: 00100e93 li t4,1 + 10530: 23500193 li gp,565 + 10534: 01d30463 beq t1,t4,1053c + 10538: 0ad0206f j 12de4 + +0001053c : + 1053c: 00000213 li tp,0 + 10540: 01000093 li ra,16 + 10544: 0090bf13 sltiu t5,ra,9 + 10548: 00000013 nop + 1054c: 00000013 nop + 10550: 000f0313 mv t1,t5 + 10554: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10558: 00200293 li t0,2 + 1055c: fe5212e3 bne tp,t0,10540 + 10560: 00000e93 li t4,0 + 10564: 23700193 li gp,567 + 10568: 01d30463 beq t1,t4,10570 + 1056c: 0790206f j 12de4 + +00010570 : + 10570: 00000213 li tp,0 + 10574: 00b00093 li ra,11 + 10578: 00f0bf13 sltiu t5,ra,15 + 1057c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10580: 00200293 li t0,2 + 10584: fe5218e3 bne tp,t0,10574 + 10588: 00100e93 li t4,1 + 1058c: 23800193 li gp,568 + 10590: 01df0463 beq t5,t4,10598 + 10594: 0510206f j 12de4 + +00010598 : + 10598: 00000213 li tp,0 + 1059c: 01100093 li ra,17 + 105a0: 00000013 nop + 105a4: 0080bf13 sltiu t5,ra,8 + 105a8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 105ac: 00200293 li t0,2 + 105b0: fe5216e3 bne tp,t0,1059c + 105b4: 00000e93 li t4,0 + 105b8: 23900193 li gp,569 + 105bc: 01df0463 beq t5,t4,105c4 + 105c0: 0250206f j 12de4 + +000105c4 : + 105c4: 00000213 li tp,0 + 105c8: 00c00093 li ra,12 + 105cc: 00000013 nop + 105d0: 00000013 nop + 105d4: 00e0bf13 sltiu t5,ra,14 + 105d8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 105dc: 00200293 li t0,2 + 105e0: fe5214e3 bne tp,t0,105c8 + 105e4: 00100e93 li t4,1 + 105e8: 23a00193 li gp,570 + 105ec: 01df0463 beq t5,t4,105f4 + 105f0: 7f40206f j 12de4 + +000105f4 : + 105f4: fff03093 sltiu ra,zero,-1 + 105f8: 00100e93 li t4,1 + 105fc: 23b00193 li gp,571 + 10600: 01d08463 beq ra,t4,10608 + 10604: 7e00206f j 12de4 + +00010608 : + 10608: 00ff00b7 lui ra,0xff0 + 1060c: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 10610: fff0b013 sltiu zero,ra,-1 + 10614: 00000e93 li t4,0 + 10618: 23c00193 li gp,572 + 1061c: 01d00463 beq zero,t4,10624 + 10620: 7c40206f j 12de4 + +00010624 : + 10624: 00000093 li ra,0 + 10628: 00000113 li sp,0 + 1062c: 0020bf33 sltu t5,ra,sp + 10630: 00000e93 li t4,0 + 10634: 23d00193 li gp,573 + 10638: 01df0463 beq t5,t4,10640 + 1063c: 7a80206f j 12de4 + +00010640 : + 10640: 00100093 li ra,1 + 10644: 00100113 li sp,1 + 10648: 0020bf33 sltu t5,ra,sp + 1064c: 00000e93 li t4,0 + 10650: 23e00193 li gp,574 + 10654: 01df0463 beq t5,t4,1065c + 10658: 78c0206f j 12de4 + +0001065c : + 1065c: 00300093 li ra,3 + 10660: 00700113 li sp,7 + 10664: 0020bf33 sltu t5,ra,sp + 10668: 00100e93 li t4,1 + 1066c: 23f00193 li gp,575 + 10670: 01df0463 beq t5,t4,10678 + 10674: 7700206f j 12de4 + +00010678 : + 10678: 00700093 li ra,7 + 1067c: 00300113 li sp,3 + 10680: 0020bf33 sltu t5,ra,sp + 10684: 00000e93 li t4,0 + 10688: 24000193 li gp,576 + 1068c: 01df0463 beq t5,t4,10694 + 10690: 7540206f j 12de4 + +00010694 : + 10694: 00000093 li ra,0 + 10698: ffff8137 lui sp,0xffff8 + 1069c: 0020bf33 sltu t5,ra,sp + 106a0: 00100e93 li t4,1 + 106a4: 24100193 li gp,577 + 106a8: 01df0463 beq t5,t4,106b0 + 106ac: 7380206f j 12de4 + +000106b0 : + 106b0: 800000b7 lui ra,0x80000 + 106b4: 00000113 li sp,0 + 106b8: 0020bf33 sltu t5,ra,sp + 106bc: 00000e93 li t4,0 + 106c0: 24200193 li gp,578 + 106c4: 01df0463 beq t5,t4,106cc + 106c8: 71c0206f j 12de4 + +000106cc : + 106cc: 800000b7 lui ra,0x80000 + 106d0: ffff8137 lui sp,0xffff8 + 106d4: 0020bf33 sltu t5,ra,sp + 106d8: 00100e93 li t4,1 + 106dc: 24300193 li gp,579 + 106e0: 01df0463 beq t5,t4,106e8 + 106e4: 7000206f j 12de4 + +000106e8 : + 106e8: 00000093 li ra,0 + 106ec: 00008137 lui sp,0x8 + 106f0: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 106f4: 0020bf33 sltu t5,ra,sp + 106f8: 00100e93 li t4,1 + 106fc: 24400193 li gp,580 + 10700: 01df0463 beq t5,t4,10708 + 10704: 6e00206f j 12de4 + +00010708 : + 10708: 800000b7 lui ra,0x80000 + 1070c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10710: 00000113 li sp,0 + 10714: 0020bf33 sltu t5,ra,sp + 10718: 00000e93 li t4,0 + 1071c: 24500193 li gp,581 + 10720: 01df0463 beq t5,t4,10728 + 10724: 6c00206f j 12de4 + +00010728 : + 10728: 800000b7 lui ra,0x80000 + 1072c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10730: 00008137 lui sp,0x8 + 10734: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 10738: 0020bf33 sltu t5,ra,sp + 1073c: 00000e93 li t4,0 + 10740: 24600193 li gp,582 + 10744: 01df0463 beq t5,t4,1074c + 10748: 69c0206f j 12de4 + +0001074c : + 1074c: 800000b7 lui ra,0x80000 + 10750: 00008137 lui sp,0x8 + 10754: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 10758: 0020bf33 sltu t5,ra,sp + 1075c: 00000e93 li t4,0 + 10760: 24700193 li gp,583 + 10764: 01df0463 beq t5,t4,1076c + 10768: 67c0206f j 12de4 + +0001076c : + 1076c: 800000b7 lui ra,0x80000 + 10770: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10774: ffff8137 lui sp,0xffff8 + 10778: 0020bf33 sltu t5,ra,sp + 1077c: 00100e93 li t4,1 + 10780: 24800193 li gp,584 + 10784: 01df0463 beq t5,t4,1078c + 10788: 65c0206f j 12de4 + +0001078c : + 1078c: 00000093 li ra,0 + 10790: fff00113 li sp,-1 + 10794: 0020bf33 sltu t5,ra,sp + 10798: 00100e93 li t4,1 + 1079c: 24900193 li gp,585 + 107a0: 01df0463 beq t5,t4,107a8 + 107a4: 6400206f j 12de4 + +000107a8 : + 107a8: fff00093 li ra,-1 + 107ac: 00100113 li sp,1 + 107b0: 0020bf33 sltu t5,ra,sp + 107b4: 00000e93 li t4,0 + 107b8: 24a00193 li gp,586 + 107bc: 01df0463 beq t5,t4,107c4 + 107c0: 6240206f j 12de4 + +000107c4 : + 107c4: fff00093 li ra,-1 + 107c8: fff00113 li sp,-1 + 107cc: 0020bf33 sltu t5,ra,sp + 107d0: 00000e93 li t4,0 + 107d4: 24b00193 li gp,587 + 107d8: 01df0463 beq t5,t4,107e0 + 107dc: 6080206f j 12de4 + +000107e0 : + 107e0: 00e00093 li ra,14 + 107e4: 00d00113 li sp,13 + 107e8: 0020b0b3 sltu ra,ra,sp + 107ec: 00000e93 li t4,0 + 107f0: 24c00193 li gp,588 + 107f4: 01d08463 beq ra,t4,107fc + 107f8: 5ec0206f j 12de4 + +000107fc : + 107fc: 00b00093 li ra,11 + 10800: 00d00113 li sp,13 + 10804: 0020b133 sltu sp,ra,sp + 10808: 00100e93 li t4,1 + 1080c: 24d00193 li gp,589 + 10810: 01d10463 beq sp,t4,10818 + 10814: 5d00206f j 12de4 + +00010818 : + 10818: 00d00093 li ra,13 + 1081c: 0010b0b3 sltu ra,ra,ra + 10820: 00000e93 li t4,0 + 10824: 24e00193 li gp,590 + 10828: 01d08463 beq ra,t4,10830 + 1082c: 5b80206f j 12de4 + +00010830 : + 10830: 00000213 li tp,0 + 10834: 00b00093 li ra,11 + 10838: 00d00113 li sp,13 + 1083c: 0020bf33 sltu t5,ra,sp + 10840: 000f0313 mv t1,t5 + 10844: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10848: 00200293 li t0,2 + 1084c: fe5214e3 bne tp,t0,10834 + 10850: 00100e93 li t4,1 + 10854: 24f00193 li gp,591 + 10858: 01d30463 beq t1,t4,10860 + 1085c: 5880206f j 12de4 + +00010860 : + 10860: 00000213 li tp,0 + 10864: 00e00093 li ra,14 + 10868: 00d00113 li sp,13 + 1086c: 0020bf33 sltu t5,ra,sp + 10870: 00000013 nop + 10874: 000f0313 mv t1,t5 + 10878: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1087c: 00200293 li t0,2 + 10880: fe5212e3 bne tp,t0,10864 + 10884: 00000e93 li t4,0 + 10888: 25000193 li gp,592 + 1088c: 01d30463 beq t1,t4,10894 + 10890: 5540206f j 12de4 + +00010894 : + 10894: 00000213 li tp,0 + 10898: 00c00093 li ra,12 + 1089c: 00d00113 li sp,13 + 108a0: 0020bf33 sltu t5,ra,sp + 108a4: 00000013 nop + 108a8: 00000013 nop + 108ac: 000f0313 mv t1,t5 + 108b0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 108b4: 00200293 li t0,2 + 108b8: fe5210e3 bne tp,t0,10898 + 108bc: 00100e93 li t4,1 + 108c0: 25100193 li gp,593 + 108c4: 01d30463 beq t1,t4,108cc + 108c8: 51c0206f j 12de4 + +000108cc : + 108cc: 00000213 li tp,0 + 108d0: 00e00093 li ra,14 + 108d4: 00d00113 li sp,13 + 108d8: 0020bf33 sltu t5,ra,sp + 108dc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 108e0: 00200293 li t0,2 + 108e4: fe5216e3 bne tp,t0,108d0 + 108e8: 00000e93 li t4,0 + 108ec: 25200193 li gp,594 + 108f0: 01df0463 beq t5,t4,108f8 + 108f4: 4f00206f j 12de4 + +000108f8 : + 108f8: 00000213 li tp,0 + 108fc: 00b00093 li ra,11 + 10900: 00d00113 li sp,13 + 10904: 00000013 nop + 10908: 0020bf33 sltu t5,ra,sp + 1090c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10910: 00200293 li t0,2 + 10914: fe5214e3 bne tp,t0,108fc + 10918: 00100e93 li t4,1 + 1091c: 25300193 li gp,595 + 10920: 01df0463 beq t5,t4,10928 + 10924: 4c00206f j 12de4 + +00010928 : + 10928: 00000213 li tp,0 + 1092c: 00f00093 li ra,15 + 10930: 00d00113 li sp,13 + 10934: 00000013 nop + 10938: 00000013 nop + 1093c: 0020bf33 sltu t5,ra,sp + 10940: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10944: 00200293 li t0,2 + 10948: fe5212e3 bne tp,t0,1092c + 1094c: 00000e93 li t4,0 + 10950: 25400193 li gp,596 + 10954: 01df0463 beq t5,t4,1095c + 10958: 48c0206f j 12de4 + +0001095c : + 1095c: 00000213 li tp,0 + 10960: 00a00093 li ra,10 + 10964: 00000013 nop + 10968: 00d00113 li sp,13 + 1096c: 0020bf33 sltu t5,ra,sp + 10970: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10974: 00200293 li t0,2 + 10978: fe5214e3 bne tp,t0,10960 + 1097c: 00100e93 li t4,1 + 10980: 25500193 li gp,597 + 10984: 01df0463 beq t5,t4,1098c + 10988: 45c0206f j 12de4 + +0001098c : + 1098c: 00000213 li tp,0 + 10990: 01000093 li ra,16 + 10994: 00000013 nop + 10998: 00d00113 li sp,13 + 1099c: 00000013 nop + 109a0: 0020bf33 sltu t5,ra,sp + 109a4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 109a8: 00200293 li t0,2 + 109ac: fe5212e3 bne tp,t0,10990 + 109b0: 00000e93 li t4,0 + 109b4: 25600193 li gp,598 + 109b8: 01df0463 beq t5,t4,109c0 + 109bc: 4280206f j 12de4 + +000109c0 : + 109c0: 00000213 li tp,0 + 109c4: 00900093 li ra,9 + 109c8: 00000013 nop + 109cc: 00000013 nop + 109d0: 00d00113 li sp,13 + 109d4: 0020bf33 sltu t5,ra,sp + 109d8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 109dc: 00200293 li t0,2 + 109e0: fe5212e3 bne tp,t0,109c4 + 109e4: 00100e93 li t4,1 + 109e8: 25700193 li gp,599 + 109ec: 01df0463 beq t5,t4,109f4 + 109f0: 3f40206f j 12de4 + +000109f4 : + 109f4: 00000213 li tp,0 + 109f8: 00d00113 li sp,13 + 109fc: 01100093 li ra,17 + 10a00: 0020bf33 sltu t5,ra,sp + 10a04: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a08: 00200293 li t0,2 + 10a0c: fe5216e3 bne tp,t0,109f8 + 10a10: 00000e93 li t4,0 + 10a14: 25900193 li gp,601 + 10a18: 01df0463 beq t5,t4,10a20 + 10a1c: 3c80206f j 12de4 + +00010a20 : + 10a20: 00000213 li tp,0 + 10a24: 00d00113 li sp,13 + 10a28: 00800093 li ra,8 + 10a2c: 00000013 nop + 10a30: 0020bf33 sltu t5,ra,sp + 10a34: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a38: 00200293 li t0,2 + 10a3c: fe5214e3 bne tp,t0,10a24 + 10a40: 00100e93 li t4,1 + 10a44: 25a00193 li gp,602 + 10a48: 01df0463 beq t5,t4,10a50 + 10a4c: 3980206f j 12de4 + +00010a50 : + 10a50: 00000213 li tp,0 + 10a54: 00d00113 li sp,13 + 10a58: 01200093 li ra,18 + 10a5c: 00000013 nop + 10a60: 00000013 nop + 10a64: 0020bf33 sltu t5,ra,sp + 10a68: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a6c: 00200293 li t0,2 + 10a70: fe5212e3 bne tp,t0,10a54 + 10a74: 00000e93 li t4,0 + 10a78: 25b00193 li gp,603 + 10a7c: 01df0463 beq t5,t4,10a84 + 10a80: 3640206f j 12de4 + +00010a84 : + 10a84: 00000213 li tp,0 + 10a88: 00d00113 li sp,13 + 10a8c: 00000013 nop + 10a90: 00700093 li ra,7 + 10a94: 0020bf33 sltu t5,ra,sp + 10a98: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10a9c: 00200293 li t0,2 + 10aa0: fe5214e3 bne tp,t0,10a88 + 10aa4: 00100e93 li t4,1 + 10aa8: 25c00193 li gp,604 + 10aac: 01df0463 beq t5,t4,10ab4 + 10ab0: 3340206f j 12de4 + +00010ab4 : + 10ab4: 00000213 li tp,0 + 10ab8: 00d00113 li sp,13 + 10abc: 00000013 nop + 10ac0: 01300093 li ra,19 + 10ac4: 00000013 nop + 10ac8: 0020bf33 sltu t5,ra,sp + 10acc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10ad0: 00200293 li t0,2 + 10ad4: fe5212e3 bne tp,t0,10ab8 + 10ad8: 00000e93 li t4,0 + 10adc: 25d00193 li gp,605 + 10ae0: 01df0463 beq t5,t4,10ae8 + 10ae4: 3000206f j 12de4 + +00010ae8 : + 10ae8: 00000213 li tp,0 + 10aec: 00d00113 li sp,13 + 10af0: 00000013 nop + 10af4: 00000013 nop + 10af8: 00600093 li ra,6 + 10afc: 0020bf33 sltu t5,ra,sp + 10b00: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10b04: 00200293 li t0,2 + 10b08: fe5212e3 bne tp,t0,10aec + 10b0c: 00100e93 li t4,1 + 10b10: 25e00193 li gp,606 + 10b14: 01df0463 beq t5,t4,10b1c + 10b18: 2cc0206f j 12de4 + +00010b1c : + 10b1c: fff00093 li ra,-1 + 10b20: 00103133 snez sp,ra + 10b24: 00100e93 li t4,1 + 10b28: 25f00193 li gp,607 + 10b2c: 01d10463 beq sp,t4,10b34 + 10b30: 2b40206f j 12de4 + +00010b34 : + 10b34: fff00093 li ra,-1 + 10b38: 0000b133 sltu sp,ra,zero + 10b3c: 00000e93 li t4,0 + 10b40: 26000193 li gp,608 + 10b44: 01d10463 beq sp,t4,10b4c + 10b48: 29c0206f j 12de4 + +00010b4c : + 10b4c: 000030b3 snez ra,zero + 10b50: 00000e93 li t4,0 + 10b54: 26100193 li gp,609 + 10b58: 01d08463 beq ra,t4,10b60 + 10b5c: 2880206f j 12de4 + +00010b60 : + 10b60: 01000093 li ra,16 + 10b64: 01e00113 li sp,30 + 10b68: 0020b033 sltu zero,ra,sp + 10b6c: 00000e93 li t4,0 + 10b70: 26200193 li gp,610 + 10b74: 01d00463 beq zero,t4,10b7c + 10b78: 26c0206f j 12de4 + +00010b7c : + 10b7c: 800000b7 lui ra,0x80000 + 10b80: 00000113 li sp,0 + 10b84: 4020df33 sra t5,ra,sp + 10b88: 80000eb7 lui t4,0x80000 + 10b8c: 26300193 li gp,611 + 10b90: 01df0463 beq t5,t4,10b98 + 10b94: 2500206f j 12de4 + +00010b98 : + 10b98: 800000b7 lui ra,0x80000 + 10b9c: 00100113 li sp,1 + 10ba0: 4020df33 sra t5,ra,sp + 10ba4: c0000eb7 lui t4,0xc0000 + 10ba8: 26400193 li gp,612 + 10bac: 01df0463 beq t5,t4,10bb4 + 10bb0: 2340206f j 12de4 + +00010bb4 : + 10bb4: 800000b7 lui ra,0x80000 + 10bb8: 00700113 li sp,7 + 10bbc: 4020df33 sra t5,ra,sp + 10bc0: ff000eb7 lui t4,0xff000 + 10bc4: 26500193 li gp,613 + 10bc8: 01df0463 beq t5,t4,10bd0 + 10bcc: 2180206f j 12de4 + +00010bd0 : + 10bd0: 800000b7 lui ra,0x80000 + 10bd4: 00e00113 li sp,14 + 10bd8: 4020df33 sra t5,ra,sp + 10bdc: fffe0eb7 lui t4,0xfffe0 + 10be0: 26600193 li gp,614 + 10be4: 01df0463 beq t5,t4,10bec + 10be8: 1fc0206f j 12de4 + +00010bec : + 10bec: 800000b7 lui ra,0x80000 + 10bf0: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 10bf4: 01f00113 li sp,31 + 10bf8: 4020df33 sra t5,ra,sp + 10bfc: fff00e93 li t4,-1 + 10c00: 26700193 li gp,615 + 10c04: 01df0463 beq t5,t4,10c0c + 10c08: 1dc0206f j 12de4 + +00010c0c : + 10c0c: 800000b7 lui ra,0x80000 + 10c10: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10c14: 00000113 li sp,0 + 10c18: 4020df33 sra t5,ra,sp + 10c1c: 80000eb7 lui t4,0x80000 + 10c20: fffe8e93 addi t4,t4,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10c24: 26800193 li gp,616 + 10c28: 01df0463 beq t5,t4,10c30 + 10c2c: 1b80206f j 12de4 + +00010c30 : + 10c30: 800000b7 lui ra,0x80000 + 10c34: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10c38: 00100113 li sp,1 + 10c3c: 4020df33 sra t5,ra,sp + 10c40: 40000eb7 lui t4,0x40000 + 10c44: fffe8e93 addi t4,t4,-1 # 3fffffff <__global_pointer$+0x3ffeb8f7> + 10c48: 26900193 li gp,617 + 10c4c: 01df0463 beq t5,t4,10c54 + 10c50: 1940206f j 12de4 + +00010c54 : + 10c54: 800000b7 lui ra,0x80000 + 10c58: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10c5c: 00700113 li sp,7 + 10c60: 4020df33 sra t5,ra,sp + 10c64: 01000eb7 lui t4,0x1000 + 10c68: fffe8e93 addi t4,t4,-1 # ffffff <__global_pointer$+0xfeb8f7> + 10c6c: 26a00193 li gp,618 + 10c70: 01df0463 beq t5,t4,10c78 + 10c74: 1700206f j 12de4 + +00010c78 : + 10c78: 800000b7 lui ra,0x80000 + 10c7c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10c80: 00e00113 li sp,14 + 10c84: 4020df33 sra t5,ra,sp + 10c88: 00020eb7 lui t4,0x20 + 10c8c: fffe8e93 addi t4,t4,-1 # 1ffff <__global_pointer$+0xb8f7> + 10c90: 26b00193 li gp,619 + 10c94: 01df0463 beq t5,t4,10c9c + 10c98: 14c0206f j 12de4 + +00010c9c : + 10c9c: 800000b7 lui ra,0x80000 + 10ca0: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 10ca4: 01f00113 li sp,31 + 10ca8: 4020df33 sra t5,ra,sp + 10cac: 00000e93 li t4,0 + 10cb0: 26c00193 li gp,620 + 10cb4: 01df0463 beq t5,t4,10cbc + 10cb8: 12c0206f j 12de4 + +00010cbc : + 10cbc: 818180b7 lui ra,0x81818 + 10cc0: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10cc4: 00000113 li sp,0 + 10cc8: 4020df33 sra t5,ra,sp + 10ccc: 81818eb7 lui t4,0x81818 + 10cd0: 181e8e93 addi t4,t4,385 # 81818181 <__global_pointer$+0x81803a79> + 10cd4: 26d00193 li gp,621 + 10cd8: 01df0463 beq t5,t4,10ce0 + 10cdc: 1080206f j 12de4 + +00010ce0 : + 10ce0: 818180b7 lui ra,0x81818 + 10ce4: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10ce8: 00100113 li sp,1 + 10cec: 4020df33 sra t5,ra,sp + 10cf0: c0c0ceb7 lui t4,0xc0c0c + 10cf4: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <__global_pointer$+0xc0bf79b8> + 10cf8: 26e00193 li gp,622 + 10cfc: 01df0463 beq t5,t4,10d04 + 10d00: 0e40206f j 12de4 + +00010d04 : + 10d04: 818180b7 lui ra,0x81818 + 10d08: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10d0c: 00700113 li sp,7 + 10d10: 4020df33 sra t5,ra,sp + 10d14: ff030eb7 lui t4,0xff030 + 10d18: 303e8e93 addi t4,t4,771 # ff030303 <__global_pointer$+0xff01bbfb> + 10d1c: 26f00193 li gp,623 + 10d20: 01df0463 beq t5,t4,10d28 + 10d24: 0c00206f j 12de4 + +00010d28 : + 10d28: 818180b7 lui ra,0x81818 + 10d2c: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10d30: 00e00113 li sp,14 + 10d34: 4020df33 sra t5,ra,sp + 10d38: fffe0eb7 lui t4,0xfffe0 + 10d3c: 606e8e93 addi t4,t4,1542 # fffe0606 <__global_pointer$+0xfffcbefe> + 10d40: 27000193 li gp,624 + 10d44: 01df0463 beq t5,t4,10d4c + 10d48: 09c0206f j 12de4 + +00010d4c : + 10d4c: 818180b7 lui ra,0x81818 + 10d50: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10d54: 01f00113 li sp,31 + 10d58: 4020df33 sra t5,ra,sp + 10d5c: fff00e93 li t4,-1 + 10d60: 27100193 li gp,625 + 10d64: 01df0463 beq t5,t4,10d6c + 10d68: 07c0206f j 12de4 + +00010d6c : + 10d6c: 818180b7 lui ra,0x81818 + 10d70: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10d74: fc000113 li sp,-64 + 10d78: 4020df33 sra t5,ra,sp + 10d7c: 81818eb7 lui t4,0x81818 + 10d80: 181e8e93 addi t4,t4,385 # 81818181 <__global_pointer$+0x81803a79> + 10d84: 27200193 li gp,626 + 10d88: 01df0463 beq t5,t4,10d90 + 10d8c: 0580206f j 12de4 + +00010d90 : + 10d90: 818180b7 lui ra,0x81818 + 10d94: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10d98: fc100113 li sp,-63 + 10d9c: 4020df33 sra t5,ra,sp + 10da0: c0c0ceb7 lui t4,0xc0c0c + 10da4: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <__global_pointer$+0xc0bf79b8> + 10da8: 27300193 li gp,627 + 10dac: 01df0463 beq t5,t4,10db4 + 10db0: 0340206f j 12de4 + +00010db4 : + 10db4: 818180b7 lui ra,0x81818 + 10db8: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10dbc: fc700113 li sp,-57 + 10dc0: 4020df33 sra t5,ra,sp + 10dc4: ff030eb7 lui t4,0xff030 + 10dc8: 303e8e93 addi t4,t4,771 # ff030303 <__global_pointer$+0xff01bbfb> + 10dcc: 27400193 li gp,628 + 10dd0: 01df0463 beq t5,t4,10dd8 + 10dd4: 0100206f j 12de4 + +00010dd8 : + 10dd8: 818180b7 lui ra,0x81818 + 10ddc: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10de0: fce00113 li sp,-50 + 10de4: 4020df33 sra t5,ra,sp + 10de8: fffe0eb7 lui t4,0xfffe0 + 10dec: 606e8e93 addi t4,t4,1542 # fffe0606 <__global_pointer$+0xfffcbefe> + 10df0: 27500193 li gp,629 + 10df4: 01df0463 beq t5,t4,10dfc + 10df8: 7ed0106f j 12de4 + +00010dfc : + 10dfc: 818180b7 lui ra,0x81818 + 10e00: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 10e04: fff00113 li sp,-1 + 10e08: 4020df33 sra t5,ra,sp + 10e0c: fff00e93 li t4,-1 + 10e10: 27600193 li gp,630 + 10e14: 01df0463 beq t5,t4,10e1c + 10e18: 7cd0106f j 12de4 + +00010e1c : + 10e1c: 800000b7 lui ra,0x80000 + 10e20: 00700113 li sp,7 + 10e24: 4020d0b3 sra ra,ra,sp + 10e28: ff000eb7 lui t4,0xff000 + 10e2c: 27700193 li gp,631 + 10e30: 01d08463 beq ra,t4,10e38 + 10e34: 7b10106f j 12de4 + +00010e38 : + 10e38: 800000b7 lui ra,0x80000 + 10e3c: 00e00113 li sp,14 + 10e40: 4020d133 sra sp,ra,sp + 10e44: fffe0eb7 lui t4,0xfffe0 + 10e48: 27800193 li gp,632 + 10e4c: 01d10463 beq sp,t4,10e54 + 10e50: 7950106f j 12de4 + +00010e54 : + 10e54: 00700093 li ra,7 + 10e58: 4010d0b3 sra ra,ra,ra + 10e5c: 00000e93 li t4,0 + 10e60: 27900193 li gp,633 + 10e64: 01d08463 beq ra,t4,10e6c + 10e68: 77d0106f j 12de4 + +00010e6c : + 10e6c: 00000213 li tp,0 + 10e70: 800000b7 lui ra,0x80000 + 10e74: 00700113 li sp,7 + 10e78: 4020df33 sra t5,ra,sp + 10e7c: 000f0313 mv t1,t5 + 10e80: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10e84: 00200293 li t0,2 + 10e88: fe5214e3 bne tp,t0,10e70 + 10e8c: ff000eb7 lui t4,0xff000 + 10e90: 27a00193 li gp,634 + 10e94: 01d30463 beq t1,t4,10e9c + 10e98: 74d0106f j 12de4 + +00010e9c : + 10e9c: 00000213 li tp,0 + 10ea0: 800000b7 lui ra,0x80000 + 10ea4: 00e00113 li sp,14 + 10ea8: 4020df33 sra t5,ra,sp + 10eac: 00000013 nop + 10eb0: 000f0313 mv t1,t5 + 10eb4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10eb8: 00200293 li t0,2 + 10ebc: fe5212e3 bne tp,t0,10ea0 + 10ec0: fffe0eb7 lui t4,0xfffe0 + 10ec4: 27b00193 li gp,635 + 10ec8: 01d30463 beq t1,t4,10ed0 + 10ecc: 7190106f j 12de4 + +00010ed0 : + 10ed0: 00000213 li tp,0 + 10ed4: 800000b7 lui ra,0x80000 + 10ed8: 01f00113 li sp,31 + 10edc: 4020df33 sra t5,ra,sp + 10ee0: 00000013 nop + 10ee4: 00000013 nop + 10ee8: 000f0313 mv t1,t5 + 10eec: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10ef0: 00200293 li t0,2 + 10ef4: fe5210e3 bne tp,t0,10ed4 + 10ef8: fff00e93 li t4,-1 + 10efc: 27c00193 li gp,636 + 10f00: 01d30463 beq t1,t4,10f08 + 10f04: 6e10106f j 12de4 + +00010f08 : + 10f08: 00000213 li tp,0 + 10f0c: 800000b7 lui ra,0x80000 + 10f10: 00700113 li sp,7 + 10f14: 4020df33 sra t5,ra,sp + 10f18: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10f1c: 00200293 li t0,2 + 10f20: fe5216e3 bne tp,t0,10f0c + 10f24: ff000eb7 lui t4,0xff000 + 10f28: 27d00193 li gp,637 + 10f2c: 01df0463 beq t5,t4,10f34 + 10f30: 6b50106f j 12de4 + +00010f34 : + 10f34: 00000213 li tp,0 + 10f38: 800000b7 lui ra,0x80000 + 10f3c: 00e00113 li sp,14 + 10f40: 00000013 nop + 10f44: 4020df33 sra t5,ra,sp + 10f48: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10f4c: 00200293 li t0,2 + 10f50: fe5214e3 bne tp,t0,10f38 + 10f54: fffe0eb7 lui t4,0xfffe0 + 10f58: 27e00193 li gp,638 + 10f5c: 01df0463 beq t5,t4,10f64 + 10f60: 6850106f j 12de4 + +00010f64 : + 10f64: 00000213 li tp,0 + 10f68: 800000b7 lui ra,0x80000 + 10f6c: 01f00113 li sp,31 + 10f70: 00000013 nop + 10f74: 00000013 nop + 10f78: 4020df33 sra t5,ra,sp + 10f7c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10f80: 00200293 li t0,2 + 10f84: fe5212e3 bne tp,t0,10f68 + 10f88: fff00e93 li t4,-1 + 10f8c: 27f00193 li gp,639 + 10f90: 01df0463 beq t5,t4,10f98 + 10f94: 6510106f j 12de4 + +00010f98 : + 10f98: 00000213 li tp,0 + 10f9c: 800000b7 lui ra,0x80000 + 10fa0: 00000013 nop + 10fa4: 00700113 li sp,7 + 10fa8: 4020df33 sra t5,ra,sp + 10fac: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10fb0: 00200293 li t0,2 + 10fb4: fe5214e3 bne tp,t0,10f9c + 10fb8: ff000eb7 lui t4,0xff000 + 10fbc: 28000193 li gp,640 + 10fc0: 01df0463 beq t5,t4,10fc8 + 10fc4: 6210106f j 12de4 + +00010fc8 : + 10fc8: 00000213 li tp,0 + 10fcc: 800000b7 lui ra,0x80000 + 10fd0: 00000013 nop + 10fd4: 00e00113 li sp,14 + 10fd8: 00000013 nop + 10fdc: 4020df33 sra t5,ra,sp + 10fe0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 10fe4: 00200293 li t0,2 + 10fe8: fe5212e3 bne tp,t0,10fcc + 10fec: fffe0eb7 lui t4,0xfffe0 + 10ff0: 28100193 li gp,641 + 10ff4: 01df0463 beq t5,t4,10ffc + 10ff8: 5ed0106f j 12de4 + +00010ffc : + 10ffc: 00000213 li tp,0 + 11000: 800000b7 lui ra,0x80000 + 11004: 00000013 nop + 11008: 00000013 nop + 1100c: 01f00113 li sp,31 + 11010: 4020df33 sra t5,ra,sp + 11014: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11018: 00200293 li t0,2 + 1101c: fe5212e3 bne tp,t0,11000 + 11020: fff00e93 li t4,-1 + 11024: 28200193 li gp,642 + 11028: 01df0463 beq t5,t4,11030 + 1102c: 5b90106f j 12de4 + +00011030 : + 11030: 00000213 li tp,0 + 11034: 00700113 li sp,7 + 11038: 800000b7 lui ra,0x80000 + 1103c: 4020df33 sra t5,ra,sp + 11040: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11044: 00200293 li t0,2 + 11048: fe5216e3 bne tp,t0,11034 + 1104c: ff000eb7 lui t4,0xff000 + 11050: 28300193 li gp,643 + 11054: 01df0463 beq t5,t4,1105c + 11058: 58d0106f j 12de4 + +0001105c : + 1105c: 00000213 li tp,0 + 11060: 00e00113 li sp,14 + 11064: 800000b7 lui ra,0x80000 + 11068: 00000013 nop + 1106c: 4020df33 sra t5,ra,sp + 11070: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11074: 00200293 li t0,2 + 11078: fe5214e3 bne tp,t0,11060 + 1107c: fffe0eb7 lui t4,0xfffe0 + 11080: 28400193 li gp,644 + 11084: 01df0463 beq t5,t4,1108c + 11088: 55d0106f j 12de4 + +0001108c : + 1108c: 00000213 li tp,0 + 11090: 01f00113 li sp,31 + 11094: 800000b7 lui ra,0x80000 + 11098: 00000013 nop + 1109c: 00000013 nop + 110a0: 4020df33 sra t5,ra,sp + 110a4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 110a8: 00200293 li t0,2 + 110ac: fe5212e3 bne tp,t0,11090 + 110b0: fff00e93 li t4,-1 + 110b4: 28500193 li gp,645 + 110b8: 01df0463 beq t5,t4,110c0 + 110bc: 5290106f j 12de4 + +000110c0 : + 110c0: 00000213 li tp,0 + 110c4: 00700113 li sp,7 + 110c8: 00000013 nop + 110cc: 800000b7 lui ra,0x80000 + 110d0: 4020df33 sra t5,ra,sp + 110d4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 110d8: 00200293 li t0,2 + 110dc: fe5214e3 bne tp,t0,110c4 + 110e0: ff000eb7 lui t4,0xff000 + 110e4: 28600193 li gp,646 + 110e8: 01df0463 beq t5,t4,110f0 + 110ec: 4f90106f j 12de4 + +000110f0 : + 110f0: 00000213 li tp,0 + 110f4: 00e00113 li sp,14 + 110f8: 00000013 nop + 110fc: 800000b7 lui ra,0x80000 + 11100: 00000013 nop + 11104: 4020df33 sra t5,ra,sp + 11108: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1110c: 00200293 li t0,2 + 11110: fe5212e3 bne tp,t0,110f4 + 11114: fffe0eb7 lui t4,0xfffe0 + 11118: 28700193 li gp,647 + 1111c: 01df0463 beq t5,t4,11124 + 11120: 4c50106f j 12de4 + +00011124 : + 11124: 00000213 li tp,0 + 11128: 01f00113 li sp,31 + 1112c: 00000013 nop + 11130: 00000013 nop + 11134: 800000b7 lui ra,0x80000 + 11138: 4020df33 sra t5,ra,sp + 1113c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11140: 00200293 li t0,2 + 11144: fe5212e3 bne tp,t0,11128 + 11148: fff00e93 li t4,-1 + 1114c: 28800193 li gp,648 + 11150: 01df0463 beq t5,t4,11158 + 11154: 4910106f j 12de4 + +00011158 : + 11158: 00f00093 li ra,15 + 1115c: 40105133 sra sp,zero,ra + 11160: 00000e93 li t4,0 + 11164: 28900193 li gp,649 + 11168: 01d10463 beq sp,t4,11170 + 1116c: 4790106f j 12de4 + +00011170 : + 11170: 02000093 li ra,32 + 11174: 4000d133 sra sp,ra,zero + 11178: 02000e93 li t4,32 + 1117c: 28a00193 li gp,650 + 11180: 01d10463 beq sp,t4,11188 + 11184: 4610106f j 12de4 + +00011188 : + 11188: 400050b3 sra ra,zero,zero + 1118c: 00000e93 li t4,0 + 11190: 28b00193 li gp,651 + 11194: 01d08463 beq ra,t4,1119c + 11198: 44d0106f j 12de4 + +0001119c : + 1119c: 40000093 li ra,1024 + 111a0: 00001137 lui sp,0x1 + 111a4: 80010113 addi sp,sp,-2048 # 800 <_start-0xf880> + 111a8: 4020d033 sra zero,ra,sp + 111ac: 00000e93 li t4,0 + 111b0: 28c00193 li gp,652 + 111b4: 01d00463 beq zero,t4,111bc + 111b8: 42d0106f j 12de4 + +000111bc : + 111bc: 00000093 li ra,0 + 111c0: 4000df13 srai t5,ra,0x0 + 111c4: 00000e93 li t4,0 + 111c8: 28d00193 li gp,653 + 111cc: 01df0463 beq t5,t4,111d4 + 111d0: 4150106f j 12de4 + +000111d4 : + 111d4: 800000b7 lui ra,0x80000 + 111d8: 4010df13 srai t5,ra,0x1 + 111dc: c0000eb7 lui t4,0xc0000 + 111e0: 28e00193 li gp,654 + 111e4: 01df0463 beq t5,t4,111ec + 111e8: 3fd0106f j 12de4 + +000111ec : + 111ec: 800000b7 lui ra,0x80000 + 111f0: 4070df13 srai t5,ra,0x7 + 111f4: ff000eb7 lui t4,0xff000 + 111f8: 28f00193 li gp,655 + 111fc: 01df0463 beq t5,t4,11204 + 11200: 3e50106f j 12de4 + +00011204 : + 11204: 800000b7 lui ra,0x80000 + 11208: 40e0df13 srai t5,ra,0xe + 1120c: fffe0eb7 lui t4,0xfffe0 + 11210: 29000193 li gp,656 + 11214: 01df0463 beq t5,t4,1121c + 11218: 3cd0106f j 12de4 + +0001121c : + 1121c: 800000b7 lui ra,0x80000 + 11220: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 11224: 41f0df13 srai t5,ra,0x1f + 11228: fff00e93 li t4,-1 + 1122c: 29100193 li gp,657 + 11230: 01df0463 beq t5,t4,11238 + 11234: 3b10106f j 12de4 + +00011238 : + 11238: 800000b7 lui ra,0x80000 + 1123c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11240: 4010df13 srai t5,ra,0x1 + 11244: 40000eb7 lui t4,0x40000 + 11248: fffe8e93 addi t4,t4,-1 # 3fffffff <__global_pointer$+0x3ffeb8f7> + 1124c: 29200193 li gp,658 + 11250: 01df0463 beq t5,t4,11258 + 11254: 3910106f j 12de4 + +00011258 : + 11258: 800000b7 lui ra,0x80000 + 1125c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11260: 4070df13 srai t5,ra,0x7 + 11264: 01000eb7 lui t4,0x1000 + 11268: fffe8e93 addi t4,t4,-1 # ffffff <__global_pointer$+0xfeb8f7> + 1126c: 29300193 li gp,659 + 11270: 01df0463 beq t5,t4,11278 + 11274: 3710106f j 12de4 + +00011278 : + 11278: 800000b7 lui ra,0x80000 + 1127c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11280: 40e0df13 srai t5,ra,0xe + 11284: 00020eb7 lui t4,0x20 + 11288: fffe8e93 addi t4,t4,-1 # 1ffff <__global_pointer$+0xb8f7> + 1128c: 29400193 li gp,660 + 11290: 01df0463 beq t5,t4,11298 + 11294: 3510106f j 12de4 + +00011298 : + 11298: 800000b7 lui ra,0x80000 + 1129c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 112a0: 41f0df13 srai t5,ra,0x1f + 112a4: 00000e93 li t4,0 + 112a8: 29500193 li gp,661 + 112ac: 01df0463 beq t5,t4,112b4 + 112b0: 3350106f j 12de4 + +000112b4 : + 112b4: 818180b7 lui ra,0x81818 + 112b8: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 112bc: 4000df13 srai t5,ra,0x0 + 112c0: 81818eb7 lui t4,0x81818 + 112c4: 181e8e93 addi t4,t4,385 # 81818181 <__global_pointer$+0x81803a79> + 112c8: 29600193 li gp,662 + 112cc: 01df0463 beq t5,t4,112d4 + 112d0: 3150106f j 12de4 + +000112d4 : + 112d4: 818180b7 lui ra,0x81818 + 112d8: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 112dc: 4010df13 srai t5,ra,0x1 + 112e0: c0c0ceb7 lui t4,0xc0c0c + 112e4: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <__global_pointer$+0xc0bf79b8> + 112e8: 29700193 li gp,663 + 112ec: 01df0463 beq t5,t4,112f4 + 112f0: 2f50106f j 12de4 + +000112f4 : + 112f4: 818180b7 lui ra,0x81818 + 112f8: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 112fc: 4070df13 srai t5,ra,0x7 + 11300: ff030eb7 lui t4,0xff030 + 11304: 303e8e93 addi t4,t4,771 # ff030303 <__global_pointer$+0xff01bbfb> + 11308: 29800193 li gp,664 + 1130c: 01df0463 beq t5,t4,11314 + 11310: 2d50106f j 12de4 + +00011314 : + 11314: 818180b7 lui ra,0x81818 + 11318: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 1131c: 40e0df13 srai t5,ra,0xe + 11320: fffe0eb7 lui t4,0xfffe0 + 11324: 606e8e93 addi t4,t4,1542 # fffe0606 <__global_pointer$+0xfffcbefe> + 11328: 29900193 li gp,665 + 1132c: 01df0463 beq t5,t4,11334 + 11330: 2b50106f j 12de4 + +00011334 : + 11334: 818180b7 lui ra,0x81818 + 11338: 18108093 addi ra,ra,385 # 81818181 <__global_pointer$+0x81803a79> + 1133c: 41f0df13 srai t5,ra,0x1f + 11340: fff00e93 li t4,-1 + 11344: 29a00193 li gp,666 + 11348: 01df0463 beq t5,t4,11350 + 1134c: 2990106f j 12de4 + +00011350 : + 11350: 800000b7 lui ra,0x80000 + 11354: 4070d093 srai ra,ra,0x7 + 11358: ff000eb7 lui t4,0xff000 + 1135c: 29b00193 li gp,667 + 11360: 01d08463 beq ra,t4,11368 + 11364: 2810106f j 12de4 + +00011368 : + 11368: 00000213 li tp,0 + 1136c: 800000b7 lui ra,0x80000 + 11370: 4070df13 srai t5,ra,0x7 + 11374: 000f0313 mv t1,t5 + 11378: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1137c: 00200293 li t0,2 + 11380: fe5216e3 bne tp,t0,1136c + 11384: ff000eb7 lui t4,0xff000 + 11388: 29c00193 li gp,668 + 1138c: 01d30463 beq t1,t4,11394 + 11390: 2550106f j 12de4 + +00011394 : + 11394: 00000213 li tp,0 + 11398: 800000b7 lui ra,0x80000 + 1139c: 40e0df13 srai t5,ra,0xe + 113a0: 00000013 nop + 113a4: 000f0313 mv t1,t5 + 113a8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 113ac: 00200293 li t0,2 + 113b0: fe5214e3 bne tp,t0,11398 + 113b4: fffe0eb7 lui t4,0xfffe0 + 113b8: 29d00193 li gp,669 + 113bc: 01d30463 beq t1,t4,113c4 + 113c0: 2250106f j 12de4 + +000113c4 : + 113c4: 00000213 li tp,0 + 113c8: 800000b7 lui ra,0x80000 + 113cc: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 113d0: 41f0df13 srai t5,ra,0x1f + 113d4: 00000013 nop + 113d8: 00000013 nop + 113dc: 000f0313 mv t1,t5 + 113e0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 113e4: 00200293 li t0,2 + 113e8: fe5210e3 bne tp,t0,113c8 + 113ec: fff00e93 li t4,-1 + 113f0: 29e00193 li gp,670 + 113f4: 01d30463 beq t1,t4,113fc + 113f8: 1ed0106f j 12de4 + +000113fc : + 113fc: 00000213 li tp,0 + 11400: 800000b7 lui ra,0x80000 + 11404: 4070df13 srai t5,ra,0x7 + 11408: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1140c: 00200293 li t0,2 + 11410: fe5218e3 bne tp,t0,11400 + 11414: ff000eb7 lui t4,0xff000 + 11418: 29f00193 li gp,671 + 1141c: 01df0463 beq t5,t4,11424 + 11420: 1c50106f j 12de4 + +00011424 : + 11424: 00000213 li tp,0 + 11428: 800000b7 lui ra,0x80000 + 1142c: 00000013 nop + 11430: 40e0df13 srai t5,ra,0xe + 11434: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11438: 00200293 li t0,2 + 1143c: fe5216e3 bne tp,t0,11428 + 11440: fffe0eb7 lui t4,0xfffe0 + 11444: 2a000193 li gp,672 + 11448: 01df0463 beq t5,t4,11450 + 1144c: 1990106f j 12de4 + +00011450 : + 11450: 00000213 li tp,0 + 11454: 800000b7 lui ra,0x80000 + 11458: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 1145c: 00000013 nop + 11460: 00000013 nop + 11464: 41f0df13 srai t5,ra,0x1f + 11468: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1146c: 00200293 li t0,2 + 11470: fe5212e3 bne tp,t0,11454 + 11474: fff00e93 li t4,-1 + 11478: 2a100193 li gp,673 + 1147c: 01df0463 beq t5,t4,11484 + 11480: 1650106f j 12de4 + +00011484 : + 11484: 40405093 srai ra,zero,0x4 + 11488: 00000e93 li t4,0 + 1148c: 2a200193 li gp,674 + 11490: 01d08463 beq ra,t4,11498 + 11494: 1510106f j 12de4 + +00011498 : + 11498: 02100093 li ra,33 + 1149c: 40a0d013 srai zero,ra,0xa + 114a0: 00000e93 li t4,0 + 114a4: 2a300193 li gp,675 + 114a8: 01d00463 beq zero,t4,114b0 + 114ac: 1390106f j 12de4 + +000114b0 : + 114b0: 800000b7 lui ra,0x80000 + 114b4: 00000113 li sp,0 + 114b8: 0020df33 srl t5,ra,sp + 114bc: 80000eb7 lui t4,0x80000 + 114c0: 2a400193 li gp,676 + 114c4: 01df0463 beq t5,t4,114cc + 114c8: 11d0106f j 12de4 + +000114cc : + 114cc: 800000b7 lui ra,0x80000 + 114d0: 00100113 li sp,1 + 114d4: 0020df33 srl t5,ra,sp + 114d8: 40000eb7 lui t4,0x40000 + 114dc: 2a500193 li gp,677 + 114e0: 01df0463 beq t5,t4,114e8 + 114e4: 1010106f j 12de4 + +000114e8 : + 114e8: 800000b7 lui ra,0x80000 + 114ec: 00700113 li sp,7 + 114f0: 0020df33 srl t5,ra,sp + 114f4: 01000eb7 lui t4,0x1000 + 114f8: 2a600193 li gp,678 + 114fc: 01df0463 beq t5,t4,11504 + 11500: 0e50106f j 12de4 + +00011504 : + 11504: 800000b7 lui ra,0x80000 + 11508: 00e00113 li sp,14 + 1150c: 0020df33 srl t5,ra,sp + 11510: 00020eb7 lui t4,0x20 + 11514: 2a700193 li gp,679 + 11518: 01df0463 beq t5,t4,11520 + 1151c: 0c90106f j 12de4 + +00011520 : + 11520: 800000b7 lui ra,0x80000 + 11524: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 11528: 01f00113 li sp,31 + 1152c: 0020df33 srl t5,ra,sp + 11530: 00100e93 li t4,1 + 11534: 2a800193 li gp,680 + 11538: 01df0463 beq t5,t4,11540 + 1153c: 0a90106f j 12de4 + +00011540 : + 11540: fff00093 li ra,-1 + 11544: 00000113 li sp,0 + 11548: 0020df33 srl t5,ra,sp + 1154c: fff00e93 li t4,-1 + 11550: 2a900193 li gp,681 + 11554: 01df0463 beq t5,t4,1155c + 11558: 08d0106f j 12de4 + +0001155c : + 1155c: fff00093 li ra,-1 + 11560: 00100113 li sp,1 + 11564: 0020df33 srl t5,ra,sp + 11568: 80000eb7 lui t4,0x80000 + 1156c: fffe8e93 addi t4,t4,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11570: 2aa00193 li gp,682 + 11574: 01df0463 beq t5,t4,1157c + 11578: 06d0106f j 12de4 + +0001157c : + 1157c: fff00093 li ra,-1 + 11580: 00700113 li sp,7 + 11584: 0020df33 srl t5,ra,sp + 11588: 02000eb7 lui t4,0x2000 + 1158c: fffe8e93 addi t4,t4,-1 # 1ffffff <__global_pointer$+0x1feb8f7> + 11590: 2ab00193 li gp,683 + 11594: 01df0463 beq t5,t4,1159c + 11598: 04d0106f j 12de4 + +0001159c : + 1159c: fff00093 li ra,-1 + 115a0: 00e00113 li sp,14 + 115a4: 0020df33 srl t5,ra,sp + 115a8: 00040eb7 lui t4,0x40 + 115ac: fffe8e93 addi t4,t4,-1 # 3ffff <__global_pointer$+0x2b8f7> + 115b0: 2ac00193 li gp,684 + 115b4: 01df0463 beq t5,t4,115bc + 115b8: 02d0106f j 12de4 + +000115bc : + 115bc: fff00093 li ra,-1 + 115c0: 01f00113 li sp,31 + 115c4: 0020df33 srl t5,ra,sp + 115c8: 00100e93 li t4,1 + 115cc: 2ad00193 li gp,685 + 115d0: 01df0463 beq t5,t4,115d8 + 115d4: 0110106f j 12de4 + +000115d8 : + 115d8: 212120b7 lui ra,0x21212 + 115dc: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 115e0: 00000113 li sp,0 + 115e4: 0020df33 srl t5,ra,sp + 115e8: 21212eb7 lui t4,0x21212 + 115ec: 121e8e93 addi t4,t4,289 # 21212121 <__global_pointer$+0x211fda19> + 115f0: 2ae00193 li gp,686 + 115f4: 01df0463 beq t5,t4,115fc + 115f8: 7ec0106f j 12de4 + +000115fc : + 115fc: 212120b7 lui ra,0x21212 + 11600: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11604: 00100113 li sp,1 + 11608: 0020df33 srl t5,ra,sp + 1160c: 10909eb7 lui t4,0x10909 + 11610: 090e8e93 addi t4,t4,144 # 10909090 <__global_pointer$+0x108f4988> + 11614: 2af00193 li gp,687 + 11618: 01df0463 beq t5,t4,11620 + 1161c: 7c80106f j 12de4 + +00011620 : + 11620: 212120b7 lui ra,0x21212 + 11624: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11628: 00700113 li sp,7 + 1162c: 0020df33 srl t5,ra,sp + 11630: 00424eb7 lui t4,0x424 + 11634: 242e8e93 addi t4,t4,578 # 424242 <__global_pointer$+0x40fb3a> + 11638: 2b000193 li gp,688 + 1163c: 01df0463 beq t5,t4,11644 + 11640: 7a40106f j 12de4 + +00011644 : + 11644: 212120b7 lui ra,0x21212 + 11648: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 1164c: 00e00113 li sp,14 + 11650: 0020df33 srl t5,ra,sp + 11654: 00008eb7 lui t4,0x8 + 11658: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7bfc> + 1165c: 2b100193 li gp,689 + 11660: 01df0463 beq t5,t4,11668 + 11664: 7800106f j 12de4 + +00011668 : + 11668: 212120b7 lui ra,0x21212 + 1166c: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11670: 01f00113 li sp,31 + 11674: 0020df33 srl t5,ra,sp + 11678: 00000e93 li t4,0 + 1167c: 2b200193 li gp,690 + 11680: 01df0463 beq t5,t4,11688 + 11684: 7600106f j 12de4 + +00011688 : + 11688: 212120b7 lui ra,0x21212 + 1168c: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11690: fc000113 li sp,-64 + 11694: 0020df33 srl t5,ra,sp + 11698: 21212eb7 lui t4,0x21212 + 1169c: 121e8e93 addi t4,t4,289 # 21212121 <__global_pointer$+0x211fda19> + 116a0: 2b300193 li gp,691 + 116a4: 01df0463 beq t5,t4,116ac + 116a8: 73c0106f j 12de4 + +000116ac : + 116ac: 212120b7 lui ra,0x21212 + 116b0: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 116b4: fc100113 li sp,-63 + 116b8: 0020df33 srl t5,ra,sp + 116bc: 10909eb7 lui t4,0x10909 + 116c0: 090e8e93 addi t4,t4,144 # 10909090 <__global_pointer$+0x108f4988> + 116c4: 2b400193 li gp,692 + 116c8: 01df0463 beq t5,t4,116d0 + 116cc: 7180106f j 12de4 + +000116d0 : + 116d0: 212120b7 lui ra,0x21212 + 116d4: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 116d8: fc700113 li sp,-57 + 116dc: 0020df33 srl t5,ra,sp + 116e0: 00424eb7 lui t4,0x424 + 116e4: 242e8e93 addi t4,t4,578 # 424242 <__global_pointer$+0x40fb3a> + 116e8: 2b500193 li gp,693 + 116ec: 01df0463 beq t5,t4,116f4 + 116f0: 6f40106f j 12de4 + +000116f4 : + 116f4: 212120b7 lui ra,0x21212 + 116f8: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 116fc: fce00113 li sp,-50 + 11700: 0020df33 srl t5,ra,sp + 11704: 00008eb7 lui t4,0x8 + 11708: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7bfc> + 1170c: 2b600193 li gp,694 + 11710: 01df0463 beq t5,t4,11718 + 11714: 6d00106f j 12de4 + +00011718 : + 11718: 212120b7 lui ra,0x21212 + 1171c: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11720: fff00113 li sp,-1 + 11724: 0020df33 srl t5,ra,sp + 11728: 00000e93 li t4,0 + 1172c: 2b700193 li gp,695 + 11730: 01df0463 beq t5,t4,11738 + 11734: 6b00106f j 12de4 + +00011738 : + 11738: 800000b7 lui ra,0x80000 + 1173c: 00700113 li sp,7 + 11740: 0020d0b3 srl ra,ra,sp + 11744: 01000eb7 lui t4,0x1000 + 11748: 2b800193 li gp,696 + 1174c: 01d08463 beq ra,t4,11754 + 11750: 6940106f j 12de4 + +00011754 : + 11754: 800000b7 lui ra,0x80000 + 11758: 00e00113 li sp,14 + 1175c: 0020d133 srl sp,ra,sp + 11760: 00020eb7 lui t4,0x20 + 11764: 2b900193 li gp,697 + 11768: 01d10463 beq sp,t4,11770 + 1176c: 6780106f j 12de4 + +00011770 : + 11770: 00700093 li ra,7 + 11774: 0010d0b3 srl ra,ra,ra + 11778: 00000e93 li t4,0 + 1177c: 2ba00193 li gp,698 + 11780: 01d08463 beq ra,t4,11788 + 11784: 6600106f j 12de4 + +00011788 : + 11788: 00000213 li tp,0 + 1178c: 800000b7 lui ra,0x80000 + 11790: 00700113 li sp,7 + 11794: 0020df33 srl t5,ra,sp + 11798: 000f0313 mv t1,t5 + 1179c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 117a0: 00200293 li t0,2 + 117a4: fe5214e3 bne tp,t0,1178c + 117a8: 01000eb7 lui t4,0x1000 + 117ac: 2bb00193 li gp,699 + 117b0: 01d30463 beq t1,t4,117b8 + 117b4: 6300106f j 12de4 + +000117b8 : + 117b8: 00000213 li tp,0 + 117bc: 800000b7 lui ra,0x80000 + 117c0: 00e00113 li sp,14 + 117c4: 0020df33 srl t5,ra,sp + 117c8: 00000013 nop + 117cc: 000f0313 mv t1,t5 + 117d0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 117d4: 00200293 li t0,2 + 117d8: fe5212e3 bne tp,t0,117bc + 117dc: 00020eb7 lui t4,0x20 + 117e0: 2bc00193 li gp,700 + 117e4: 01d30463 beq t1,t4,117ec + 117e8: 5fc0106f j 12de4 + +000117ec : + 117ec: 00000213 li tp,0 + 117f0: 800000b7 lui ra,0x80000 + 117f4: 01f00113 li sp,31 + 117f8: 0020df33 srl t5,ra,sp + 117fc: 00000013 nop + 11800: 00000013 nop + 11804: 000f0313 mv t1,t5 + 11808: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1180c: 00200293 li t0,2 + 11810: fe5210e3 bne tp,t0,117f0 + 11814: 00100e93 li t4,1 + 11818: 2bd00193 li gp,701 + 1181c: 01d30463 beq t1,t4,11824 + 11820: 5c40106f j 12de4 + +00011824 : + 11824: 00000213 li tp,0 + 11828: 800000b7 lui ra,0x80000 + 1182c: 00700113 li sp,7 + 11830: 0020df33 srl t5,ra,sp + 11834: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11838: 00200293 li t0,2 + 1183c: fe5216e3 bne tp,t0,11828 + 11840: 01000eb7 lui t4,0x1000 + 11844: 2be00193 li gp,702 + 11848: 01df0463 beq t5,t4,11850 + 1184c: 5980106f j 12de4 + +00011850 : + 11850: 00000213 li tp,0 + 11854: 800000b7 lui ra,0x80000 + 11858: 00e00113 li sp,14 + 1185c: 00000013 nop + 11860: 0020df33 srl t5,ra,sp + 11864: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11868: 00200293 li t0,2 + 1186c: fe5214e3 bne tp,t0,11854 + 11870: 00020eb7 lui t4,0x20 + 11874: 2bf00193 li gp,703 + 11878: 01df0463 beq t5,t4,11880 + 1187c: 5680106f j 12de4 + +00011880 : + 11880: 00000213 li tp,0 + 11884: 800000b7 lui ra,0x80000 + 11888: 01f00113 li sp,31 + 1188c: 00000013 nop + 11890: 00000013 nop + 11894: 0020df33 srl t5,ra,sp + 11898: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1189c: 00200293 li t0,2 + 118a0: fe5212e3 bne tp,t0,11884 + 118a4: 00100e93 li t4,1 + 118a8: 2c000193 li gp,704 + 118ac: 01df0463 beq t5,t4,118b4 + 118b0: 5340106f j 12de4 + +000118b4 : + 118b4: 00000213 li tp,0 + 118b8: 800000b7 lui ra,0x80000 + 118bc: 00000013 nop + 118c0: 00700113 li sp,7 + 118c4: 0020df33 srl t5,ra,sp + 118c8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 118cc: 00200293 li t0,2 + 118d0: fe5214e3 bne tp,t0,118b8 + 118d4: 01000eb7 lui t4,0x1000 + 118d8: 2c100193 li gp,705 + 118dc: 01df0463 beq t5,t4,118e4 + 118e0: 5040106f j 12de4 + +000118e4 : + 118e4: 00000213 li tp,0 + 118e8: 800000b7 lui ra,0x80000 + 118ec: 00000013 nop + 118f0: 00e00113 li sp,14 + 118f4: 00000013 nop + 118f8: 0020df33 srl t5,ra,sp + 118fc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11900: 00200293 li t0,2 + 11904: fe5212e3 bne tp,t0,118e8 + 11908: 00020eb7 lui t4,0x20 + 1190c: 2c200193 li gp,706 + 11910: 01df0463 beq t5,t4,11918 + 11914: 4d00106f j 12de4 + +00011918 : + 11918: 00000213 li tp,0 + 1191c: 800000b7 lui ra,0x80000 + 11920: 00000013 nop + 11924: 00000013 nop + 11928: 01f00113 li sp,31 + 1192c: 0020df33 srl t5,ra,sp + 11930: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11934: 00200293 li t0,2 + 11938: fe5212e3 bne tp,t0,1191c + 1193c: 00100e93 li t4,1 + 11940: 2c300193 li gp,707 + 11944: 01df0463 beq t5,t4,1194c + 11948: 49c0106f j 12de4 + +0001194c : + 1194c: 00000213 li tp,0 + 11950: 00700113 li sp,7 + 11954: 800000b7 lui ra,0x80000 + 11958: 0020df33 srl t5,ra,sp + 1195c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11960: 00200293 li t0,2 + 11964: fe5216e3 bne tp,t0,11950 + 11968: 01000eb7 lui t4,0x1000 + 1196c: 2c400193 li gp,708 + 11970: 01df0463 beq t5,t4,11978 + 11974: 4700106f j 12de4 + +00011978 : + 11978: 00000213 li tp,0 + 1197c: 00e00113 li sp,14 + 11980: 800000b7 lui ra,0x80000 + 11984: 00000013 nop + 11988: 0020df33 srl t5,ra,sp + 1198c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11990: 00200293 li t0,2 + 11994: fe5214e3 bne tp,t0,1197c + 11998: 00020eb7 lui t4,0x20 + 1199c: 2c500193 li gp,709 + 119a0: 01df0463 beq t5,t4,119a8 + 119a4: 4400106f j 12de4 + +000119a8 : + 119a8: 00000213 li tp,0 + 119ac: 01f00113 li sp,31 + 119b0: 800000b7 lui ra,0x80000 + 119b4: 00000013 nop + 119b8: 00000013 nop + 119bc: 0020df33 srl t5,ra,sp + 119c0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 119c4: 00200293 li t0,2 + 119c8: fe5212e3 bne tp,t0,119ac + 119cc: 00100e93 li t4,1 + 119d0: 2c600193 li gp,710 + 119d4: 01df0463 beq t5,t4,119dc + 119d8: 40c0106f j 12de4 + +000119dc : + 119dc: 00000213 li tp,0 + 119e0: 00700113 li sp,7 + 119e4: 00000013 nop + 119e8: 800000b7 lui ra,0x80000 + 119ec: 0020df33 srl t5,ra,sp + 119f0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 119f4: 00200293 li t0,2 + 119f8: fe5214e3 bne tp,t0,119e0 + 119fc: 01000eb7 lui t4,0x1000 + 11a00: 2c700193 li gp,711 + 11a04: 01df0463 beq t5,t4,11a0c + 11a08: 3dc0106f j 12de4 + +00011a0c : + 11a0c: 00000213 li tp,0 + 11a10: 00e00113 li sp,14 + 11a14: 00000013 nop + 11a18: 800000b7 lui ra,0x80000 + 11a1c: 00000013 nop + 11a20: 0020df33 srl t5,ra,sp + 11a24: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11a28: 00200293 li t0,2 + 11a2c: fe5212e3 bne tp,t0,11a10 + 11a30: 00020eb7 lui t4,0x20 + 11a34: 2c800193 li gp,712 + 11a38: 01df0463 beq t5,t4,11a40 + 11a3c: 3a80106f j 12de4 + +00011a40 : + 11a40: 00000213 li tp,0 + 11a44: 01f00113 li sp,31 + 11a48: 00000013 nop + 11a4c: 00000013 nop + 11a50: 800000b7 lui ra,0x80000 + 11a54: 0020df33 srl t5,ra,sp + 11a58: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11a5c: 00200293 li t0,2 + 11a60: fe5212e3 bne tp,t0,11a44 + 11a64: 00100e93 li t4,1 + 11a68: 2c900193 li gp,713 + 11a6c: 01df0463 beq t5,t4,11a74 + 11a70: 3740106f j 12de4 + +00011a74 : + 11a74: 00f00093 li ra,15 + 11a78: 00105133 srl sp,zero,ra + 11a7c: 00000e93 li t4,0 + 11a80: 2ca00193 li gp,714 + 11a84: 01d10463 beq sp,t4,11a8c + 11a88: 35c0106f j 12de4 + +00011a8c : + 11a8c: 02000093 li ra,32 + 11a90: 0000d133 srl sp,ra,zero + 11a94: 02000e93 li t4,32 + 11a98: 2cb00193 li gp,715 + 11a9c: 01d10463 beq sp,t4,11aa4 + 11aa0: 3440106f j 12de4 + +00011aa4 : + 11aa4: 000050b3 srl ra,zero,zero + 11aa8: 00000e93 li t4,0 + 11aac: 2cc00193 li gp,716 + 11ab0: 01d08463 beq ra,t4,11ab8 + 11ab4: 3300106f j 12de4 + +00011ab8 : + 11ab8: 40000093 li ra,1024 + 11abc: 00001137 lui sp,0x1 + 11ac0: 80010113 addi sp,sp,-2048 # 800 <_start-0xf880> + 11ac4: 0020d033 srl zero,ra,sp + 11ac8: 00000e93 li t4,0 + 11acc: 2cd00193 li gp,717 + 11ad0: 01d00463 beq zero,t4,11ad8 + 11ad4: 3100106f j 12de4 + +00011ad8 : + 11ad8: 800000b7 lui ra,0x80000 + 11adc: 00000113 li sp,0 + 11ae0: 0020df33 srl t5,ra,sp + 11ae4: 80000eb7 lui t4,0x80000 + 11ae8: 2ce00193 li gp,718 + 11aec: 01df0463 beq t5,t4,11af4 + 11af0: 2f40106f j 12de4 + +00011af4 : + 11af4: 800000b7 lui ra,0x80000 + 11af8: 00100113 li sp,1 + 11afc: 0020df33 srl t5,ra,sp + 11b00: 40000eb7 lui t4,0x40000 + 11b04: 2cf00193 li gp,719 + 11b08: 01df0463 beq t5,t4,11b10 + 11b0c: 2d80106f j 12de4 + +00011b10 : + 11b10: 800000b7 lui ra,0x80000 + 11b14: 00700113 li sp,7 + 11b18: 0020df33 srl t5,ra,sp + 11b1c: 01000eb7 lui t4,0x1000 + 11b20: 2d000193 li gp,720 + 11b24: 01df0463 beq t5,t4,11b2c + 11b28: 2bc0106f j 12de4 + +00011b2c : + 11b2c: 800000b7 lui ra,0x80000 + 11b30: 00e00113 li sp,14 + 11b34: 0020df33 srl t5,ra,sp + 11b38: 00020eb7 lui t4,0x20 + 11b3c: 2d100193 li gp,721 + 11b40: 01df0463 beq t5,t4,11b48 + 11b44: 2a00106f j 12de4 + +00011b48 : + 11b48: 800000b7 lui ra,0x80000 + 11b4c: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 11b50: 01f00113 li sp,31 + 11b54: 0020df33 srl t5,ra,sp + 11b58: 00100e93 li t4,1 + 11b5c: 2d200193 li gp,722 + 11b60: 01df0463 beq t5,t4,11b68 + 11b64: 2800106f j 12de4 + +00011b68 : + 11b68: fff00093 li ra,-1 + 11b6c: 00000113 li sp,0 + 11b70: 0020df33 srl t5,ra,sp + 11b74: fff00e93 li t4,-1 + 11b78: 2d300193 li gp,723 + 11b7c: 01df0463 beq t5,t4,11b84 + 11b80: 2640106f j 12de4 + +00011b84 : + 11b84: fff00093 li ra,-1 + 11b88: 00100113 li sp,1 + 11b8c: 0020df33 srl t5,ra,sp + 11b90: 80000eb7 lui t4,0x80000 + 11b94: fffe8e93 addi t4,t4,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11b98: 2d400193 li gp,724 + 11b9c: 01df0463 beq t5,t4,11ba4 + 11ba0: 2440106f j 12de4 + +00011ba4 : + 11ba4: fff00093 li ra,-1 + 11ba8: 00700113 li sp,7 + 11bac: 0020df33 srl t5,ra,sp + 11bb0: 02000eb7 lui t4,0x2000 + 11bb4: fffe8e93 addi t4,t4,-1 # 1ffffff <__global_pointer$+0x1feb8f7> + 11bb8: 2d500193 li gp,725 + 11bbc: 01df0463 beq t5,t4,11bc4 + 11bc0: 2240106f j 12de4 + +00011bc4 : + 11bc4: fff00093 li ra,-1 + 11bc8: 00e00113 li sp,14 + 11bcc: 0020df33 srl t5,ra,sp + 11bd0: 00040eb7 lui t4,0x40 + 11bd4: fffe8e93 addi t4,t4,-1 # 3ffff <__global_pointer$+0x2b8f7> + 11bd8: 2d600193 li gp,726 + 11bdc: 01df0463 beq t5,t4,11be4 + 11be0: 2040106f j 12de4 + +00011be4 : + 11be4: fff00093 li ra,-1 + 11be8: 01f00113 li sp,31 + 11bec: 0020df33 srl t5,ra,sp + 11bf0: 00100e93 li t4,1 + 11bf4: 2d700193 li gp,727 + 11bf8: 01df0463 beq t5,t4,11c00 + 11bfc: 1e80106f j 12de4 + +00011c00 : + 11c00: 212120b7 lui ra,0x21212 + 11c04: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11c08: 00000113 li sp,0 + 11c0c: 0020df33 srl t5,ra,sp + 11c10: 21212eb7 lui t4,0x21212 + 11c14: 121e8e93 addi t4,t4,289 # 21212121 <__global_pointer$+0x211fda19> + 11c18: 2d800193 li gp,728 + 11c1c: 01df0463 beq t5,t4,11c24 + 11c20: 1c40106f j 12de4 + +00011c24 : + 11c24: 212120b7 lui ra,0x21212 + 11c28: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11c2c: 00100113 li sp,1 + 11c30: 0020df33 srl t5,ra,sp + 11c34: 10909eb7 lui t4,0x10909 + 11c38: 090e8e93 addi t4,t4,144 # 10909090 <__global_pointer$+0x108f4988> + 11c3c: 2d900193 li gp,729 + 11c40: 01df0463 beq t5,t4,11c48 + 11c44: 1a00106f j 12de4 + +00011c48 : + 11c48: 212120b7 lui ra,0x21212 + 11c4c: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11c50: 00700113 li sp,7 + 11c54: 0020df33 srl t5,ra,sp + 11c58: 00424eb7 lui t4,0x424 + 11c5c: 242e8e93 addi t4,t4,578 # 424242 <__global_pointer$+0x40fb3a> + 11c60: 2da00193 li gp,730 + 11c64: 01df0463 beq t5,t4,11c6c + 11c68: 17c0106f j 12de4 + +00011c6c : + 11c6c: 212120b7 lui ra,0x21212 + 11c70: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11c74: 00e00113 li sp,14 + 11c78: 0020df33 srl t5,ra,sp + 11c7c: 00008eb7 lui t4,0x8 + 11c80: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7bfc> + 11c84: 2db00193 li gp,731 + 11c88: 01df0463 beq t5,t4,11c90 + 11c8c: 1580106f j 12de4 + +00011c90 : + 11c90: 212120b7 lui ra,0x21212 + 11c94: 12108093 addi ra,ra,289 # 21212121 <__global_pointer$+0x211fda19> + 11c98: 01f00113 li sp,31 + 11c9c: 0020df33 srl t5,ra,sp + 11ca0: 00000e93 li t4,0 + 11ca4: 2dc00193 li gp,732 + 11ca8: 01df0463 beq t5,t4,11cb0 + 11cac: 1380106f j 12de4 + +00011cb0 : + 11cb0: 800000b7 lui ra,0x80000 + 11cb4: 0070d093 srli ra,ra,0x7 + 11cb8: 01000eb7 lui t4,0x1000 + 11cbc: 2dd00193 li gp,733 + 11cc0: 01d08463 beq ra,t4,11cc8 + 11cc4: 1200106f j 12de4 + +00011cc8 : + 11cc8: 00000213 li tp,0 + 11ccc: 800000b7 lui ra,0x80000 + 11cd0: 0070df13 srli t5,ra,0x7 + 11cd4: 000f0313 mv t1,t5 + 11cd8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11cdc: 00200293 li t0,2 + 11ce0: fe5216e3 bne tp,t0,11ccc + 11ce4: 01000eb7 lui t4,0x1000 + 11ce8: 2de00193 li gp,734 + 11cec: 01d30463 beq t1,t4,11cf4 + 11cf0: 0f40106f j 12de4 + +00011cf4 : + 11cf4: 00000213 li tp,0 + 11cf8: 800000b7 lui ra,0x80000 + 11cfc: 00e0df13 srli t5,ra,0xe + 11d00: 00000013 nop + 11d04: 000f0313 mv t1,t5 + 11d08: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d0c: 00200293 li t0,2 + 11d10: fe5214e3 bne tp,t0,11cf8 + 11d14: 00020eb7 lui t4,0x20 + 11d18: 2df00193 li gp,735 + 11d1c: 01d30463 beq t1,t4,11d24 + 11d20: 0c40106f j 12de4 + +00011d24 : + 11d24: 00000213 li tp,0 + 11d28: 800000b7 lui ra,0x80000 + 11d2c: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 11d30: 01f0df13 srli t5,ra,0x1f + 11d34: 00000013 nop + 11d38: 00000013 nop + 11d3c: 000f0313 mv t1,t5 + 11d40: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d44: 00200293 li t0,2 + 11d48: fe5210e3 bne tp,t0,11d28 + 11d4c: 00100e93 li t4,1 + 11d50: 2e000193 li gp,736 + 11d54: 01d30463 beq t1,t4,11d5c + 11d58: 08c0106f j 12de4 + +00011d5c : + 11d5c: 00000213 li tp,0 + 11d60: 800000b7 lui ra,0x80000 + 11d64: 0070df13 srli t5,ra,0x7 + 11d68: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d6c: 00200293 li t0,2 + 11d70: fe5218e3 bne tp,t0,11d60 + 11d74: 01000eb7 lui t4,0x1000 + 11d78: 2e100193 li gp,737 + 11d7c: 01df0463 beq t5,t4,11d84 + 11d80: 0640106f j 12de4 + +00011d84 : + 11d84: 00000213 li tp,0 + 11d88: 800000b7 lui ra,0x80000 + 11d8c: 00000013 nop + 11d90: 00e0df13 srli t5,ra,0xe + 11d94: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11d98: 00200293 li t0,2 + 11d9c: fe5216e3 bne tp,t0,11d88 + 11da0: 00020eb7 lui t4,0x20 + 11da4: 2e200193 li gp,738 + 11da8: 01df0463 beq t5,t4,11db0 + 11dac: 0380106f j 12de4 + +00011db0 : + 11db0: 00000213 li tp,0 + 11db4: 800000b7 lui ra,0x80000 + 11db8: 00108093 addi ra,ra,1 # 80000001 <__global_pointer$+0x7ffeb8f9> + 11dbc: 00000013 nop + 11dc0: 00000013 nop + 11dc4: 01f0df13 srli t5,ra,0x1f + 11dc8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11dcc: 00200293 li t0,2 + 11dd0: fe5212e3 bne tp,t0,11db4 + 11dd4: 00100e93 li t4,1 + 11dd8: 2e300193 li gp,739 + 11ddc: 01df0463 beq t5,t4,11de4 + 11de0: 0040106f j 12de4 + +00011de4 : + 11de4: 00405093 srli ra,zero,0x4 + 11de8: 00000e93 li t4,0 + 11dec: 2e400193 li gp,740 + 11df0: 7fd09ae3 bne ra,t4,12de4 + +00011df4 : + 11df4: 02100093 li ra,33 + 11df8: 00a0d013 srli zero,ra,0xa + 11dfc: 00000e93 li t4,0 + 11e00: 2e500193 li gp,741 + 11e04: 7fd010e3 bne zero,t4,12de4 + +00011e08 : + 11e08: 00000093 li ra,0 + 11e0c: 00000113 li sp,0 + 11e10: 40208f33 sub t5,ra,sp + 11e14: 00000e93 li t4,0 + 11e18: 2e600193 li gp,742 + 11e1c: 7ddf14e3 bne t5,t4,12de4 + +00011e20 : + 11e20: 00100093 li ra,1 + 11e24: 00100113 li sp,1 + 11e28: 40208f33 sub t5,ra,sp + 11e2c: 00000e93 li t4,0 + 11e30: 2e700193 li gp,743 + 11e34: 7bdf18e3 bne t5,t4,12de4 + +00011e38 : + 11e38: 00300093 li ra,3 + 11e3c: 00700113 li sp,7 + 11e40: 40208f33 sub t5,ra,sp + 11e44: ffc00e93 li t4,-4 + 11e48: 2e800193 li gp,744 + 11e4c: 79df1ce3 bne t5,t4,12de4 + +00011e50 : + 11e50: 00000093 li ra,0 + 11e54: ffff8137 lui sp,0xffff8 + 11e58: 40208f33 sub t5,ra,sp + 11e5c: 00008eb7 lui t4,0x8 + 11e60: 2e900193 li gp,745 + 11e64: 79df10e3 bne t5,t4,12de4 + +00011e68 : + 11e68: 800000b7 lui ra,0x80000 + 11e6c: 00000113 li sp,0 + 11e70: 40208f33 sub t5,ra,sp + 11e74: 80000eb7 lui t4,0x80000 + 11e78: 2ea00193 li gp,746 + 11e7c: 77df14e3 bne t5,t4,12de4 + +00011e80 : + 11e80: 800000b7 lui ra,0x80000 + 11e84: ffff8137 lui sp,0xffff8 + 11e88: 40208f33 sub t5,ra,sp + 11e8c: 80008eb7 lui t4,0x80008 + 11e90: 2eb00193 li gp,747 + 11e94: 75df18e3 bne t5,t4,12de4 + +00011e98 : + 11e98: 00000093 li ra,0 + 11e9c: 00008137 lui sp,0x8 + 11ea0: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 11ea4: 40208f33 sub t5,ra,sp + 11ea8: ffff8eb7 lui t4,0xffff8 + 11eac: 001e8e93 addi t4,t4,1 # ffff8001 <__global_pointer$+0xfffe38f9> + 11eb0: 2ec00193 li gp,748 + 11eb4: 73df18e3 bne t5,t4,12de4 + +00011eb8 : + 11eb8: 800000b7 lui ra,0x80000 + 11ebc: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11ec0: 00000113 li sp,0 + 11ec4: 40208f33 sub t5,ra,sp + 11ec8: 80000eb7 lui t4,0x80000 + 11ecc: fffe8e93 addi t4,t4,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11ed0: 2ed00193 li gp,749 + 11ed4: 71df18e3 bne t5,t4,12de4 + +00011ed8 : + 11ed8: 800000b7 lui ra,0x80000 + 11edc: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11ee0: 00008137 lui sp,0x8 + 11ee4: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 11ee8: 40208f33 sub t5,ra,sp + 11eec: 7fff8eb7 lui t4,0x7fff8 + 11ef0: 2ee00193 li gp,750 + 11ef4: 6fdf18e3 bne t5,t4,12de4 + +00011ef8 : + 11ef8: 800000b7 lui ra,0x80000 + 11efc: 00008137 lui sp,0x8 + 11f00: fff10113 addi sp,sp,-1 # 7fff <_start-0x8081> + 11f04: 40208f33 sub t5,ra,sp + 11f08: 7fff8eb7 lui t4,0x7fff8 + 11f0c: 001e8e93 addi t4,t4,1 # 7fff8001 <__global_pointer$+0x7ffe38f9> + 11f10: 2ef00193 li gp,751 + 11f14: 6ddf18e3 bne t5,t4,12de4 + +00011f18 : + 11f18: 800000b7 lui ra,0x80000 + 11f1c: fff08093 addi ra,ra,-1 # 7fffffff <__global_pointer$+0x7ffeb8f7> + 11f20: ffff8137 lui sp,0xffff8 + 11f24: 40208f33 sub t5,ra,sp + 11f28: 80008eb7 lui t4,0x80008 + 11f2c: fffe8e93 addi t4,t4,-1 # 80007fff <__global_pointer$+0x7fff38f7> + 11f30: 2f000193 li gp,752 + 11f34: 6bdf18e3 bne t5,t4,12de4 + +00011f38 : + 11f38: 00000093 li ra,0 + 11f3c: fff00113 li sp,-1 + 11f40: 40208f33 sub t5,ra,sp + 11f44: 00100e93 li t4,1 + 11f48: 2f100193 li gp,753 + 11f4c: 69df1ce3 bne t5,t4,12de4 + +00011f50 : + 11f50: fff00093 li ra,-1 + 11f54: 00100113 li sp,1 + 11f58: 40208f33 sub t5,ra,sp + 11f5c: ffe00e93 li t4,-2 + 11f60: 2f200193 li gp,754 + 11f64: 69df10e3 bne t5,t4,12de4 + +00011f68 : + 11f68: fff00093 li ra,-1 + 11f6c: fff00113 li sp,-1 + 11f70: 40208f33 sub t5,ra,sp + 11f74: 00000e93 li t4,0 + 11f78: 2f300193 li gp,755 + 11f7c: 67df14e3 bne t5,t4,12de4 + +00011f80 : + 11f80: 00d00093 li ra,13 + 11f84: 00b00113 li sp,11 + 11f88: 402080b3 sub ra,ra,sp + 11f8c: 00200e93 li t4,2 + 11f90: 2f400193 li gp,756 + 11f94: 65d098e3 bne ra,t4,12de4 + +00011f98 : + 11f98: 00e00093 li ra,14 + 11f9c: 00b00113 li sp,11 + 11fa0: 40208133 sub sp,ra,sp + 11fa4: 00300e93 li t4,3 + 11fa8: 2f500193 li gp,757 + 11fac: 63d11ce3 bne sp,t4,12de4 + +00011fb0 : + 11fb0: 00d00093 li ra,13 + 11fb4: 401080b3 sub ra,ra,ra + 11fb8: 00000e93 li t4,0 + 11fbc: 2f600193 li gp,758 + 11fc0: 63d092e3 bne ra,t4,12de4 + +00011fc4 : + 11fc4: 00000213 li tp,0 + 11fc8: 00d00093 li ra,13 + 11fcc: 00b00113 li sp,11 + 11fd0: 40208f33 sub t5,ra,sp + 11fd4: 000f0313 mv t1,t5 + 11fd8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 11fdc: 00200293 li t0,2 + 11fe0: fe5214e3 bne tp,t0,11fc8 + 11fe4: 00200e93 li t4,2 + 11fe8: 2f700193 li gp,759 + 11fec: 5fd31ce3 bne t1,t4,12de4 + +00011ff0 : + 11ff0: 00000213 li tp,0 + 11ff4: 00e00093 li ra,14 + 11ff8: 00b00113 li sp,11 + 11ffc: 40208f33 sub t5,ra,sp + 12000: 00000013 nop + 12004: 000f0313 mv t1,t5 + 12008: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1200c: 00200293 li t0,2 + 12010: fe5212e3 bne tp,t0,11ff4 + 12014: 00300e93 li t4,3 + 12018: 2f800193 li gp,760 + 1201c: 5dd314e3 bne t1,t4,12de4 + +00012020 : + 12020: 00000213 li tp,0 + 12024: 00f00093 li ra,15 + 12028: 00b00113 li sp,11 + 1202c: 40208f33 sub t5,ra,sp + 12030: 00000013 nop + 12034: 00000013 nop + 12038: 000f0313 mv t1,t5 + 1203c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12040: 00200293 li t0,2 + 12044: fe5210e3 bne tp,t0,12024 + 12048: 00400e93 li t4,4 + 1204c: 2f900193 li gp,761 + 12050: 59d31ae3 bne t1,t4,12de4 + +00012054 : + 12054: 00000213 li tp,0 + 12058: 00d00093 li ra,13 + 1205c: 00b00113 li sp,11 + 12060: 40208f33 sub t5,ra,sp + 12064: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12068: 00200293 li t0,2 + 1206c: fe5216e3 bne tp,t0,12058 + 12070: 00200e93 li t4,2 + 12074: 2fa00193 li gp,762 + 12078: 57df16e3 bne t5,t4,12de4 + +0001207c : + 1207c: 00000213 li tp,0 + 12080: 00e00093 li ra,14 + 12084: 00b00113 li sp,11 + 12088: 00000013 nop + 1208c: 40208f33 sub t5,ra,sp + 12090: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12094: 00200293 li t0,2 + 12098: fe5214e3 bne tp,t0,12080 + 1209c: 00300e93 li t4,3 + 120a0: 2fb00193 li gp,763 + 120a4: 55df10e3 bne t5,t4,12de4 + +000120a8 : + 120a8: 00000213 li tp,0 + 120ac: 00f00093 li ra,15 + 120b0: 00b00113 li sp,11 + 120b4: 00000013 nop + 120b8: 00000013 nop + 120bc: 40208f33 sub t5,ra,sp + 120c0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 120c4: 00200293 li t0,2 + 120c8: fe5212e3 bne tp,t0,120ac + 120cc: 00400e93 li t4,4 + 120d0: 2fc00193 li gp,764 + 120d4: 51df18e3 bne t5,t4,12de4 + +000120d8 : + 120d8: 00000213 li tp,0 + 120dc: 00d00093 li ra,13 + 120e0: 00000013 nop + 120e4: 00b00113 li sp,11 + 120e8: 40208f33 sub t5,ra,sp + 120ec: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 120f0: 00200293 li t0,2 + 120f4: fe5214e3 bne tp,t0,120dc + 120f8: 00200e93 li t4,2 + 120fc: 2fd00193 li gp,765 + 12100: 4fdf12e3 bne t5,t4,12de4 + +00012104 : + 12104: 00000213 li tp,0 + 12108: 00e00093 li ra,14 + 1210c: 00000013 nop + 12110: 00b00113 li sp,11 + 12114: 00000013 nop + 12118: 40208f33 sub t5,ra,sp + 1211c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12120: 00200293 li t0,2 + 12124: fe5212e3 bne tp,t0,12108 + 12128: 00300e93 li t4,3 + 1212c: 2fe00193 li gp,766 + 12130: 4bdf1ae3 bne t5,t4,12de4 + +00012134 : + 12134: 00000213 li tp,0 + 12138: 00f00093 li ra,15 + 1213c: 00000013 nop + 12140: 00000013 nop + 12144: 00b00113 li sp,11 + 12148: 40208f33 sub t5,ra,sp + 1214c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12150: 00200293 li t0,2 + 12154: fe5212e3 bne tp,t0,12138 + 12158: 00400e93 li t4,4 + 1215c: 2ff00193 li gp,767 + 12160: 49df12e3 bne t5,t4,12de4 + +00012164 : + 12164: 00000213 li tp,0 + 12168: 00b00113 li sp,11 + 1216c: 00d00093 li ra,13 + 12170: 40208f33 sub t5,ra,sp + 12174: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12178: 00200293 li t0,2 + 1217c: fe5216e3 bne tp,t0,12168 + 12180: 00200e93 li t4,2 + 12184: 30000193 li gp,768 + 12188: 45df1ee3 bne t5,t4,12de4 + +0001218c : + 1218c: 00000213 li tp,0 + 12190: 00b00113 li sp,11 + 12194: 00e00093 li ra,14 + 12198: 00000013 nop + 1219c: 40208f33 sub t5,ra,sp + 121a0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 121a4: 00200293 li t0,2 + 121a8: fe5214e3 bne tp,t0,12190 + 121ac: 00300e93 li t4,3 + 121b0: 30100193 li gp,769 + 121b4: 43df18e3 bne t5,t4,12de4 + +000121b8 : + 121b8: 00000213 li tp,0 + 121bc: 00b00113 li sp,11 + 121c0: 00f00093 li ra,15 + 121c4: 00000013 nop + 121c8: 00000013 nop + 121cc: 40208f33 sub t5,ra,sp + 121d0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 121d4: 00200293 li t0,2 + 121d8: fe5212e3 bne tp,t0,121bc + 121dc: 00400e93 li t4,4 + 121e0: 30200193 li gp,770 + 121e4: 41df10e3 bne t5,t4,12de4 + +000121e8 : + 121e8: 00000213 li tp,0 + 121ec: 00b00113 li sp,11 + 121f0: 00000013 nop + 121f4: 00d00093 li ra,13 + 121f8: 40208f33 sub t5,ra,sp + 121fc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12200: 00200293 li t0,2 + 12204: fe5214e3 bne tp,t0,121ec + 12208: 00200e93 li t4,2 + 1220c: 30300193 li gp,771 + 12210: 3ddf1ae3 bne t5,t4,12de4 + +00012214 : + 12214: 00000213 li tp,0 + 12218: 00b00113 li sp,11 + 1221c: 00000013 nop + 12220: 00e00093 li ra,14 + 12224: 00000013 nop + 12228: 40208f33 sub t5,ra,sp + 1222c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12230: 00200293 li t0,2 + 12234: fe5212e3 bne tp,t0,12218 + 12238: 00300e93 li t4,3 + 1223c: 30400193 li gp,772 + 12240: 3bdf12e3 bne t5,t4,12de4 + +00012244 : + 12244: 00000213 li tp,0 + 12248: 00b00113 li sp,11 + 1224c: 00000013 nop + 12250: 00000013 nop + 12254: 00f00093 li ra,15 + 12258: 40208f33 sub t5,ra,sp + 1225c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12260: 00200293 li t0,2 + 12264: fe5212e3 bne tp,t0,12248 + 12268: 00400e93 li t4,4 + 1226c: 30500193 li gp,773 + 12270: 37df1ae3 bne t5,t4,12de4 + +00012274 : + 12274: ff100093 li ra,-15 + 12278: 40100133 neg sp,ra + 1227c: 00f00e93 li t4,15 + 12280: 30600193 li gp,774 + 12284: 37d110e3 bne sp,t4,12de4 + +00012288 : + 12288: 02000093 li ra,32 + 1228c: 40008133 sub sp,ra,zero + 12290: 02000e93 li t4,32 + 12294: 30700193 li gp,775 + 12298: 35d116e3 bne sp,t4,12de4 + +0001229c : + 1229c: 400000b3 neg ra,zero + 122a0: 00000e93 li t4,0 + 122a4: 30800193 li gp,776 + 122a8: 33d09ee3 bne ra,t4,12de4 + +000122ac : + 122ac: 01000093 li ra,16 + 122b0: 01e00113 li sp,30 + 122b4: 40208033 sub zero,ra,sp + 122b8: 00000e93 li t4,0 + 122bc: 30900193 li gp,777 + 122c0: 33d012e3 bne zero,t4,12de4 + +000122c4 : + 122c4: 00002097 auipc ra,0x2 + 122c8: b8c08093 addi ra,ra,-1140 # 13e50 + 122cc: 00aa0137 lui sp,0xaa0 + 122d0: 0aa10113 addi sp,sp,170 # aa00aa <__global_pointer$+0xa8b9a2> + 122d4: 0020a023 sw sp,0(ra) + 122d8: 0000af03 lw t5,0(ra) + 122dc: 00aa0eb7 lui t4,0xaa0 + 122e0: 0aae8e93 addi t4,t4,170 # aa00aa <__global_pointer$+0xa8b9a2> + 122e4: 30a00193 li gp,778 + 122e8: 2fdf1ee3 bne t5,t4,12de4 + +000122ec : + 122ec: 00002097 auipc ra,0x2 + 122f0: b6408093 addi ra,ra,-1180 # 13e50 + 122f4: aa00b137 lui sp,0xaa00b + 122f8: a0010113 addi sp,sp,-1536 # aa00aa00 <__global_pointer$+0xa9ff62f8> + 122fc: 0020a223 sw sp,4(ra) + 12300: 0040af03 lw t5,4(ra) + 12304: aa00beb7 lui t4,0xaa00b + 12308: a00e8e93 addi t4,t4,-1536 # aa00aa00 <__global_pointer$+0xa9ff62f8> + 1230c: 30b00193 li gp,779 + 12310: 2ddf1ae3 bne t5,t4,12de4 + +00012314 : + 12314: 00002097 auipc ra,0x2 + 12318: b3c08093 addi ra,ra,-1220 # 13e50 + 1231c: 0aa01137 lui sp,0xaa01 + 12320: aa010113 addi sp,sp,-1376 # aa00aa0 <__global_pointer$+0xa9ec398> + 12324: 0020a423 sw sp,8(ra) + 12328: 0080af03 lw t5,8(ra) + 1232c: 0aa01eb7 lui t4,0xaa01 + 12330: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <__global_pointer$+0xa9ec398> + 12334: 30c00193 li gp,780 + 12338: 2bdf16e3 bne t5,t4,12de4 + +0001233c : + 1233c: 00002097 auipc ra,0x2 + 12340: b1408093 addi ra,ra,-1260 # 13e50 + 12344: a00aa137 lui sp,0xa00aa + 12348: 00a10113 addi sp,sp,10 # a00aa00a <__global_pointer$+0xa0095902> + 1234c: 0020a623 sw sp,12(ra) + 12350: 00c0af03 lw t5,12(ra) + 12354: a00aaeb7 lui t4,0xa00aa + 12358: 00ae8e93 addi t4,t4,10 # a00aa00a <__global_pointer$+0xa0095902> + 1235c: 30d00193 li gp,781 + 12360: 29df12e3 bne t5,t4,12de4 + +00012364 : + 12364: 00002097 auipc ra,0x2 + 12368: b0808093 addi ra,ra,-1272 # 13e6c + 1236c: 00aa0137 lui sp,0xaa0 + 12370: 0aa10113 addi sp,sp,170 # aa00aa <__global_pointer$+0xa8b9a2> + 12374: fe20aa23 sw sp,-12(ra) + 12378: ff40af03 lw t5,-12(ra) + 1237c: 00aa0eb7 lui t4,0xaa0 + 12380: 0aae8e93 addi t4,t4,170 # aa00aa <__global_pointer$+0xa8b9a2> + 12384: 30e00193 li gp,782 + 12388: 25df1ee3 bne t5,t4,12de4 + +0001238c : + 1238c: 00002097 auipc ra,0x2 + 12390: ae008093 addi ra,ra,-1312 # 13e6c + 12394: aa00b137 lui sp,0xaa00b + 12398: a0010113 addi sp,sp,-1536 # aa00aa00 <__global_pointer$+0xa9ff62f8> + 1239c: fe20ac23 sw sp,-8(ra) + 123a0: ff80af03 lw t5,-8(ra) + 123a4: aa00beb7 lui t4,0xaa00b + 123a8: a00e8e93 addi t4,t4,-1536 # aa00aa00 <__global_pointer$+0xa9ff62f8> + 123ac: 30f00193 li gp,783 + 123b0: 23df1ae3 bne t5,t4,12de4 + +000123b4 : + 123b4: 00002097 auipc ra,0x2 + 123b8: ab808093 addi ra,ra,-1352 # 13e6c + 123bc: 0aa01137 lui sp,0xaa01 + 123c0: aa010113 addi sp,sp,-1376 # aa00aa0 <__global_pointer$+0xa9ec398> + 123c4: fe20ae23 sw sp,-4(ra) + 123c8: ffc0af03 lw t5,-4(ra) + 123cc: 0aa01eb7 lui t4,0xaa01 + 123d0: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <__global_pointer$+0xa9ec398> + 123d4: 31000193 li gp,784 + 123d8: 21df16e3 bne t5,t4,12de4 + +000123dc : + 123dc: 00002097 auipc ra,0x2 + 123e0: a9008093 addi ra,ra,-1392 # 13e6c + 123e4: a00aa137 lui sp,0xa00aa + 123e8: 00a10113 addi sp,sp,10 # a00aa00a <__global_pointer$+0xa0095902> + 123ec: 0020a023 sw sp,0(ra) + 123f0: 0000af03 lw t5,0(ra) + 123f4: a00aaeb7 lui t4,0xa00aa + 123f8: 00ae8e93 addi t4,t4,10 # a00aa00a <__global_pointer$+0xa0095902> + 123fc: 31100193 li gp,785 + 12400: 1fdf12e3 bne t5,t4,12de4 + +00012404 : + 12404: 00002097 auipc ra,0x2 + 12408: a6c08093 addi ra,ra,-1428 # 13e70 + 1240c: 12345137 lui sp,0x12345 + 12410: 67810113 addi sp,sp,1656 # 12345678 <__global_pointer$+0x12330f70> + 12414: fe008213 addi tp,ra,-32 + 12418: 02222023 sw sp,32(tp) # 20 <_start-0x10060> + 1241c: 0000a283 lw t0,0(ra) + 12420: 12345eb7 lui t4,0x12345 + 12424: 678e8e93 addi t4,t4,1656 # 12345678 <__global_pointer$+0x12330f70> + 12428: 31200193 li gp,786 + 1242c: 1bd29ce3 bne t0,t4,12de4 + +00012430 : + 12430: 00002097 auipc ra,0x2 + 12434: a4008093 addi ra,ra,-1472 # 13e70 + 12438: 58213137 lui sp,0x58213 + 1243c: 09810113 addi sp,sp,152 # 58213098 <__global_pointer$+0x581fe990> + 12440: ffd08093 addi ra,ra,-3 + 12444: 0020a3a3 sw sp,7(ra) + 12448: 00002217 auipc tp,0x2 + 1244c: a2c20213 addi tp,tp,-1492 # 13e74 + 12450: 00022283 lw t0,0(tp) # 0 <_start-0x10080> + 12454: 58213eb7 lui t4,0x58213 + 12458: 098e8e93 addi t4,t4,152 # 58213098 <__global_pointer$+0x581fe990> + 1245c: 31300193 li gp,787 + 12460: 19d292e3 bne t0,t4,12de4 + +00012464 : + 12464: 31400193 li gp,788 + 12468: 00000213 li tp,0 + 1246c: aabbd0b7 lui ra,0xaabbd + 12470: cdd08093 addi ra,ra,-803 # aabbccdd <__global_pointer$+0xaaba85d5> + 12474: 00002117 auipc sp,0x2 + 12478: 9dc10113 addi sp,sp,-1572 # 13e50 + 1247c: 00112023 sw ra,0(sp) + 12480: 00012f03 lw t5,0(sp) + 12484: aabbdeb7 lui t4,0xaabbd + 12488: cdde8e93 addi t4,t4,-803 # aabbccdd <__global_pointer$+0xaaba85d5> + 1248c: 15df1ce3 bne t5,t4,12de4 + 12490: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12494: 00200293 li t0,2 + 12498: fc521ae3 bne tp,t0,1246c + +0001249c : + 1249c: 31500193 li gp,789 + 124a0: 00000213 li tp,0 + 124a4: daabc0b7 lui ra,0xdaabc + 124a8: ccd08093 addi ra,ra,-819 # daabbccd <__global_pointer$+0xdaaa75c5> + 124ac: 00002117 auipc sp,0x2 + 124b0: 9a410113 addi sp,sp,-1628 # 13e50 + 124b4: 00000013 nop + 124b8: 00112223 sw ra,4(sp) + 124bc: 00412f03 lw t5,4(sp) + 124c0: daabceb7 lui t4,0xdaabc + 124c4: ccde8e93 addi t4,t4,-819 # daabbccd <__global_pointer$+0xdaaa75c5> + 124c8: 11df1ee3 bne t5,t4,12de4 + 124cc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 124d0: 00200293 li t0,2 + 124d4: fc5218e3 bne tp,t0,124a4 + +000124d8 : + 124d8: 31600193 li gp,790 + 124dc: 00000213 li tp,0 + 124e0: ddaac0b7 lui ra,0xddaac + 124e4: bcc08093 addi ra,ra,-1076 # ddaabbcc <__global_pointer$+0xdda974c4> + 124e8: 00002117 auipc sp,0x2 + 124ec: 96810113 addi sp,sp,-1688 # 13e50 + 124f0: 00000013 nop + 124f4: 00000013 nop + 124f8: 00112423 sw ra,8(sp) + 124fc: 00812f03 lw t5,8(sp) + 12500: ddaaceb7 lui t4,0xddaac + 12504: bcce8e93 addi t4,t4,-1076 # ddaabbcc <__global_pointer$+0xdda974c4> + 12508: 0ddf1ee3 bne t5,t4,12de4 + 1250c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12510: 00200293 li t0,2 + 12514: fc5216e3 bne tp,t0,124e0 + +00012518 : + 12518: 31700193 li gp,791 + 1251c: 00000213 li tp,0 + 12520: cddab0b7 lui ra,0xcddab + 12524: bbc08093 addi ra,ra,-1092 # cddaabbc <__global_pointer$+0xcdd964b4> + 12528: 00000013 nop + 1252c: 00002117 auipc sp,0x2 + 12530: 92410113 addi sp,sp,-1756 # 13e50 + 12534: 00112623 sw ra,12(sp) + 12538: 00c12f03 lw t5,12(sp) + 1253c: cddabeb7 lui t4,0xcddab + 12540: bbce8e93 addi t4,t4,-1092 # cddaabbc <__global_pointer$+0xcdd964b4> + 12544: 0bdf10e3 bne t5,t4,12de4 + 12548: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1254c: 00200293 li t0,2 + 12550: fc5218e3 bne tp,t0,12520 + +00012554 : + 12554: 31800193 li gp,792 + 12558: 00000213 li tp,0 + 1255c: ccddb0b7 lui ra,0xccddb + 12560: abb08093 addi ra,ra,-1349 # ccddaabb <__global_pointer$+0xccdc63b3> + 12564: 00000013 nop + 12568: 00002117 auipc sp,0x2 + 1256c: 8e810113 addi sp,sp,-1816 # 13e50 + 12570: 00000013 nop + 12574: 00112823 sw ra,16(sp) + 12578: 01012f03 lw t5,16(sp) + 1257c: ccddbeb7 lui t4,0xccddb + 12580: abbe8e93 addi t4,t4,-1349 # ccddaabb <__global_pointer$+0xccdc63b3> + 12584: 07df10e3 bne t5,t4,12de4 + 12588: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1258c: 00200293 li t0,2 + 12590: fc5216e3 bne tp,t0,1255c + +00012594 : + 12594: 31900193 li gp,793 + 12598: 00000213 li tp,0 + 1259c: bccde0b7 lui ra,0xbccde + 125a0: aab08093 addi ra,ra,-1365 # bccddaab <__global_pointer$+0xbccc93a3> + 125a4: 00000013 nop + 125a8: 00000013 nop + 125ac: 00002117 auipc sp,0x2 + 125b0: 8a410113 addi sp,sp,-1884 # 13e50 + 125b4: 00112a23 sw ra,20(sp) + 125b8: 01412f03 lw t5,20(sp) + 125bc: bccdeeb7 lui t4,0xbccde + 125c0: aabe8e93 addi t4,t4,-1365 # bccddaab <__global_pointer$+0xbccc93a3> + 125c4: 03df10e3 bne t5,t4,12de4 + 125c8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 125cc: 00200293 li t0,2 + 125d0: fc5216e3 bne tp,t0,1259c + +000125d4 : + 125d4: 31a00193 li gp,794 + 125d8: 00000213 li tp,0 + 125dc: 00002117 auipc sp,0x2 + 125e0: 87410113 addi sp,sp,-1932 # 13e50 + 125e4: 001120b7 lui ra,0x112 + 125e8: 23308093 addi ra,ra,563 # 112233 <__global_pointer$+0xfdb2b> + 125ec: 00112023 sw ra,0(sp) + 125f0: 00012f03 lw t5,0(sp) + 125f4: 00112eb7 lui t4,0x112 + 125f8: 233e8e93 addi t4,t4,563 # 112233 <__global_pointer$+0xfdb2b> + 125fc: 7fdf1463 bne t5,t4,12de4 + 12600: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12604: 00200293 li t0,2 + 12608: fc521ae3 bne tp,t0,125dc + +0001260c : + 1260c: 31b00193 li gp,795 + 12610: 00000213 li tp,0 + 12614: 00002117 auipc sp,0x2 + 12618: 83c10113 addi sp,sp,-1988 # 13e50 + 1261c: 300110b7 lui ra,0x30011 + 12620: 22308093 addi ra,ra,547 # 30011223 <__global_pointer$+0x2fffcb1b> + 12624: 00000013 nop + 12628: 00112223 sw ra,4(sp) + 1262c: 00412f03 lw t5,4(sp) + 12630: 30011eb7 lui t4,0x30011 + 12634: 223e8e93 addi t4,t4,547 # 30011223 <__global_pointer$+0x2fffcb1b> + 12638: 7bdf1663 bne t5,t4,12de4 + 1263c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12640: 00200293 li t0,2 + 12644: fc5218e3 bne tp,t0,12614 + +00012648 : + 12648: 31c00193 li gp,796 + 1264c: 00000213 li tp,0 + 12650: 00002117 auipc sp,0x2 + 12654: 80010113 addi sp,sp,-2048 # 13e50 + 12658: 330010b7 lui ra,0x33001 + 1265c: 12208093 addi ra,ra,290 # 33001122 <__global_pointer$+0x32feca1a> + 12660: 00000013 nop + 12664: 00000013 nop + 12668: 00112423 sw ra,8(sp) + 1266c: 00812f03 lw t5,8(sp) + 12670: 33001eb7 lui t4,0x33001 + 12674: 122e8e93 addi t4,t4,290 # 33001122 <__global_pointer$+0x32feca1a> + 12678: 77df1663 bne t5,t4,12de4 + 1267c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12680: 00200293 li t0,2 + 12684: fc5216e3 bne tp,t0,12650 + +00012688 : + 12688: 31d00193 li gp,797 + 1268c: 00000213 li tp,0 + 12690: 00001117 auipc sp,0x1 + 12694: 7c010113 addi sp,sp,1984 # 13e50 + 12698: 00000013 nop + 1269c: 233000b7 lui ra,0x23300 + 126a0: 11208093 addi ra,ra,274 # 23300112 <__global_pointer$+0x232eba0a> + 126a4: 00112623 sw ra,12(sp) + 126a8: 00c12f03 lw t5,12(sp) + 126ac: 23300eb7 lui t4,0x23300 + 126b0: 112e8e93 addi t4,t4,274 # 23300112 <__global_pointer$+0x232eba0a> + 126b4: 73df1863 bne t5,t4,12de4 + 126b8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 126bc: 00200293 li t0,2 + 126c0: fc5218e3 bne tp,t0,12690 + +000126c4 : + 126c4: 31e00193 li gp,798 + 126c8: 00000213 li tp,0 + 126cc: 00001117 auipc sp,0x1 + 126d0: 78410113 addi sp,sp,1924 # 13e50 + 126d4: 00000013 nop + 126d8: 223300b7 lui ra,0x22330 + 126dc: 01108093 addi ra,ra,17 # 22330011 <__global_pointer$+0x2231b909> + 126e0: 00000013 nop + 126e4: 00112823 sw ra,16(sp) + 126e8: 01012f03 lw t5,16(sp) + 126ec: 22330eb7 lui t4,0x22330 + 126f0: 011e8e93 addi t4,t4,17 # 22330011 <__global_pointer$+0x2231b909> + 126f4: 6fdf1863 bne t5,t4,12de4 + 126f8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 126fc: 00200293 li t0,2 + 12700: fc5216e3 bne tp,t0,126cc + +00012704 : + 12704: 31f00193 li gp,799 + 12708: 00000213 li tp,0 + 1270c: 00001117 auipc sp,0x1 + 12710: 74410113 addi sp,sp,1860 # 13e50 + 12714: 00000013 nop + 12718: 00000013 nop + 1271c: 122330b7 lui ra,0x12233 + 12720: 00108093 addi ra,ra,1 # 12233001 <__global_pointer$+0x1221e8f9> + 12724: 00112a23 sw ra,20(sp) + 12728: 01412f03 lw t5,20(sp) + 1272c: 12233eb7 lui t4,0x12233 + 12730: 001e8e93 addi t4,t4,1 # 12233001 <__global_pointer$+0x1221e8f9> + 12734: 6bdf1863 bne t5,t4,12de4 + 12738: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1273c: 00200293 li t0,2 + 12740: fc5216e3 bne tp,t0,1270c + +00012744 : + 12744: ff0100b7 lui ra,0xff010 + 12748: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 1274c: 0f0f1137 lui sp,0xf0f1 + 12750: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12754: 0020cf33 xor t5,ra,sp + 12758: f00ffeb7 lui t4,0xf00ff + 1275c: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12760: 32000193 li gp,800 + 12764: 69df1063 bne t5,t4,12de4 + +00012768 : + 12768: 0ff010b7 lui ra,0xff01 + 1276c: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12770: f0f0f137 lui sp,0xf0f0f + 12774: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 12778: 0020cf33 xor t5,ra,sp + 1277c: ff010eb7 lui t4,0xff010 + 12780: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12784: 32100193 li gp,801 + 12788: 65df1e63 bne t5,t4,12de4 + +0001278c : + 1278c: 00ff00b7 lui ra,0xff0 + 12790: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12794: 0f0f1137 lui sp,0xf0f1 + 12798: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 1279c: 0020cf33 xor t5,ra,sp + 127a0: 0ff01eb7 lui t4,0xff01 + 127a4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 127a8: 32200193 li gp,802 + 127ac: 63df1c63 bne t5,t4,12de4 + +000127b0 : + 127b0: f00ff0b7 lui ra,0xf00ff + 127b4: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00ea907> + 127b8: f0f0f137 lui sp,0xf0f0f + 127bc: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 127c0: 0020cf33 xor t5,ra,sp + 127c4: 00ff0eb7 lui t4,0xff0 + 127c8: 0ffe8e93 addi t4,t4,255 # ff00ff <__global_pointer$+0xfdb9f7> + 127cc: 32300193 li gp,803 + 127d0: 61df1a63 bne t5,t4,12de4 + +000127d4 : + 127d4: ff0100b7 lui ra,0xff010 + 127d8: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 127dc: 0f0f1137 lui sp,0xf0f1 + 127e0: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 127e4: 0020c0b3 xor ra,ra,sp + 127e8: f00ffeb7 lui t4,0xf00ff + 127ec: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 127f0: 32400193 li gp,804 + 127f4: 5fd09863 bne ra,t4,12de4 + +000127f8 : + 127f8: ff0100b7 lui ra,0xff010 + 127fc: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12800: 0f0f1137 lui sp,0xf0f1 + 12804: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12808: 0020c133 xor sp,ra,sp + 1280c: f00ffeb7 lui t4,0xf00ff + 12810: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12814: 32500193 li gp,805 + 12818: 5dd11663 bne sp,t4,12de4 + +0001281c : + 1281c: ff0100b7 lui ra,0xff010 + 12820: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12824: 0010c0b3 xor ra,ra,ra + 12828: 00000e93 li t4,0 + 1282c: 32600193 li gp,806 + 12830: 5bd09a63 bne ra,t4,12de4 + +00012834 : + 12834: 00000213 li tp,0 + 12838: ff0100b7 lui ra,0xff010 + 1283c: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12840: 0f0f1137 lui sp,0xf0f1 + 12844: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12848: 0020cf33 xor t5,ra,sp + 1284c: 000f0313 mv t1,t5 + 12850: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12854: 00200293 li t0,2 + 12858: fe5210e3 bne tp,t0,12838 + 1285c: f00ffeb7 lui t4,0xf00ff + 12860: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12864: 32700193 li gp,807 + 12868: 57d31e63 bne t1,t4,12de4 + +0001286c : + 1286c: 00000213 li tp,0 + 12870: 0ff010b7 lui ra,0xff01 + 12874: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12878: f0f0f137 lui sp,0xf0f0f + 1287c: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 12880: 0020cf33 xor t5,ra,sp + 12884: 00000013 nop + 12888: 000f0313 mv t1,t5 + 1288c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12890: 00200293 li t0,2 + 12894: fc521ee3 bne tp,t0,12870 + 12898: ff010eb7 lui t4,0xff010 + 1289c: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 128a0: 32800193 li gp,808 + 128a4: 55d31063 bne t1,t4,12de4 + +000128a8 : + 128a8: 00000213 li tp,0 + 128ac: 00ff00b7 lui ra,0xff0 + 128b0: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 128b4: 0f0f1137 lui sp,0xf0f1 + 128b8: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 128bc: 0020cf33 xor t5,ra,sp + 128c0: 00000013 nop + 128c4: 00000013 nop + 128c8: 000f0313 mv t1,t5 + 128cc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 128d0: 00200293 li t0,2 + 128d4: fc521ce3 bne tp,t0,128ac + 128d8: 0ff01eb7 lui t4,0xff01 + 128dc: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 128e0: 32900193 li gp,809 + 128e4: 51d31063 bne t1,t4,12de4 + +000128e8 : + 128e8: 00000213 li tp,0 + 128ec: ff0100b7 lui ra,0xff010 + 128f0: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 128f4: 0f0f1137 lui sp,0xf0f1 + 128f8: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 128fc: 0020cf33 xor t5,ra,sp + 12900: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12904: 00200293 li t0,2 + 12908: fe5212e3 bne tp,t0,128ec + 1290c: f00ffeb7 lui t4,0xf00ff + 12910: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12914: 32a00193 li gp,810 + 12918: 4ddf1663 bne t5,t4,12de4 + +0001291c : + 1291c: 00000213 li tp,0 + 12920: 0ff010b7 lui ra,0xff01 + 12924: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12928: f0f0f137 lui sp,0xf0f0f + 1292c: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 12930: 00000013 nop + 12934: 0020cf33 xor t5,ra,sp + 12938: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 1293c: 00200293 li t0,2 + 12940: fe5210e3 bne tp,t0,12920 + 12944: ff010eb7 lui t4,0xff010 + 12948: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 1294c: 32b00193 li gp,811 + 12950: 49df1a63 bne t5,t4,12de4 + +00012954 : + 12954: 00000213 li tp,0 + 12958: 00ff00b7 lui ra,0xff0 + 1295c: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12960: 0f0f1137 lui sp,0xf0f1 + 12964: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12968: 00000013 nop + 1296c: 00000013 nop + 12970: 0020cf33 xor t5,ra,sp + 12974: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12978: 00200293 li t0,2 + 1297c: fc521ee3 bne tp,t0,12958 + 12980: 0ff01eb7 lui t4,0xff01 + 12984: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12988: 32c00193 li gp,812 + 1298c: 45df1c63 bne t5,t4,12de4 + +00012990 : + 12990: 00000213 li tp,0 + 12994: ff0100b7 lui ra,0xff010 + 12998: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 1299c: 00000013 nop + 129a0: 0f0f1137 lui sp,0xf0f1 + 129a4: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 129a8: 0020cf33 xor t5,ra,sp + 129ac: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 129b0: 00200293 li t0,2 + 129b4: fe5210e3 bne tp,t0,12994 + 129b8: f00ffeb7 lui t4,0xf00ff + 129bc: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 129c0: 32d00193 li gp,813 + 129c4: 43df1063 bne t5,t4,12de4 + +000129c8 : + 129c8: 00000213 li tp,0 + 129cc: 0ff010b7 lui ra,0xff01 + 129d0: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 129d4: 00000013 nop + 129d8: f0f0f137 lui sp,0xf0f0f + 129dc: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 129e0: 00000013 nop + 129e4: 0020cf33 xor t5,ra,sp + 129e8: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 129ec: 00200293 li t0,2 + 129f0: fc521ee3 bne tp,t0,129cc + 129f4: ff010eb7 lui t4,0xff010 + 129f8: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 129fc: 32e00193 li gp,814 + 12a00: 3fdf1263 bne t5,t4,12de4 + +00012a04 : + 12a04: 00000213 li tp,0 + 12a08: 00ff00b7 lui ra,0xff0 + 12a0c: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12a10: 00000013 nop + 12a14: 00000013 nop + 12a18: 0f0f1137 lui sp,0xf0f1 + 12a1c: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12a20: 0020cf33 xor t5,ra,sp + 12a24: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a28: 00200293 li t0,2 + 12a2c: fc521ee3 bne tp,t0,12a08 + 12a30: 0ff01eb7 lui t4,0xff01 + 12a34: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12a38: 32f00193 li gp,815 + 12a3c: 3bdf1463 bne t5,t4,12de4 + +00012a40 : + 12a40: 00000213 li tp,0 + 12a44: 0f0f1137 lui sp,0xf0f1 + 12a48: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12a4c: ff0100b7 lui ra,0xff010 + 12a50: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12a54: 0020cf33 xor t5,ra,sp + 12a58: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a5c: 00200293 li t0,2 + 12a60: fe5212e3 bne tp,t0,12a44 + 12a64: f00ffeb7 lui t4,0xf00ff + 12a68: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12a6c: 33000193 li gp,816 + 12a70: 37df1a63 bne t5,t4,12de4 + +00012a74 : + 12a74: 00000213 li tp,0 + 12a78: f0f0f137 lui sp,0xf0f0f + 12a7c: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 12a80: 0ff010b7 lui ra,0xff01 + 12a84: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12a88: 00000013 nop + 12a8c: 0020cf33 xor t5,ra,sp + 12a90: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12a94: 00200293 li t0,2 + 12a98: fe5210e3 bne tp,t0,12a78 + 12a9c: ff010eb7 lui t4,0xff010 + 12aa0: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12aa4: 33100193 li gp,817 + 12aa8: 33df1e63 bne t5,t4,12de4 + +00012aac : + 12aac: 00000213 li tp,0 + 12ab0: 0f0f1137 lui sp,0xf0f1 + 12ab4: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12ab8: 00ff00b7 lui ra,0xff0 + 12abc: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12ac0: 00000013 nop + 12ac4: 00000013 nop + 12ac8: 0020cf33 xor t5,ra,sp + 12acc: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12ad0: 00200293 li t0,2 + 12ad4: fc521ee3 bne tp,t0,12ab0 + 12ad8: 0ff01eb7 lui t4,0xff01 + 12adc: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12ae0: 33200193 li gp,818 + 12ae4: 31df1063 bne t5,t4,12de4 + +00012ae8 : + 12ae8: 00000213 li tp,0 + 12aec: 0f0f1137 lui sp,0xf0f1 + 12af0: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12af4: 00000013 nop + 12af8: ff0100b7 lui ra,0xff010 + 12afc: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12b00: 0020cf33 xor t5,ra,sp + 12b04: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12b08: 00200293 li t0,2 + 12b0c: fe5210e3 bne tp,t0,12aec + 12b10: f00ffeb7 lui t4,0xf00ff + 12b14: 00fe8e93 addi t4,t4,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12b18: 33300193 li gp,819 + 12b1c: 2ddf1463 bne t5,t4,12de4 + +00012b20 : + 12b20: 00000213 li tp,0 + 12b24: f0f0f137 lui sp,0xf0f0f + 12b28: 0f010113 addi sp,sp,240 # f0f0f0f0 <__global_pointer$+0xf0efa9e8> + 12b2c: 00000013 nop + 12b30: 0ff010b7 lui ra,0xff01 + 12b34: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12b38: 00000013 nop + 12b3c: 0020cf33 xor t5,ra,sp + 12b40: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12b44: 00200293 li t0,2 + 12b48: fc521ee3 bne tp,t0,12b24 + 12b4c: ff010eb7 lui t4,0xff010 + 12b50: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12b54: 33400193 li gp,820 + 12b58: 29df1663 bne t5,t4,12de4 + +00012b5c : + 12b5c: 00000213 li tp,0 + 12b60: 0f0f1137 lui sp,0xf0f1 + 12b64: f0f10113 addi sp,sp,-241 # f0f0f0f <__global_pointer$+0xf0dc807> + 12b68: 00000013 nop + 12b6c: 00000013 nop + 12b70: 00ff00b7 lui ra,0xff0 + 12b74: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12b78: 0020cf33 xor t5,ra,sp + 12b7c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12b80: 00200293 li t0,2 + 12b84: fc521ee3 bne tp,t0,12b60 + 12b88: 0ff01eb7 lui t4,0xff01 + 12b8c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12b90: 33500193 li gp,821 + 12b94: 25df1863 bne t5,t4,12de4 + +00012b98 : + 12b98: ff0100b7 lui ra,0xff010 + 12b9c: f0008093 addi ra,ra,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12ba0: 00104133 xor sp,zero,ra + 12ba4: ff010eb7 lui t4,0xff010 + 12ba8: f00e8e93 addi t4,t4,-256 # ff00ff00 <__global_pointer$+0xfeffb7f8> + 12bac: 33600193 li gp,822 + 12bb0: 23d11a63 bne sp,t4,12de4 + +00012bb4 : + 12bb4: 00ff00b7 lui ra,0xff0 + 12bb8: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12bbc: 0000c133 xor sp,ra,zero + 12bc0: 00ff0eb7 lui t4,0xff0 + 12bc4: 0ffe8e93 addi t4,t4,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12bc8: 33700193 li gp,823 + 12bcc: 21d11c63 bne sp,t4,12de4 + +00012bd0 : + 12bd0: 000040b3 xor ra,zero,zero + 12bd4: 00000e93 li t4,0 + 12bd8: 33800193 li gp,824 + 12bdc: 21d09463 bne ra,t4,12de4 + +00012be0 : + 12be0: 111110b7 lui ra,0x11111 + 12be4: 11108093 addi ra,ra,273 # 11111111 <__global_pointer$+0x110fca09> + 12be8: 22222137 lui sp,0x22222 + 12bec: 22210113 addi sp,sp,546 # 22222222 <__global_pointer$+0x2220db1a> + 12bf0: 0020c033 xor zero,ra,sp + 12bf4: 00000e93 li t4,0 + 12bf8: 33900193 li gp,825 + 12bfc: 1fd01463 bne zero,t4,12de4 + +00012c00 : + 12c00: 00ff10b7 lui ra,0xff1 + 12c04: f0008093 addi ra,ra,-256 # ff0f00 <__global_pointer$+0xfdc7f8> + 12c08: f0f0cf13 xori t5,ra,-241 + 12c0c: ff00feb7 lui t4,0xff00f + 12c10: 00fe8e93 addi t4,t4,15 # ff00f00f <__global_pointer$+0xfeffa907> + 12c14: 33a00193 li gp,826 + 12c18: 1ddf1663 bne t5,t4,12de4 + +00012c1c : + 12c1c: 0ff010b7 lui ra,0xff01 + 12c20: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12c24: 0f00cf13 xori t5,ra,240 + 12c28: 0ff01eb7 lui t4,0xff01 + 12c2c: f00e8e93 addi t4,t4,-256 # ff00f00 <__global_pointer$+0xfeec7f8> + 12c30: 33b00193 li gp,827 + 12c34: 1bdf1863 bne t5,t4,12de4 + +00012c38 : + 12c38: 00ff10b7 lui ra,0xff1 + 12c3c: 8ff08093 addi ra,ra,-1793 # ff08ff <__global_pointer$+0xfdc1f7> + 12c40: 70f0cf13 xori t5,ra,1807 + 12c44: 00ff1eb7 lui t4,0xff1 + 12c48: ff0e8e93 addi t4,t4,-16 # ff0ff0 <__global_pointer$+0xfdc8e8> + 12c4c: 33c00193 li gp,828 + 12c50: 19df1a63 bne t5,t4,12de4 + +00012c54 : + 12c54: f00ff0b7 lui ra,0xf00ff + 12c58: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12c5c: 0f00cf13 xori t5,ra,240 + 12c60: f00ffeb7 lui t4,0xf00ff + 12c64: 0ffe8e93 addi t4,t4,255 # f00ff0ff <__global_pointer$+0xf00ea9f7> + 12c68: 33d00193 li gp,829 + 12c6c: 17df1c63 bne t5,t4,12de4 + +00012c70 : + 12c70: ff00f0b7 lui ra,0xff00f + 12c74: 70008093 addi ra,ra,1792 # ff00f700 <__global_pointer$+0xfeffaff8> + 12c78: 70f0c093 xori ra,ra,1807 + 12c7c: ff00feb7 lui t4,0xff00f + 12c80: 00fe8e93 addi t4,t4,15 # ff00f00f <__global_pointer$+0xfeffa907> + 12c84: 33e00193 li gp,830 + 12c88: 15d09e63 bne ra,t4,12de4 + +00012c8c : + 12c8c: 00000213 li tp,0 + 12c90: 0ff010b7 lui ra,0xff01 + 12c94: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12c98: 0f00cf13 xori t5,ra,240 + 12c9c: 000f0313 mv t1,t5 + 12ca0: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12ca4: 00200293 li t0,2 + 12ca8: fe5214e3 bne tp,t0,12c90 + 12cac: 0ff01eb7 lui t4,0xff01 + 12cb0: f00e8e93 addi t4,t4,-256 # ff00f00 <__global_pointer$+0xfeec7f8> + 12cb4: 33f00193 li gp,831 + 12cb8: 13d31663 bne t1,t4,12de4 + +00012cbc : + 12cbc: 00000213 li tp,0 + 12cc0: 00ff10b7 lui ra,0xff1 + 12cc4: 8ff08093 addi ra,ra,-1793 # ff08ff <__global_pointer$+0xfdc1f7> + 12cc8: 70f0cf13 xori t5,ra,1807 + 12ccc: 00000013 nop + 12cd0: 000f0313 mv t1,t5 + 12cd4: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12cd8: 00200293 li t0,2 + 12cdc: fe5212e3 bne tp,t0,12cc0 + 12ce0: 00ff1eb7 lui t4,0xff1 + 12ce4: ff0e8e93 addi t4,t4,-16 # ff0ff0 <__global_pointer$+0xfdc8e8> + 12ce8: 34000193 li gp,832 + 12cec: 0fd31c63 bne t1,t4,12de4 + +00012cf0 : + 12cf0: 00000213 li tp,0 + 12cf4: f00ff0b7 lui ra,0xf00ff + 12cf8: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12cfc: 0f00cf13 xori t5,ra,240 + 12d00: 00000013 nop + 12d04: 00000013 nop + 12d08: 000f0313 mv t1,t5 + 12d0c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12d10: 00200293 li t0,2 + 12d14: fe5210e3 bne tp,t0,12cf4 + 12d18: f00ffeb7 lui t4,0xf00ff + 12d1c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <__global_pointer$+0xf00ea9f7> + 12d20: 34100193 li gp,833 + 12d24: 0dd31063 bne t1,t4,12de4 + +00012d28 : + 12d28: 00000213 li tp,0 + 12d2c: 0ff010b7 lui ra,0xff01 + 12d30: ff008093 addi ra,ra,-16 # ff00ff0 <__global_pointer$+0xfeec8e8> + 12d34: 0f00cf13 xori t5,ra,240 + 12d38: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12d3c: 00200293 li t0,2 + 12d40: fe5216e3 bne tp,t0,12d2c + 12d44: 0ff01eb7 lui t4,0xff01 + 12d48: f00e8e93 addi t4,t4,-256 # ff00f00 <__global_pointer$+0xfeec7f8> + 12d4c: 34200193 li gp,834 + 12d50: 09df1a63 bne t5,t4,12de4 + +00012d54 : + 12d54: 00000213 li tp,0 + 12d58: 00ff10b7 lui ra,0xff1 + 12d5c: fff08093 addi ra,ra,-1 # ff0fff <__global_pointer$+0xfdc8f7> + 12d60: 00000013 nop + 12d64: 00f0cf13 xori t5,ra,15 + 12d68: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12d6c: 00200293 li t0,2 + 12d70: fe5214e3 bne tp,t0,12d58 + 12d74: 00ff1eb7 lui t4,0xff1 + 12d78: ff0e8e93 addi t4,t4,-16 # ff0ff0 <__global_pointer$+0xfdc8e8> + 12d7c: 34300193 li gp,835 + 12d80: 07df1263 bne t5,t4,12de4 + +00012d84 : + 12d84: 00000213 li tp,0 + 12d88: f00ff0b7 lui ra,0xf00ff + 12d8c: 00f08093 addi ra,ra,15 # f00ff00f <__global_pointer$+0xf00ea907> + 12d90: 00000013 nop + 12d94: 00000013 nop + 12d98: 0f00cf13 xori t5,ra,240 + 12d9c: 00120213 addi tp,tp,1 # 1 <_start-0x1007f> + 12da0: 00200293 li t0,2 + 12da4: fe5212e3 bne tp,t0,12d88 + 12da8: f00ffeb7 lui t4,0xf00ff + 12dac: 0ffe8e93 addi t4,t4,255 # f00ff0ff <__global_pointer$+0xf00ea9f7> + 12db0: 34400193 li gp,836 + 12db4: 03df1863 bne t5,t4,12de4 + +00012db8 : + 12db8: 0f004093 xori ra,zero,240 + 12dbc: 0f000e93 li t4,240 + 12dc0: 34500193 li gp,837 + 12dc4: 03d09063 bne ra,t4,12de4 + +00012dc8 : + 12dc8: 00ff00b7 lui ra,0xff0 + 12dcc: 0ff08093 addi ra,ra,255 # ff00ff <__global_pointer$+0xfdb9f7> + 12dd0: 70f0c013 xori zero,ra,1807 + 12dd4: 00000e93 li t4,0 + 12dd8: 34600193 li gp,838 + 12ddc: 01d01463 bne zero,t4,12de4 + 12de0: 00301463 bne zero,gp,12de8 + +00012de4 : + 12de4: 00000a6f jal s4,12de4 + +00012de8 : + 12de8: 00100193 li gp,1 + +00012dec : + 12dec: 00000a6f jal s4,12dec diff --git a/src/Rv32iCPU/benchmark/testC_instruction.txt b/src/Rv32iCPU/benchmark/testC_instruction.txt new file mode 100644 index 0000000..5671be6 --- /dev/null +++ b/src/Rv32iCPU/benchmark/testC_instruction.txt @@ -0,0 +1,2908 @@ +00000093 +0000af13 +00000e93 +20c00193 +01df0463 +54d0206f +00100093 +0010af13 +00000e93 +20d00193 +01df0463 +5350206f +00300093 +0070af13 +00100e93 +20e00193 +01df0463 +51d0206f +00700093 +0030af13 +00000e93 +20f00193 +01df0463 +5050206f +00000093 +8000af13 +00000e93 +21000193 +01df0463 +4ed0206f +800000b7 +0000af13 +00100e93 +21100193 +01df0463 +4d50206f +800000b7 +8000af13 +00100e93 +21200193 +01df0463 +4bd0206f +00000093 +7ff0af13 +00100e93 +21300193 +01df0463 +4a50206f +800000b7 +fff08093 +0000af13 +00000e93 +21400193 +01df0463 +4890206f +800000b7 +fff08093 +7ff0af13 +00000e93 +21500193 +01df0463 +46d0206f +800000b7 +7ff0af13 +00100e93 +21600193 +01df0463 +4550206f +800000b7 +fff08093 +8000af13 +00000e93 +21700193 +01df0463 +4390206f +00000093 +fff0af13 +00000e93 +21800193 +01df0463 +4210206f +fff00093 +0010af13 +00100e93 +21900193 +01df0463 +4090206f +fff00093 +fff0af13 +00000e93 +21a00193 +01df0463 +3f10206f +00b00093 +00d0a093 +00100e93 +21b00193 +01d08463 +3d90206f +00000213 +00f00093 +00a0af13 +000f0313 +00120213 +00200293 +fe5216e3 +00000e93 +21c00193 +01d30463 +3ad0206f +00000213 +00a00093 +0100af13 +00000013 +000f0313 +00120213 +00200293 +fe5214e3 +00100e93 +21d00193 +01d30463 +37d0206f +00000213 +01000093 +0090af13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00000e93 +21e00193 +01d30463 +3490206f +00000213 +00b00093 +00f0af13 +00120213 +00200293 +fe5218e3 +00100e93 +21f00193 +01df0463 +3210206f +00000213 +01100093 +00000013 +0080af13 +00120213 +00200293 +fe5216e3 +00000e93 +22000193 +01df0463 +2f50206f +00000213 +00c00093 +00000013 +00000013 +00e0af13 +00120213 +00200293 +fe5214e3 +00100e93 +22100193 +01df0463 +2c50206f +fff02093 +00000e93 +22200193 +01d08463 +2b10206f +00ff00b7 +0ff08093 +fff0a013 +00000e93 +22300193 +01d00463 +2950206f +00000093 +0000bf13 +00000e93 +22400193 +01df0463 +27d0206f +00100093 +0010bf13 +00000e93 +22500193 +01df0463 +2650206f +00300093 +0070bf13 +00100e93 +22600193 +01df0463 +24d0206f +00700093 +0030bf13 +00000e93 +22700193 +01df0463 +2350206f +00000093 +8000bf13 +00100e93 +22800193 +01df0463 +21d0206f +800000b7 +0000bf13 +00000e93 +22900193 +01df0463 +2050206f +800000b7 +8000bf13 +00100e93 +22a00193 +01df0463 +1ed0206f +00000093 +7ff0bf13 +00100e93 +22b00193 +01df0463 +1d50206f +800000b7 +fff08093 +0000bf13 +00000e93 +22c00193 +01df0463 +1b90206f +800000b7 +fff08093 +7ff0bf13 +00000e93 +22d00193 +01df0463 +19d0206f +800000b7 +7ff0bf13 +00000e93 +22e00193 +01df0463 +1850206f +800000b7 +fff08093 +8000bf13 +00100e93 +22f00193 +01df0463 +1690206f +00000093 +fff0bf13 +00100e93 +23000193 +01df0463 +1510206f +fff00093 +0010bf13 +00000e93 +23100193 +01df0463 +1390206f +fff00093 +fff0bf13 +00000e93 +23200193 +01df0463 +1210206f +00b00093 +00d0b093 +00100e93 +23300193 +01d08463 +1090206f +00000213 +00f00093 +00a0bf13 +000f0313 +00120213 +00200293 +fe5216e3 +00000e93 +23400193 +01d30463 +0dd0206f +00000213 +00a00093 +0100bf13 +00000013 +000f0313 +00120213 +00200293 +fe5214e3 +00100e93 +23500193 +01d30463 +0ad0206f +00000213 +01000093 +0090bf13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00000e93 +23700193 +01d30463 +0790206f +00000213 +00b00093 +00f0bf13 +00120213 +00200293 +fe5218e3 +00100e93 +23800193 +01df0463 +0510206f +00000213 +01100093 +00000013 +0080bf13 +00120213 +00200293 +fe5216e3 +00000e93 +23900193 +01df0463 +0250206f +00000213 +00c00093 +00000013 +00000013 +00e0bf13 +00120213 +00200293 +fe5214e3 +00100e93 +23a00193 +01df0463 +7f40206f +fff03093 +00100e93 +23b00193 +01d08463 +7e00206f +00ff00b7 +0ff08093 +fff0b013 +00000e93 +23c00193 +01d00463 +7c40206f +00000093 +00000113 +0020bf33 +00000e93 +23d00193 +01df0463 +7a80206f +00100093 +00100113 +0020bf33 +00000e93 +23e00193 +01df0463 +78c0206f +00300093 +00700113 +0020bf33 +00100e93 +23f00193 +01df0463 +7700206f +00700093 +00300113 +0020bf33 +00000e93 +24000193 +01df0463 +7540206f +00000093 +ffff8137 +0020bf33 +00100e93 +24100193 +01df0463 +7380206f +800000b7 +00000113 +0020bf33 +00000e93 +24200193 +01df0463 +71c0206f +800000b7 +ffff8137 +0020bf33 +00100e93 +24300193 +01df0463 +7000206f +00000093 +00008137 +fff10113 +0020bf33 +00100e93 +24400193 +01df0463 +6e00206f +800000b7 +fff08093 +00000113 +0020bf33 +00000e93 +24500193 +01df0463 +6c00206f +800000b7 +fff08093 +00008137 +fff10113 +0020bf33 +00000e93 +24600193 +01df0463 +69c0206f +800000b7 +00008137 +fff10113 +0020bf33 +00000e93 +24700193 +01df0463 +67c0206f +800000b7 +fff08093 +ffff8137 +0020bf33 +00100e93 +24800193 +01df0463 +65c0206f +00000093 +fff00113 +0020bf33 +00100e93 +24900193 +01df0463 +6400206f +fff00093 +00100113 +0020bf33 +00000e93 +24a00193 +01df0463 +6240206f +fff00093 +fff00113 +0020bf33 +00000e93 +24b00193 +01df0463 +6080206f +00e00093 +00d00113 +0020b0b3 +00000e93 +24c00193 +01d08463 +5ec0206f +00b00093 +00d00113 +0020b133 +00100e93 +24d00193 +01d10463 +5d00206f +00d00093 +0010b0b3 +00000e93 +24e00193 +01d08463 +5b80206f +00000213 +00b00093 +00d00113 +0020bf33 +000f0313 +00120213 +00200293 +fe5214e3 +00100e93 +24f00193 +01d30463 +5880206f +00000213 +00e00093 +00d00113 +0020bf33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00000e93 +25000193 +01d30463 +5540206f +00000213 +00c00093 +00d00113 +0020bf33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +00100e93 +25100193 +01d30463 +51c0206f +00000213 +00e00093 +00d00113 +0020bf33 +00120213 +00200293 +fe5216e3 +00000e93 +25200193 +01df0463 +4f00206f +00000213 +00b00093 +00d00113 +00000013 +0020bf33 +00120213 +00200293 +fe5214e3 +00100e93 +25300193 +01df0463 +4c00206f +00000213 +00f00093 +00d00113 +00000013 +00000013 +0020bf33 +00120213 +00200293 +fe5212e3 +00000e93 +25400193 +01df0463 +48c0206f +00000213 +00a00093 +00000013 +00d00113 +0020bf33 +00120213 +00200293 +fe5214e3 +00100e93 +25500193 +01df0463 +45c0206f +00000213 +01000093 +00000013 +00d00113 +00000013 +0020bf33 +00120213 +00200293 +fe5212e3 +00000e93 +25600193 +01df0463 +4280206f +00000213 +00900093 +00000013 +00000013 +00d00113 +0020bf33 +00120213 +00200293 +fe5212e3 +00100e93 +25700193 +01df0463 +3f40206f +00000213 +00d00113 +01100093 +0020bf33 +00120213 +00200293 +fe5216e3 +00000e93 +25900193 +01df0463 +3c80206f +00000213 +00d00113 +00800093 +00000013 +0020bf33 +00120213 +00200293 +fe5214e3 +00100e93 +25a00193 +01df0463 +3980206f +00000213 +00d00113 +01200093 +00000013 +00000013 +0020bf33 +00120213 +00200293 +fe5212e3 +00000e93 +25b00193 +01df0463 +3640206f +00000213 +00d00113 +00000013 +00700093 +0020bf33 +00120213 +00200293 +fe5214e3 +00100e93 +25c00193 +01df0463 +3340206f +00000213 +00d00113 +00000013 +01300093 +00000013 +0020bf33 +00120213 +00200293 +fe5212e3 +00000e93 +25d00193 +01df0463 +3000206f +00000213 +00d00113 +00000013 +00000013 +00600093 +0020bf33 +00120213 +00200293 +fe5212e3 +00100e93 +25e00193 +01df0463 +2cc0206f +fff00093 +00103133 +00100e93 +25f00193 +01d10463 +2b40206f +fff00093 +0000b133 +00000e93 +26000193 +01d10463 +29c0206f +000030b3 +00000e93 +26100193 +01d08463 +2880206f +01000093 +01e00113 +0020b033 +00000e93 +26200193 +01d00463 +26c0206f +800000b7 +00000113 +4020df33 +80000eb7 +26300193 +01df0463 +2500206f +800000b7 +00100113 +4020df33 +c0000eb7 +26400193 +01df0463 +2340206f +800000b7 +00700113 +4020df33 +ff000eb7 +26500193 +01df0463 +2180206f +800000b7 +00e00113 +4020df33 +fffe0eb7 +26600193 +01df0463 +1fc0206f +800000b7 +00108093 +01f00113 +4020df33 +fff00e93 +26700193 +01df0463 +1dc0206f +800000b7 +fff08093 +00000113 +4020df33 +80000eb7 +fffe8e93 +26800193 +01df0463 +1b80206f +800000b7 +fff08093 +00100113 +4020df33 +40000eb7 +fffe8e93 +26900193 +01df0463 +1940206f +800000b7 +fff08093 +00700113 +4020df33 +01000eb7 +fffe8e93 +26a00193 +01df0463 +1700206f +800000b7 +fff08093 +00e00113 +4020df33 +00020eb7 +fffe8e93 +26b00193 +01df0463 +14c0206f +800000b7 +fff08093 +01f00113 +4020df33 +00000e93 +26c00193 +01df0463 +12c0206f +818180b7 +18108093 +00000113 +4020df33 +81818eb7 +181e8e93 +26d00193 +01df0463 +1080206f +818180b7 +18108093 +00100113 +4020df33 +c0c0ceb7 +0c0e8e93 +26e00193 +01df0463 +0e40206f +818180b7 +18108093 +00700113 +4020df33 +ff030eb7 +303e8e93 +26f00193 +01df0463 +0c00206f +818180b7 +18108093 +00e00113 +4020df33 +fffe0eb7 +606e8e93 +27000193 +01df0463 +09c0206f +818180b7 +18108093 +01f00113 +4020df33 +fff00e93 +27100193 +01df0463 +07c0206f +818180b7 +18108093 +fc000113 +4020df33 +81818eb7 +181e8e93 +27200193 +01df0463 +0580206f +818180b7 +18108093 +fc100113 +4020df33 +c0c0ceb7 +0c0e8e93 +27300193 +01df0463 +0340206f +818180b7 +18108093 +fc700113 +4020df33 +ff030eb7 +303e8e93 +27400193 +01df0463 +0100206f +818180b7 +18108093 +fce00113 +4020df33 +fffe0eb7 +606e8e93 +27500193 +01df0463 +7ed0106f +818180b7 +18108093 +fff00113 +4020df33 +fff00e93 +27600193 +01df0463 +7cd0106f +800000b7 +00700113 +4020d0b3 +ff000eb7 +27700193 +01d08463 +7b10106f +800000b7 +00e00113 +4020d133 +fffe0eb7 +27800193 +01d10463 +7950106f +00700093 +4010d0b3 +00000e93 +27900193 +01d08463 +77d0106f +00000213 +800000b7 +00700113 +4020df33 +000f0313 +00120213 +00200293 +fe5214e3 +ff000eb7 +27a00193 +01d30463 +74d0106f +00000213 +800000b7 +00e00113 +4020df33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +fffe0eb7 +27b00193 +01d30463 +7190106f +00000213 +800000b7 +01f00113 +4020df33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +fff00e93 +27c00193 +01d30463 +6e10106f +00000213 +800000b7 +00700113 +4020df33 +00120213 +00200293 +fe5216e3 +ff000eb7 +27d00193 +01df0463 +6b50106f +00000213 +800000b7 +00e00113 +00000013 +4020df33 +00120213 +00200293 +fe5214e3 +fffe0eb7 +27e00193 +01df0463 +6850106f +00000213 +800000b7 +01f00113 +00000013 +00000013 +4020df33 +00120213 +00200293 +fe5212e3 +fff00e93 +27f00193 +01df0463 +6510106f +00000213 +800000b7 +00000013 +00700113 +4020df33 +00120213 +00200293 +fe5214e3 +ff000eb7 +28000193 +01df0463 +6210106f +00000213 +800000b7 +00000013 +00e00113 +00000013 +4020df33 +00120213 +00200293 +fe5212e3 +fffe0eb7 +28100193 +01df0463 +5ed0106f +00000213 +800000b7 +00000013 +00000013 +01f00113 +4020df33 +00120213 +00200293 +fe5212e3 +fff00e93 +28200193 +01df0463 +5b90106f +00000213 +00700113 +800000b7 +4020df33 +00120213 +00200293 +fe5216e3 +ff000eb7 +28300193 +01df0463 +58d0106f +00000213 +00e00113 +800000b7 +00000013 +4020df33 +00120213 +00200293 +fe5214e3 +fffe0eb7 +28400193 +01df0463 +55d0106f +00000213 +01f00113 +800000b7 +00000013 +00000013 +4020df33 +00120213 +00200293 +fe5212e3 +fff00e93 +28500193 +01df0463 +5290106f +00000213 +00700113 +00000013 +800000b7 +4020df33 +00120213 +00200293 +fe5214e3 +ff000eb7 +28600193 +01df0463 +4f90106f +00000213 +00e00113 +00000013 +800000b7 +00000013 +4020df33 +00120213 +00200293 +fe5212e3 +fffe0eb7 +28700193 +01df0463 +4c50106f +00000213 +01f00113 +00000013 +00000013 +800000b7 +4020df33 +00120213 +00200293 +fe5212e3 +fff00e93 +28800193 +01df0463 +4910106f +00f00093 +40105133 +00000e93 +28900193 +01d10463 +4790106f +02000093 +4000d133 +02000e93 +28a00193 +01d10463 +4610106f +400050b3 +00000e93 +28b00193 +01d08463 +44d0106f +40000093 +00001137 +80010113 +4020d033 +00000e93 +28c00193 +01d00463 +42d0106f +00000093 +4000df13 +00000e93 +28d00193 +01df0463 +4150106f +800000b7 +4010df13 +c0000eb7 +28e00193 +01df0463 +3fd0106f +800000b7 +4070df13 +ff000eb7 +28f00193 +01df0463 +3e50106f +800000b7 +40e0df13 +fffe0eb7 +29000193 +01df0463 +3cd0106f +800000b7 +00108093 +41f0df13 +fff00e93 +29100193 +01df0463 +3b10106f +800000b7 +fff08093 +4010df13 +40000eb7 +fffe8e93 +29200193 +01df0463 +3910106f +800000b7 +fff08093 +4070df13 +01000eb7 +fffe8e93 +29300193 +01df0463 +3710106f +800000b7 +fff08093 +40e0df13 +00020eb7 +fffe8e93 +29400193 +01df0463 +3510106f +800000b7 +fff08093 +41f0df13 +00000e93 +29500193 +01df0463 +3350106f +818180b7 +18108093 +4000df13 +81818eb7 +181e8e93 +29600193 +01df0463 +3150106f +818180b7 +18108093 +4010df13 +c0c0ceb7 +0c0e8e93 +29700193 +01df0463 +2f50106f +818180b7 +18108093 +4070df13 +ff030eb7 +303e8e93 +29800193 +01df0463 +2d50106f +818180b7 +18108093 +40e0df13 +fffe0eb7 +606e8e93 +29900193 +01df0463 +2b50106f +818180b7 +18108093 +41f0df13 +fff00e93 +29a00193 +01df0463 +2990106f +800000b7 +4070d093 +ff000eb7 +29b00193 +01d08463 +2810106f +00000213 +800000b7 +4070df13 +000f0313 +00120213 +00200293 +fe5216e3 +ff000eb7 +29c00193 +01d30463 +2550106f +00000213 +800000b7 +40e0df13 +00000013 +000f0313 +00120213 +00200293 +fe5214e3 +fffe0eb7 +29d00193 +01d30463 +2250106f +00000213 +800000b7 +00108093 +41f0df13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +fff00e93 +29e00193 +01d30463 +1ed0106f +00000213 +800000b7 +4070df13 +00120213 +00200293 +fe5218e3 +ff000eb7 +29f00193 +01df0463 +1c50106f +00000213 +800000b7 +00000013 +40e0df13 +00120213 +00200293 +fe5216e3 +fffe0eb7 +2a000193 +01df0463 +1990106f +00000213 +800000b7 +00108093 +00000013 +00000013 +41f0df13 +00120213 +00200293 +fe5212e3 +fff00e93 +2a100193 +01df0463 +1650106f +40405093 +00000e93 +2a200193 +01d08463 +1510106f +02100093 +40a0d013 +00000e93 +2a300193 +01d00463 +1390106f +800000b7 +00000113 +0020df33 +80000eb7 +2a400193 +01df0463 +11d0106f +800000b7 +00100113 +0020df33 +40000eb7 +2a500193 +01df0463 +1010106f +800000b7 +00700113 +0020df33 +01000eb7 +2a600193 +01df0463 +0e50106f +800000b7 +00e00113 +0020df33 +00020eb7 +2a700193 +01df0463 +0c90106f +800000b7 +00108093 +01f00113 +0020df33 +00100e93 +2a800193 +01df0463 +0a90106f +fff00093 +00000113 +0020df33 +fff00e93 +2a900193 +01df0463 +08d0106f +fff00093 +00100113 +0020df33 +80000eb7 +fffe8e93 +2aa00193 +01df0463 +06d0106f +fff00093 +00700113 +0020df33 +02000eb7 +fffe8e93 +2ab00193 +01df0463 +04d0106f +fff00093 +00e00113 +0020df33 +00040eb7 +fffe8e93 +2ac00193 +01df0463 +02d0106f +fff00093 +01f00113 +0020df33 +00100e93 +2ad00193 +01df0463 +0110106f +212120b7 +12108093 +00000113 +0020df33 +21212eb7 +121e8e93 +2ae00193 +01df0463 +7ec0106f +212120b7 +12108093 +00100113 +0020df33 +10909eb7 +090e8e93 +2af00193 +01df0463 +7c80106f +212120b7 +12108093 +00700113 +0020df33 +00424eb7 +242e8e93 +2b000193 +01df0463 +7a40106f +212120b7 +12108093 +00e00113 +0020df33 +00008eb7 +484e8e93 +2b100193 +01df0463 +7800106f +212120b7 +12108093 +01f00113 +0020df33 +00000e93 +2b200193 +01df0463 +7600106f +212120b7 +12108093 +fc000113 +0020df33 +21212eb7 +121e8e93 +2b300193 +01df0463 +73c0106f +212120b7 +12108093 +fc100113 +0020df33 +10909eb7 +090e8e93 +2b400193 +01df0463 +7180106f +212120b7 +12108093 +fc700113 +0020df33 +00424eb7 +242e8e93 +2b500193 +01df0463 +6f40106f +212120b7 +12108093 +fce00113 +0020df33 +00008eb7 +484e8e93 +2b600193 +01df0463 +6d00106f +212120b7 +12108093 +fff00113 +0020df33 +00000e93 +2b700193 +01df0463 +6b00106f +800000b7 +00700113 +0020d0b3 +01000eb7 +2b800193 +01d08463 +6940106f +800000b7 +00e00113 +0020d133 +00020eb7 +2b900193 +01d10463 +6780106f +00700093 +0010d0b3 +00000e93 +2ba00193 +01d08463 +6600106f +00000213 +800000b7 +00700113 +0020df33 +000f0313 +00120213 +00200293 +fe5214e3 +01000eb7 +2bb00193 +01d30463 +6300106f +00000213 +800000b7 +00e00113 +0020df33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00020eb7 +2bc00193 +01d30463 +5fc0106f +00000213 +800000b7 +01f00113 +0020df33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +00100e93 +2bd00193 +01d30463 +5c40106f +00000213 +800000b7 +00700113 +0020df33 +00120213 +00200293 +fe5216e3 +01000eb7 +2be00193 +01df0463 +5980106f +00000213 +800000b7 +00e00113 +00000013 +0020df33 +00120213 +00200293 +fe5214e3 +00020eb7 +2bf00193 +01df0463 +5680106f +00000213 +800000b7 +01f00113 +00000013 +00000013 +0020df33 +00120213 +00200293 +fe5212e3 +00100e93 +2c000193 +01df0463 +5340106f +00000213 +800000b7 +00000013 +00700113 +0020df33 +00120213 +00200293 +fe5214e3 +01000eb7 +2c100193 +01df0463 +5040106f +00000213 +800000b7 +00000013 +00e00113 +00000013 +0020df33 +00120213 +00200293 +fe5212e3 +00020eb7 +2c200193 +01df0463 +4d00106f +00000213 +800000b7 +00000013 +00000013 +01f00113 +0020df33 +00120213 +00200293 +fe5212e3 +00100e93 +2c300193 +01df0463 +49c0106f +00000213 +00700113 +800000b7 +0020df33 +00120213 +00200293 +fe5216e3 +01000eb7 +2c400193 +01df0463 +4700106f +00000213 +00e00113 +800000b7 +00000013 +0020df33 +00120213 +00200293 +fe5214e3 +00020eb7 +2c500193 +01df0463 +4400106f +00000213 +01f00113 +800000b7 +00000013 +00000013 +0020df33 +00120213 +00200293 +fe5212e3 +00100e93 +2c600193 +01df0463 +40c0106f +00000213 +00700113 +00000013 +800000b7 +0020df33 +00120213 +00200293 +fe5214e3 +01000eb7 +2c700193 +01df0463 +3dc0106f +00000213 +00e00113 +00000013 +800000b7 +00000013 +0020df33 +00120213 +00200293 +fe5212e3 +00020eb7 +2c800193 +01df0463 +3a80106f +00000213 +01f00113 +00000013 +00000013 +800000b7 +0020df33 +00120213 +00200293 +fe5212e3 +00100e93 +2c900193 +01df0463 +3740106f +00f00093 +00105133 +00000e93 +2ca00193 +01d10463 +35c0106f +02000093 +0000d133 +02000e93 +2cb00193 +01d10463 +3440106f +000050b3 +00000e93 +2cc00193 +01d08463 +3300106f +40000093 +00001137 +80010113 +0020d033 +00000e93 +2cd00193 +01d00463 +3100106f +800000b7 +00000113 +0020df33 +80000eb7 +2ce00193 +01df0463 +2f40106f +800000b7 +00100113 +0020df33 +40000eb7 +2cf00193 +01df0463 +2d80106f +800000b7 +00700113 +0020df33 +01000eb7 +2d000193 +01df0463 +2bc0106f +800000b7 +00e00113 +0020df33 +00020eb7 +2d100193 +01df0463 +2a00106f +800000b7 +00108093 +01f00113 +0020df33 +00100e93 +2d200193 +01df0463 +2800106f +fff00093 +00000113 +0020df33 +fff00e93 +2d300193 +01df0463 +2640106f +fff00093 +00100113 +0020df33 +80000eb7 +fffe8e93 +2d400193 +01df0463 +2440106f +fff00093 +00700113 +0020df33 +02000eb7 +fffe8e93 +2d500193 +01df0463 +2240106f +fff00093 +00e00113 +0020df33 +00040eb7 +fffe8e93 +2d600193 +01df0463 +2040106f +fff00093 +01f00113 +0020df33 +00100e93 +2d700193 +01df0463 +1e80106f +212120b7 +12108093 +00000113 +0020df33 +21212eb7 +121e8e93 +2d800193 +01df0463 +1c40106f +212120b7 +12108093 +00100113 +0020df33 +10909eb7 +090e8e93 +2d900193 +01df0463 +1a00106f +212120b7 +12108093 +00700113 +0020df33 +00424eb7 +242e8e93 +2da00193 +01df0463 +17c0106f +212120b7 +12108093 +00e00113 +0020df33 +00008eb7 +484e8e93 +2db00193 +01df0463 +1580106f +212120b7 +12108093 +01f00113 +0020df33 +00000e93 +2dc00193 +01df0463 +1380106f +800000b7 +0070d093 +01000eb7 +2dd00193 +01d08463 +1200106f +00000213 +800000b7 +0070df13 +000f0313 +00120213 +00200293 +fe5216e3 +01000eb7 +2de00193 +01d30463 +0f40106f +00000213 +800000b7 +00e0df13 +00000013 +000f0313 +00120213 +00200293 +fe5214e3 +00020eb7 +2df00193 +01d30463 +0c40106f +00000213 +800000b7 +00108093 +01f0df13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +00100e93 +2e000193 +01d30463 +08c0106f +00000213 +800000b7 +0070df13 +00120213 +00200293 +fe5218e3 +01000eb7 +2e100193 +01df0463 +0640106f +00000213 +800000b7 +00000013 +00e0df13 +00120213 +00200293 +fe5216e3 +00020eb7 +2e200193 +01df0463 +0380106f +00000213 +800000b7 +00108093 +00000013 +00000013 +01f0df13 +00120213 +00200293 +fe5212e3 +00100e93 +2e300193 +01df0463 +0040106f +00405093 +00000e93 +2e400193 +7fd09ae3 +02100093 +00a0d013 +00000e93 +2e500193 +7fd010e3 +00000093 +00000113 +40208f33 +00000e93 +2e600193 +7ddf14e3 +00100093 +00100113 +40208f33 +00000e93 +2e700193 +7bdf18e3 +00300093 +00700113 +40208f33 +ffc00e93 +2e800193 +79df1ce3 +00000093 +ffff8137 +40208f33 +00008eb7 +2e900193 +79df10e3 +800000b7 +00000113 +40208f33 +80000eb7 +2ea00193 +77df14e3 +800000b7 +ffff8137 +40208f33 +80008eb7 +2eb00193 +75df18e3 +00000093 +00008137 +fff10113 +40208f33 +ffff8eb7 +001e8e93 +2ec00193 +73df18e3 +800000b7 +fff08093 +00000113 +40208f33 +80000eb7 +fffe8e93 +2ed00193 +71df18e3 +800000b7 +fff08093 +00008137 +fff10113 +40208f33 +7fff8eb7 +2ee00193 +6fdf18e3 +800000b7 +00008137 +fff10113 +40208f33 +7fff8eb7 +001e8e93 +2ef00193 +6ddf18e3 +800000b7 +fff08093 +ffff8137 +40208f33 +80008eb7 +fffe8e93 +2f000193 +6bdf18e3 +00000093 +fff00113 +40208f33 +00100e93 +2f100193 +69df1ce3 +fff00093 +00100113 +40208f33 +ffe00e93 +2f200193 +69df10e3 +fff00093 +fff00113 +40208f33 +00000e93 +2f300193 +67df14e3 +00d00093 +00b00113 +402080b3 +00200e93 +2f400193 +65d098e3 +00e00093 +00b00113 +40208133 +00300e93 +2f500193 +63d11ce3 +00d00093 +401080b3 +00000e93 +2f600193 +63d092e3 +00000213 +00d00093 +00b00113 +40208f33 +000f0313 +00120213 +00200293 +fe5214e3 +00200e93 +2f700193 +5fd31ce3 +00000213 +00e00093 +00b00113 +40208f33 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00300e93 +2f800193 +5dd314e3 +00000213 +00f00093 +00b00113 +40208f33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +00400e93 +2f900193 +59d31ae3 +00000213 +00d00093 +00b00113 +40208f33 +00120213 +00200293 +fe5216e3 +00200e93 +2fa00193 +57df16e3 +00000213 +00e00093 +00b00113 +00000013 +40208f33 +00120213 +00200293 +fe5214e3 +00300e93 +2fb00193 +55df10e3 +00000213 +00f00093 +00b00113 +00000013 +00000013 +40208f33 +00120213 +00200293 +fe5212e3 +00400e93 +2fc00193 +51df18e3 +00000213 +00d00093 +00000013 +00b00113 +40208f33 +00120213 +00200293 +fe5214e3 +00200e93 +2fd00193 +4fdf12e3 +00000213 +00e00093 +00000013 +00b00113 +00000013 +40208f33 +00120213 +00200293 +fe5212e3 +00300e93 +2fe00193 +4bdf1ae3 +00000213 +00f00093 +00000013 +00000013 +00b00113 +40208f33 +00120213 +00200293 +fe5212e3 +00400e93 +2ff00193 +49df12e3 +00000213 +00b00113 +00d00093 +40208f33 +00120213 +00200293 +fe5216e3 +00200e93 +30000193 +45df1ee3 +00000213 +00b00113 +00e00093 +00000013 +40208f33 +00120213 +00200293 +fe5214e3 +00300e93 +30100193 +43df18e3 +00000213 +00b00113 +00f00093 +00000013 +00000013 +40208f33 +00120213 +00200293 +fe5212e3 +00400e93 +30200193 +41df10e3 +00000213 +00b00113 +00000013 +00d00093 +40208f33 +00120213 +00200293 +fe5214e3 +00200e93 +30300193 +3ddf1ae3 +00000213 +00b00113 +00000013 +00e00093 +00000013 +40208f33 +00120213 +00200293 +fe5212e3 +00300e93 +30400193 +3bdf12e3 +00000213 +00b00113 +00000013 +00000013 +00f00093 +40208f33 +00120213 +00200293 +fe5212e3 +00400e93 +30500193 +37df1ae3 +ff100093 +40100133 +00f00e93 +30600193 +37d110e3 +02000093 +40008133 +02000e93 +30700193 +35d116e3 +400000b3 +00000e93 +30800193 +33d09ee3 +01000093 +01e00113 +40208033 +00000e93 +30900193 +33d012e3 +00002097 +b8c08093 +00aa0137 +0aa10113 +0020a023 +0000af03 +00aa0eb7 +0aae8e93 +30a00193 +2fdf1ee3 +00002097 +b6408093 +aa00b137 +a0010113 +0020a223 +0040af03 +aa00beb7 +a00e8e93 +30b00193 +2ddf1ae3 +00002097 +b3c08093 +0aa01137 +aa010113 +0020a423 +0080af03 +0aa01eb7 +aa0e8e93 +30c00193 +2bdf16e3 +00002097 +b1408093 +a00aa137 +00a10113 +0020a623 +00c0af03 +a00aaeb7 +00ae8e93 +30d00193 +29df12e3 +00002097 +b0808093 +00aa0137 +0aa10113 +fe20aa23 +ff40af03 +00aa0eb7 +0aae8e93 +30e00193 +25df1ee3 +00002097 +ae008093 +aa00b137 +a0010113 +fe20ac23 +ff80af03 +aa00beb7 +a00e8e93 +30f00193 +23df1ae3 +00002097 +ab808093 +0aa01137 +aa010113 +fe20ae23 +ffc0af03 +0aa01eb7 +aa0e8e93 +31000193 +21df16e3 +00002097 +a9008093 +a00aa137 +00a10113 +0020a023 +0000af03 +a00aaeb7 +00ae8e93 +31100193 +1fdf12e3 +00002097 +a6c08093 +12345137 +67810113 +fe008213 +02222023 +0000a283 +12345eb7 +678e8e93 +31200193 +1bd29ce3 +00002097 +a4008093 +58213137 +09810113 +ffd08093 +0020a3a3 +00002217 +a2c20213 +00022283 +58213eb7 +098e8e93 +31300193 +19d292e3 +31400193 +00000213 +aabbd0b7 +cdd08093 +00002117 +9dc10113 +00112023 +00012f03 +aabbdeb7 +cdde8e93 +15df1ce3 +00120213 +00200293 +fc521ae3 +31500193 +00000213 +daabc0b7 +ccd08093 +00002117 +9a410113 +00000013 +00112223 +00412f03 +daabceb7 +ccde8e93 +11df1ee3 +00120213 +00200293 +fc5218e3 +31600193 +00000213 +ddaac0b7 +bcc08093 +00002117 +96810113 +00000013 +00000013 +00112423 +00812f03 +ddaaceb7 +bcce8e93 +0ddf1ee3 +00120213 +00200293 +fc5216e3 +31700193 +00000213 +cddab0b7 +bbc08093 +00000013 +00002117 +92410113 +00112623 +00c12f03 +cddabeb7 +bbce8e93 +0bdf10e3 +00120213 +00200293 +fc5218e3 +31800193 +00000213 +ccddb0b7 +abb08093 +00000013 +00002117 +8e810113 +00000013 +00112823 +01012f03 +ccddbeb7 +abbe8e93 +07df10e3 +00120213 +00200293 +fc5216e3 +31900193 +00000213 +bccde0b7 +aab08093 +00000013 +00000013 +00002117 +8a410113 +00112a23 +01412f03 +bccdeeb7 +aabe8e93 +03df10e3 +00120213 +00200293 +fc5216e3 +31a00193 +00000213 +00002117 +87410113 +001120b7 +23308093 +00112023 +00012f03 +00112eb7 +233e8e93 +7fdf1463 +00120213 +00200293 +fc521ae3 +31b00193 +00000213 +00002117 +83c10113 +300110b7 +22308093 +00000013 +00112223 +00412f03 +30011eb7 +223e8e93 +7bdf1663 +00120213 +00200293 +fc5218e3 +31c00193 +00000213 +00002117 +80010113 +330010b7 +12208093 +00000013 +00000013 +00112423 +00812f03 +33001eb7 +122e8e93 +77df1663 +00120213 +00200293 +fc5216e3 +31d00193 +00000213 +00001117 +7c010113 +00000013 +233000b7 +11208093 +00112623 +00c12f03 +23300eb7 +112e8e93 +73df1863 +00120213 +00200293 +fc5218e3 +31e00193 +00000213 +00001117 +78410113 +00000013 +223300b7 +01108093 +00000013 +00112823 +01012f03 +22330eb7 +011e8e93 +6fdf1863 +00120213 +00200293 +fc5216e3 +31f00193 +00000213 +00001117 +74410113 +00000013 +00000013 +122330b7 +00108093 +00112a23 +01412f03 +12233eb7 +001e8e93 +6bdf1863 +00120213 +00200293 +fc5216e3 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020cf33 +f00ffeb7 +00fe8e93 +32000193 +69df1063 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +0020cf33 +ff010eb7 +f00e8e93 +32100193 +65df1e63 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +0020cf33 +0ff01eb7 +ff0e8e93 +32200193 +63df1c63 +f00ff0b7 +00f08093 +f0f0f137 +0f010113 +0020cf33 +00ff0eb7 +0ffe8e93 +32300193 +61df1a63 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020c0b3 +f00ffeb7 +00fe8e93 +32400193 +5fd09863 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020c133 +f00ffeb7 +00fe8e93 +32500193 +5dd11663 +ff0100b7 +f0008093 +0010c0b3 +00000e93 +32600193 +5bd09a63 +00000213 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020cf33 +000f0313 +00120213 +00200293 +fe5210e3 +f00ffeb7 +00fe8e93 +32700193 +57d31e63 +00000213 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +0020cf33 +00000013 +000f0313 +00120213 +00200293 +fc521ee3 +ff010eb7 +f00e8e93 +32800193 +55d31063 +00000213 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +0020cf33 +00000013 +00000013 +000f0313 +00120213 +00200293 +fc521ce3 +0ff01eb7 +ff0e8e93 +32900193 +51d31063 +00000213 +ff0100b7 +f0008093 +0f0f1137 +f0f10113 +0020cf33 +00120213 +00200293 +fe5212e3 +f00ffeb7 +00fe8e93 +32a00193 +4ddf1663 +00000213 +0ff010b7 +ff008093 +f0f0f137 +0f010113 +00000013 +0020cf33 +00120213 +00200293 +fe5210e3 +ff010eb7 +f00e8e93 +32b00193 +49df1a63 +00000213 +00ff00b7 +0ff08093 +0f0f1137 +f0f10113 +00000013 +00000013 +0020cf33 +00120213 +00200293 +fc521ee3 +0ff01eb7 +ff0e8e93 +32c00193 +45df1c63 +00000213 +ff0100b7 +f0008093 +00000013 +0f0f1137 +f0f10113 +0020cf33 +00120213 +00200293 +fe5210e3 +f00ffeb7 +00fe8e93 +32d00193 +43df1063 +00000213 +0ff010b7 +ff008093 +00000013 +f0f0f137 +0f010113 +00000013 +0020cf33 +00120213 +00200293 +fc521ee3 +ff010eb7 +f00e8e93 +32e00193 +3fdf1263 +00000213 +00ff00b7 +0ff08093 +00000013 +00000013 +0f0f1137 +f0f10113 +0020cf33 +00120213 +00200293 +fc521ee3 +0ff01eb7 +ff0e8e93 +32f00193 +3bdf1463 +00000213 +0f0f1137 +f0f10113 +ff0100b7 +f0008093 +0020cf33 +00120213 +00200293 +fe5212e3 +f00ffeb7 +00fe8e93 +33000193 +37df1a63 +00000213 +f0f0f137 +0f010113 +0ff010b7 +ff008093 +00000013 +0020cf33 +00120213 +00200293 +fe5210e3 +ff010eb7 +f00e8e93 +33100193 +33df1e63 +00000213 +0f0f1137 +f0f10113 +00ff00b7 +0ff08093 +00000013 +00000013 +0020cf33 +00120213 +00200293 +fc521ee3 +0ff01eb7 +ff0e8e93 +33200193 +31df1063 +00000213 +0f0f1137 +f0f10113 +00000013 +ff0100b7 +f0008093 +0020cf33 +00120213 +00200293 +fe5210e3 +f00ffeb7 +00fe8e93 +33300193 +2ddf1463 +00000213 +f0f0f137 +0f010113 +00000013 +0ff010b7 +ff008093 +00000013 +0020cf33 +00120213 +00200293 +fc521ee3 +ff010eb7 +f00e8e93 +33400193 +29df1663 +00000213 +0f0f1137 +f0f10113 +00000013 +00000013 +00ff00b7 +0ff08093 +0020cf33 +00120213 +00200293 +fc521ee3 +0ff01eb7 +ff0e8e93 +33500193 +25df1863 +ff0100b7 +f0008093 +00104133 +ff010eb7 +f00e8e93 +33600193 +23d11a63 +00ff00b7 +0ff08093 +0000c133 +00ff0eb7 +0ffe8e93 +33700193 +21d11c63 +000040b3 +00000e93 +33800193 +21d09463 +111110b7 +11108093 +22222137 +22210113 +0020c033 +00000e93 +33900193 +1fd01463 +00ff10b7 +f0008093 +f0f0cf13 +ff00feb7 +00fe8e93 +33a00193 +1ddf1663 +0ff010b7 +ff008093 +0f00cf13 +0ff01eb7 +f00e8e93 +33b00193 +1bdf1863 +00ff10b7 +8ff08093 +70f0cf13 +00ff1eb7 +ff0e8e93 +33c00193 +19df1a63 +f00ff0b7 +00f08093 +0f00cf13 +f00ffeb7 +0ffe8e93 +33d00193 +17df1c63 +ff00f0b7 +70008093 +70f0c093 +ff00feb7 +00fe8e93 +33e00193 +15d09e63 +00000213 +0ff010b7 +ff008093 +0f00cf13 +000f0313 +00120213 +00200293 +fe5214e3 +0ff01eb7 +f00e8e93 +33f00193 +13d31663 +00000213 +00ff10b7 +8ff08093 +70f0cf13 +00000013 +000f0313 +00120213 +00200293 +fe5212e3 +00ff1eb7 +ff0e8e93 +34000193 +0fd31c63 +00000213 +f00ff0b7 +00f08093 +0f00cf13 +00000013 +00000013 +000f0313 +00120213 +00200293 +fe5210e3 +f00ffeb7 +0ffe8e93 +34100193 +0dd31063 +00000213 +0ff010b7 +ff008093 +0f00cf13 +00120213 +00200293 +fe5216e3 +0ff01eb7 +f00e8e93 +34200193 +09df1a63 +00000213 +00ff10b7 +fff08093 +00000013 +00f0cf13 +00120213 +00200293 +fe5214e3 +00ff1eb7 +ff0e8e93 +34300193 +07df1263 +00000213 +f00ff0b7 +00f08093 +00000013 +00000013 +0f00cf13 +00120213 +00200293 +fe5212e3 +f00ffeb7 +0ffe8e93 +34400193 +03df1863 +0f004093 +0f000e93 +34500193 +03d09063 +00ff00b7 +0ff08093 +70f0c013 +00000e93 +34600193 +01d01463 +00301463 +00000a6f +00100193 +00000a6f +00000000 diff --git a/src/SPIFlash/SPIFlashController.bsv b/src/SPIFlash/SPIFlashController.bsv index 45136db..485a64c 100644 --- a/src/SPIFlash/SPIFlashController.bsv +++ b/src/SPIFlash/SPIFlashController.bsv @@ -113,47 +113,4 @@ module mkSPIFlashController (SPIFlashController); endmodule - -module mkTb (); - let spiflash_ctrl <- mkSPIFlashController; - - function Action read_and_show; - return action - let read_byte <- spiflash_ctrl.read_byte; - $display("read_byte = %x", read_byte); - endaction; - endfunction - - mkAutoFSM( seq - spiflash_ctrl.operate( True, 'h000, 'h12); // write 1byte to buffer - spiflash_ctrl.operate( True, 'h001, 'h34); // write 1byte to buffer - - spiflash_ctrl.operate( True, 'h100, 'hab); // set page_addr_l = 0xAB - spiflash_ctrl.operate( True, 'h101, 'h01); // set page_addr_h = 0x01 - spiflash_ctrl.operate( True, 'h108, 'h20); // start erase page - - spiflash_ctrl.operate( True, 'h108, 'h02); // start write page - - spiflash_ctrl.operate(False, 'h000, 'h00); // read 1byte from buffer - spiflash_ctrl.operate(False, 'h001, 'h00); // read 1byte from buffer - repeat(2) read_and_show; - - spiflash_ctrl.operate( True, 'h108, 'h03); // start read page - - spiflash_ctrl.operate(False, 'h000, 'h00); // read 1byte from buffer - spiflash_ctrl.operate(False, 'h001, 'h00); // read 1byte from buffer - repeat(2) read_and_show; - endseq ); - - rule spi_set_miso; - spiflash_ctrl.miso_i(0); - endrule - - //rule spi_show; - // $display("ss:%d sck:%d mosi:%d", spiflash_ctrl.ss_o, spiflash_ctrl.sck_o, spiflash_ctrl.mosi_o); - //endrule - -endmodule - - endpackage diff --git a/src/SPIFlash/TbSPIFlashController.bsv b/src/SPIFlash/TbSPIFlashController.bsv new file mode 100644 index 0000000..8e0b7e7 --- /dev/null +++ b/src/SPIFlash/TbSPIFlashController.bsv @@ -0,0 +1,52 @@ +// Copyright(c) 2022 https://github.com/WangXuan95 + +package TbSPIFlashController; + +import StmtFSM::*; + +import SPIFlashController::*; + + +module mkTb (); + let spiflash_ctrl <- mkSPIFlashController; + + function Action read_and_show; + return action + let read_byte <- spiflash_ctrl.read_byte; + $display("read_byte = %x", read_byte); + endaction; + endfunction + + mkAutoFSM( seq + spiflash_ctrl.operate( True, 'h000, 'h12); // write 1byte to buffer + spiflash_ctrl.operate( True, 'h001, 'h34); // write 1byte to buffer + + spiflash_ctrl.operate( True, 'h100, 'hab); // set page_addr_l = 0xAB + spiflash_ctrl.operate( True, 'h101, 'h01); // set page_addr_h = 0x01 + spiflash_ctrl.operate( True, 'h108, 'h20); // start erase page + + spiflash_ctrl.operate( True, 'h108, 'h02); // start write page + + spiflash_ctrl.operate(False, 'h000, 'h00); // read 1byte from buffer + spiflash_ctrl.operate(False, 'h001, 'h00); // read 1byte from buffer + repeat(2) read_and_show; + + spiflash_ctrl.operate( True, 'h108, 'h03); // start read page + + spiflash_ctrl.operate(False, 'h000, 'h00); // read 1byte from buffer + spiflash_ctrl.operate(False, 'h001, 'h00); // read 1byte from buffer + repeat(2) read_and_show; + endseq ); + + rule spi_set_miso; + spiflash_ctrl.miso_i(0); + endrule + + //rule spi_show; + // $display("ss:%d sck:%d mosi:%d", spiflash_ctrl.ss_o, spiflash_ctrl.sck_o, spiflash_ctrl.mosi_o); + //endrule + +endmodule + + +endpackage