Collection of cryptographic hash functions written in pure Rust

Overview

RustCrypto: hashes Project Chat dependency status

Collection of cryptographic hash functions written in pure Rust.

All algorithms reside in the separate crates and implemented using traits from digest crate. Additionally all crates do not require the standard library (i.e. no_std capable) and can be easily used for bare-metal or WebAssembly programming.

Supported algorithms

Note: For new applications, or where compatibility with other existing standards is not a primary concern, we strongly recommend to use either BLAKE2, SHA-2 or SHA-3.

Name Algorithm Crates.io Documentation Build Status Security
blake2 BLAKE2 crates.io Documentation build ๐Ÿ’š
gost94 GOST94 (GOST R 34.11-94) crates.io Documentation build ๐Ÿ’›
groestl Grรธstl (Groestl) crates.io Documentation build ๐Ÿ’š
k12 KangarooTwelve crates.io Documentation build ๐Ÿ’š
md2 MD2 crates.io Documentation build ๐Ÿ’”
md4 MD4 crates.io Documentation build ๐Ÿ’”
md-5 โ— MD5 crates.io Documentation build ๐Ÿ’”
ripemd160 RIPEMD-160 crates.io Documentation build ๐Ÿ’š
ripemd320 RIPEMD-320 crates.io Documentation build ๐Ÿ’š *
sha-1 โ— SHA-1 crates.io Documentation build ๐Ÿ’”
sha2 SHA-2 crates.io Documentation build ๐Ÿ’š
sha3 SHA-3 (Keccak) crates.io Documentation build ๐Ÿ’š
shabal SHABAL crates.io Documentation build ๐Ÿ’š
streebog Streebog (GOST R 34.11-2012) crates.io Documentation build ๐Ÿ’›
tiger Tiger crates.io Documentation build ๐Ÿ’š
whirlpool Whirlpool crates.io Documentation build ๐Ÿ’š

NOTE: the BLAKE3 crate implements the digest (and crypto-mac) traits used by the rest of the hashes in this repository, but is maintained by the BLAKE3 team.

* RIPEMD-320 provides only the same security as RIPEMD-160

Crate names

Whenever possible crates are published under the the same name as the crate folder. Owners of md5 and sha1 crates declined (1, 2) to participate in this project. This is why crates marked by โ— are published under md-5 and sha-1 names respectively.

Security Level Legend

The following describes the security level ratings associated with each hash function (i.e. algorithms, not the specific implementation):

Heart Description
๐Ÿ’š No known successful attacks
๐Ÿ’› Theoretical break: security lower than claimed
๐Ÿ’” Attack demonstrated in practice: avoid if at all possible

See the Security page on Wikipedia for more information.

Minimum Supported Rust Version (MSRV)

All crates in this repository support Rust 1.21 or higher. In future minimally supported version of Rust can be changed, but it will be done with a minor version bump.

Usage

Let us demonstrate how to use crates in this repository using BLAKE2b as an example.

First add blake2 crate to your Cargo.toml:

[dependencies]
blake2 = "0.9"

Note that crates in this repository have an enabled by default std feature. So if you plan to use the crate in no_std enviroments, don't forget to disable it:

[dependencies]
blake2 = { version="0.9", default-features = false }

blake2 and other crates re-export digest crate and Digest trait for convenience, so you don't have to add digest crate as an explicit dependency.

Now you can write the following code:

use blake2::{Blake2b, Digest};

let mut hasher = Blake2b::new();
let data = b"Hello world!";
hasher.update(data);
// `update` can be called repeatedly and is generic over `AsRef<[u8]>`
hasher.update("String data");
// Note that calling `finalize()` consumes hasher
let hash = hasher.finalize();
println!("Result: {:x}", hash);

In this example hash has type GenericArray<u8, U64>, which is a generic alternative to [u8; 64].

Alternatively you can use chained approach, which is equivalent to the previous example:

use blake2::{Blake2b, Digest};

let hash = Blake2b::new()
    .chain(b"Hello world!")
    .chain("String data")
    .finalize();
println!("Result: {:x}", hash);

If the whole message is available you also can use convinience digest method:

use blake2::{Blake2b, Digest};

let hash = Blake2b::digest(b"my message");
println!("Result: {:x}", hash);

Hashing Readable objects

If you want to hash data from Read trait (e.g. from file) you can rely on implementation of Write trait (requires an enabled-by-default std feature):

use blake2::{Blake2b, Digest};
use std::{fs, io};

let mut file = fs::File::open(&path)?;
let mut hasher = Blake2b::new();
let n = io::copy(&mut file, &mut hasher)?;
let hash = hasher.finalize();
println!("Path: {}", path);
println!("Bytes processed: {}", n);
println!("Hash value: {:x}", hash);

Hash-based Message Authentication Code (HMAC)

If you want to calculate Hash-based Message Authentication Code (HMAC), you can use generic implementation from hmac crate, which is a part of the RustCrypto/MACs repository.

Generic code

You can write generic code over Digest (or other traits from digest crate) trait which will work over different hash functions:

use digest::Digest;
use blake2::Blake2b;
use sha2::Sha256;

// Toy example, do not use it in practice!
// Instead use crates from: https://github.com/RustCrypto/password-hashing
fn hash_password<D: Digest>(password: &str, salt: &str, output: &mut [u8]) {
    let mut hasher = D::new();
    hasher.update(password.as_bytes());
    hasher.update(b"$");
    hasher.update(salt.as_bytes());
    output.copy_from_slice(&hasher.finalize())
}

let mut buf1 = [0u8; 64];
hash_password::<Blake2b>("my_password", "abcd", &mut buf1);

let mut buf2 = [0u8; 32];
hash_password::<Sha256>("my_password", "abcd", &mut buf2);

If you want to use hash functions with trait objects, use digest::DynDigest trait.

License

All crates licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Comments
  • There should be a standard way to recusively hash structs

    There should be a standard way to recusively hash structs

    std::hash::Hasher can be derived for structs and is a standard hashing interface in rust. The standard interface only allows 64bit outputs but there's nothing stopping extra outpust tailored to specific hashes. So for ergonomic purposes wouldn't it make sense to have an adapter to allow using the Hasher API?

    opened by pedrocr 60
  • switch the BLAKE2 implementation to blake2b_simd/blake2s_simd

    switch the BLAKE2 implementation to blake2b_simd/blake2s_simd

    [This is a very large change which I haven't discussed with anyone yet, so I'm not sure it's the right choice for the project. But hopefully this is a good starting point for discussion.]

    This is mostly a large performance improvement. The BLAKE2b bench_10000 case is improved by about 30%. This implementation also detects SIMD support at runtime, so the feature flags related to SIMD support are removed.

    The only performance loss is in the bench_10 cases, where the caller repeatedly feeds input slices less than one block long. The BLAKE2s bench_10 case is almost 20% slower. I'm not sure exactly why, but this implementation optimizes for avoiding copies on long runs of input, so it might just be that it's doing more math up front. This performance issue disappears if the inputs are a full block or longer.

    The only API consequence of this change is that the undocumented with_parameter_block constructor is no longer supported. Callers who need other parameters might prefer to use the blake2b_simd/blake2s_simd APIs directly, which expose them in a safer way through a Params object.

    opened by oconnor663 29
  • Shake output should be variable length

    Shake output should be variable length

    Sha3's shake mode should provides variable length output determined at runtime, but it's currently a user defined type level numeric. I'd think the OutputSize type of the Digest trait should be replaced by a Output type to fix this, but I have no looked into doing it.

    enhancement 
    opened by burdges 18
  • Expose round functions under separate trait

    Expose round functions under separate trait

    It would be handy to have some access to internals of e.g. SHA256/512, Blake2 family and Sha3 family to be able to manually update a state by "absorbing" a proper rate in every case. All hash families named above anyway follow a logic that some internal state is updated by processing potentially >1 round, but each round only a fixed amount of bytes is processed.

    To clarify - such trait can even be made "unsafe" as the caller would be responsible to:

    • somehow create an "empty" state (that would be great to have as a part of the trait if "raw" internal state is not pub. By "raw" I mean e.g. 512 bits of internal state of Sha256 without any extra information such as what length was processed before this point, etc)
    • call "round function" as many times as necessary, ideally using [u8; RATE] as an input, but in principle for e.g. Sha3 family [u64; RATE_IN_WORDS] may be ok. For whatever reason caller uses such a functionality, he would have to take care of all the paddings!
    • take a "state" and either provide some as_ref() for it to be able to take inner information to produce a final hash value manually (caller is 100% responsible) or (more convenient, but more work and a lot of diversities here) have some "into_hash(state)" function that would produce a hash from the state (functions with extendable output are out of the scope of this feature request, so it's kind of expected that final state will be used only once)

    It may be possible to use some feature flags, and e.g. just expose a raw "compress" function for sha256 and do it all by hands (not sure about other families if their internals are exposed to the necessary degree under feature flags), but consistent way for cases where such workflow is possible would be great (and will allow to avoid forking and butchering a crate to just add more pub)

    opened by shamatar 15
  • RIPEMD-320 implementation

    RIPEMD-320 implementation

    This partly addresses issue #13.

    This RIPEMD-320 implementation is based on the existing RIPEMD-160 implementation. It would be possible and relatively easy to refactor code to avoid so much duplication, but making this a separate crate breaks less code and makes it easy to add.

    RIPEMD-160 and RIPEMD-320 also share a similar relationship as RIPEMD-128 and RIPEMD-256 do. A quick diff between RIPEMD-160 and RIPEMD-320 implementations should be useful anyone writing RIPEMD-128/256.

    I don't know if that's OK with regard to the conventions in place, but in the tests I drew some samples from the RIPEMD-160 webpage[1] that describes expected hashes for some strings.

    Also, I have uploaded a 0.8.0-rc1 version to crates.io (under the name ripemd320). If/when you can merge this into master and publish, please ping me so I can give you access and optionally yank the rc1.

    [1] https://homes.esat.kuleuven.be/~bosselae/ripemd160.html

    opened by magnet 14
  • Obtain hash output as a String

    Obtain hash output as a String

    Currently, this results in a value of GenericArray<u8, _>:

    let input = String::from("hello");
    
    let mut hasher = Sha512::new();
    hasher.update(input);
    let hash_result = hasher.finalize();
    

    However, what I need is not a byte array but a String as output. I tried converting it with std::str::from_utf8(&hash_result[..]) but that errors out with Err(Utf8Error { valid_up_to: 0, error_len: Some(1) }) as an error value. This seems weird to me since the hash should be a hexadecimal string, but that's what I observed.

    How can I get a valid UTF-8 string from hash_result?

    question 
    opened by jjpe 13
  • Add `Blake2b-256`, `Blake2b-128`, etc. as wrappers over `VarBlake2b`.

    Add `Blake2b-256`, `Blake2b-128`, etc. as wrappers over `VarBlake2b`.

    It looks like some crates want a D: Digest<OutputSize = U64> + Default as an argument to what hash to use, so that VarBlake2b is not very useful on it's own. Eg. https://github.com/dalek-cryptography/ed25519-dalek/issues/59

    I could write my own wrapper, but if I need it, other people will, too.

    opened by dpc 11
  • sha1: switch name from sha-1 to sha1

    sha1: switch name from sha-1 to sha1

    @mitsuhiko has kindly transferred ownership of sha1 to us, so now we can publish our implementation under it instead of using sha-1.

    For user convenience, we will skip v0.7-v0.9 and will release sha1 v0.10.0, so the version will be synchronized with sha-1. I plan to continue releasing v0.10.x patch versions for sha-1 in parallel with sha1 and deprecate it only after sha1 v0.11 will be released.

    opened by newpavlov 10
  • feat(sha2): implement intrinsic based version for sha256

    feat(sha2): implement intrinsic based version for sha256

    This is not optimal yet when processing multiple blocks, but it does give a considerable speedup over the non intrinsic version already

    Measurements were taken on an AMD Ryzen 7 3700X 8-Core.

    Baseline

    test bench1_10    ... bench:          36 ns/iter (+/- 0) = 277 MB/s
    test bench2_100   ... bench:         314 ns/iter (+/- 4) = 318 MB/s
    test bench3_1000  ... bench:       3,096 ns/iter (+/- 16) = 322 MB/s
    test bench4_10000 ... bench:      30,935 ns/iter (+/- 297) = 323 MB/s
    

    With asm-hashes

    test bench1_10    ... bench:          33 ns/iter (+/- 0) = 303 MB/s
    test bench2_100   ... bench:         291 ns/iter (+/- 1) = 343 MB/s
    test bench3_1000  ... bench:       2,863 ns/iter (+/- 14) = 349 MB/s
    test bench4_10000 ... bench:      28,597 ns/iter (+/- 191) = 349 MB/s
    

    With Intrinsics

    test bench1_10    ... bench:           8 ns/iter (+/- 0) = 1250 MB/s
    test bench2_100   ... bench:          54 ns/iter (+/- 0) = 1851 MB/s
    test bench3_1000  ... bench:         511 ns/iter (+/- 8) = 1956 MB/s
    test bench4_10000 ... bench:       5,079 ns/iter (+/- 29) = 1968 MB/s
    
    opened by dignifiedquire 10
  • Digest trait cannot be made into an object

    Digest trait cannot be made into an object

    Hey, I'm very new to Rust so I apologize if this turns out to be a language misunderstanding rather than a package issue...

    I'm trying to dynamically create instances of algorithm structs that implement the Digest trait, hold on to them using a Box<Digest>, and interact with them via the Digest interface.

    In other words, something like this:

    let hasher = match "one of the algorithms" {
        "sha256" => Box::new(Sha256::new()) as Box<Digest>,
        "sha512" => Box::new(Sha512::new()) as Box<Digest>
        // ... etc
    };
    

    I sort of get why that doesn't work (missing associated types), but even if I fill those in like:

    "sha256" => Box::new(Sha256::new()) as Box<Digest<<OutputSize=U32, BlockSize=U64>>>,
    

    I'm still left with an error: the trait 'digest::Digest' cannot be made into an object.

    After poking around it seemed like this might be because of the way Digest was implemented? Looking at the docs it doesn't seem to have any static methods, but maybe it does or there's something else I'm missing?

    Again, sorry to bother you with this!

    enhancement 
    opened by WestleyArgentum 10
  • Next iteration of Digest traits

    Next iteration of Digest traits

    Sacundim in his feedback on the reddit proposed to use instead of VariableOutput the following traits:

    • ExtendableOutput for functions like SHAKE from SHA-3, which allow to "read" indefinitely from the result
    • VariableOutput for functions like Groestl, which have some limits on the output size and may require output size to be known at state initalization

    Also @burdges proposed to move out BlockSize from the Input trait to a separate one.

    opened by newpavlov 10
  • ripemd: which OIDs to use?

    ripemd: which OIDs to use?

    Unfortunately, ripemd has several OIDs. For example, for Ripemd160 has ISO (1.0.10118.3.0.49) and Teletrust (1.3.36.3.2.1). Go's std uses the former (see https://github.com/golang/go/issues/35495), while OpenSSL the latter.

    I am inclined to use the latter in our codebase, because it looks more widespread and the ISO range contains OIDs for Streebog (see http://oid-info.com/get/1.0.10118.3.0), even though AFAIK in practice people usually use the TC26 OIDs for it.

    opened by newpavlov 0
  • blake2 simd benches produce unexpected results

    blake2 simd benches produce unexpected results

    I ran blake2 tests with and without simd feature enabled and found that behavior is strange and doesn't make a lot of sense.

    Default (no simd):

    $ cargo +nightly bench
    ...
    running 8 tests
    test blake2b512_10    ... bench:           8 ns/iter (+/- 0) = 1250 MB/s
    test blake2b512_100   ... bench:          74 ns/iter (+/- 4) = 1351 MB/s
    test blake2b512_1000  ... bench:         708 ns/iter (+/- 85) = 1412 MB/s
    test blake2b512_10000 ... bench:       7,005 ns/iter (+/- 531) = 1427 MB/s
    test blake2s256_10    ... bench:          13 ns/iter (+/- 0) = 769 MB/s
    test blake2s256_100   ... bench:         121 ns/iter (+/- 7) = 826 MB/s
    test blake2s256_1000  ... bench:       1,155 ns/iter (+/- 62) = 865 MB/s
    test blake2s256_10000 ... bench:      11,791 ns/iter (+/- 1,005) = 848 MB/s
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured; 0 filtered out; finished in 28.22s
    

    Simd:

    $ cargo +nightly bench --features simd
    ...
    running 8 tests
    test blake2b512_10    ... bench:          11 ns/iter (+/- 0) = 909 MB/s
    test blake2b512_100   ... bench:         102 ns/iter (+/- 0) = 980 MB/s
    test blake2b512_1000  ... bench:       1,010 ns/iter (+/- 11) = 990 MB/s
    test blake2b512_10000 ... bench:      10,076 ns/iter (+/- 68) = 992 MB/s
    test blake2s256_10    ... bench:          16 ns/iter (+/- 0) = 625 MB/s
    test blake2s256_100   ... bench:         152 ns/iter (+/- 1) = 657 MB/s
    test blake2s256_1000  ... bench:       1,483 ns/iter (+/- 12) = 674 MB/s
    test blake2s256_10000 ... bench:      14,750 ns/iter (+/- 344) = 677 MB/s
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 8 measured; 0 filtered out; finished in 2.43s
    

    I expected simd version to produce better results and judging by the total execution time it is the case, but throughput reported by the benchmark says the opposite.

    I suspect something is wrong with benchmarking code.

    Using latest master (cc523733e5ba84b5a366825a7d1150bbbfea368b right now) and rustc 1.65.0-nightly (20ffea693 2022-08-11).

    opened by nazar-pc 1
  • Blake2 missing functionality while migrating from `blake2-rfc`

    Blake2 missing functionality while migrating from `blake2-rfc`

    Not sure if this is a feature request or a question...

    I was previously using the blake2-rfc crate and now I want to migrate to the blake2 crate. However previously I was using the Blake2b::with_key constructor (as per https://docs.rs/blake2-rfc/0.2.18/blake2_rfc/blake2b/struct.Blake2b.html#method.with_key) and I can't seem to find the proper equivalent in case of the blake2 crate.

    There seems to exist Blake2bVarCore::new_with_params (as per https://docs.rs/blake2/0.10.2/blake2/struct.Blake2bVarCore.html#method.new_with_params), however I can't seem to convert that into a Blake2bVar (which I need to get variable hash output).

    Based on the current blake2b implementation, it seems I should be able to just replace the core member of the Blake2bVar with the Blake2bVarCore instance, which indeed works if I "hack my way" by using pointers. However there is no "official" (as per the public API) way of doing this.

    A simple From implementation, or even an unsafe constructor that takes a Blake2bVarCore and yields a Blake2bVar would seem to suffice.

    opened by cipriancraciun 2
  • Refactor k12

    Refactor k12

    The k12 crate had its own keccak-p permutation implementation. With https://github.com/RustCrypto/sponges/pull/7 a generic keccak-p implementation would be available, which could be used within the k12 crate.

    Depends on

    • [ ] https://github.com/RustCrypto/sponges/pull/7
    • [ ] and a new release of the keccak crate ;)
    opened by aewag 7
  • sha2: performance issue on RISC-V

    sha2: performance issue on RISC-V

    I'm compiling the crate on a riscv32im-unknown-none-elf. On a release build with opt-level = 3 and lto = fat, the sha2::sha256::soft::compress function looks like this:

    riscv32-none-elf-objdump -Cd
    8000219c <sha2::sha256::soft::compress>:
    8000219c:	e2010113          	addi	sp,sp,-480
    800021a0:	1c112e23          	sw	ra,476(sp)
    800021a4:	1c812c23          	sw	s0,472(sp)
    800021a8:	1c912a23          	sw	s1,468(sp)
    800021ac:	1d212823          	sw	s2,464(sp)
    800021b0:	1d312623          	sw	s3,460(sp)
    800021b4:	1d412423          	sw	s4,456(sp)
    800021b8:	1d512223          	sw	s5,452(sp)
    800021bc:	1d612023          	sw	s6,448(sp)
    800021c0:	1b712e23          	sw	s7,444(sp)
    800021c4:	1b812c23          	sw	s8,440(sp)
    800021c8:	1b912a23          	sw	s9,436(sp)
    800021cc:	1ba12823          	sw	s10,432(sp)
    800021d0:	1bb12623          	sw	s11,428(sp)
    800021d4:	00060993          	mv	s3,a2
    800021d8:	00058413          	mv	s0,a1
    800021dc:	00050a13          	mv	s4,a0
    800021e0:	16c10513          	addi	a0,sp,364
    800021e4:	04000613          	li	a2,64
    800021e8:	00000593          	li	a1,0
    800021ec:	00004097          	auipc	ra,0x4
    800021f0:	07c080e7          	jalr	124(ra) # 80006268 <memset>
    800021f4:	000a2483          	lw	s1,0(s4) # 110000 <_hart_stack_size+0x10f800>
    800021f8:	004a2903          	lw	s2,4(s4)
    800021fc:	008a2e83          	lw	t4,8(s4)
    80002200:	00ca2383          	lw	t2,12(s4)
    80002204:	010a2a83          	lw	s5,16(s4)
    80002208:	014a2803          	lw	a6,20(s4)
    8000220c:	018a2b03          	lw	s6,24(s4)
    80002210:	01412223          	sw	s4,4(sp)
    80002214:	01ca2a03          	lw	s4,28(s4)
    80002218:	00099463          	bnez	s3,80002220 <sha2::sha256::soft::compress+0x84>
    8000221c:	7950306f          	j	800061b0 <sha2::sha256::soft::compress+0x4014>
    80002220:	00699513          	slli	a0,s3,0x6
    80002224:	00a40533          	add	a0,s0,a0
    80002228:	10a12623          	sw	a0,268(sp)
    8000222c:	00010537          	lui	a0,0x10
    80002230:	f0050513          	addi	a0,a0,-256 # ff00 <_hart_stack_size+0xf700>
    80002234:	10a12423          	sw	a0,264(sp)
    80002238:	428a3537          	lui	a0,0x428a3
    8000223c:	f9850513          	addi	a0,a0,-104 # 428a2f98 <_hart_stack_size+0x428a2798>
    80002240:	10a12223          	sw	a0,260(sp)
    80002244:	71374537          	lui	a0,0x71374
    80002248:	49150513          	addi	a0,a0,1169 # 71374491 <_hart_stack_size+0x71373c91>
    8000224c:	10a12023          	sw	a0,256(sp)
    80002250:	b5c10537          	lui	a0,0xb5c10
    80002254:	bcf50513          	addi	a0,a0,-1073 # b5c0fbcf <_sstack+0x35bafbcf>
    80002258:	0ea12e23          	sw	a0,252(sp)
    8000225c:	e9b5e537          	lui	a0,0xe9b5e
    80002260:	ba550513          	addi	a0,a0,-1115 # e9b5dba5 <_sstack+0x69afdba5>
    80002264:	0ea12c23          	sw	a0,248(sp)
    80002268:	3956c537          	lui	a0,0x3956c
    8000226c:	25b50513          	addi	a0,a0,603 # 3956c25b <_hart_stack_size+0x3956ba5b>
    80002270:	0ea12a23          	sw	a0,244(sp)
    80002274:	59f11537          	lui	a0,0x59f11
    80002278:	1f150513          	addi	a0,a0,497 # 59f111f1 <_hart_stack_size+0x59f109f1>
    8000227c:	0ea12823          	sw	a0,240(sp)
    80002280:	923f8537          	lui	a0,0x923f8
    80002284:	2a450513          	addi	a0,a0,676 # 923f82a4 <_sstack+0x123982a4>
    80002288:	0ea12623          	sw	a0,236(sp)
    8000228c:	ab1c6537          	lui	a0,0xab1c6
    80002290:	ed550513          	addi	a0,a0,-299 # ab1c5ed5 <_sstack+0x2b165ed5>
    80002294:	0ea12423          	sw	a0,232(sp)
    80002298:	d807b537          	lui	a0,0xd807b
    8000229c:	a9850513          	addi	a0,a0,-1384 # d807aa98 <_sstack+0x5801aa98>
    800022a0:	0ea12223          	sw	a0,228(sp)
    800022a4:	12836537          	lui	a0,0x12836
    800022a8:	b0150513          	addi	a0,a0,-1279 # 12835b01 <_hart_stack_size+0x12835301>
    800022ac:	0ea12023          	sw	a0,224(sp)
    800022b0:	24318537          	lui	a0,0x24318
    800022b4:	5be50513          	addi	a0,a0,1470 # 243185be <_hart_stack_size+0x24317dbe>
    800022b8:	0ca12e23          	sw	a0,220(sp)
    800022bc:	550c8537          	lui	a0,0x550c8
    800022c0:	dc350513          	addi	a0,a0,-573 # 550c7dc3 <_hart_stack_size+0x550c75c3>
    800022c4:	0ca12c23          	sw	a0,216(sp)
    800022c8:	72be6537          	lui	a0,0x72be6
    800022cc:	d7450513          	addi	a0,a0,-652 # 72be5d74 <_hart_stack_size+0x72be5574>
    800022d0:	0ca12a23          	sw	a0,212(sp)
    800022d4:	80deb537          	lui	a0,0x80deb
    800022d8:	1fe50513          	addi	a0,a0,510 # 80deb1fe <_sstack+0xd8b1fe>
    800022dc:	0ca12823          	sw	a0,208(sp)
    800022e0:	9bdc0537          	lui	a0,0x9bdc0
    800022e4:	6a750513          	addi	a0,a0,1703 # 9bdc06a7 <_sstack+0x1bd606a7>
    800022e8:	0ca12623          	sw	a0,204(sp)
    800022ec:	c19bf537          	lui	a0,0xc19bf
    800022f0:	17450513          	addi	a0,a0,372 # c19bf174 <_sstack+0x4195f174>
    800022f4:	0ca12423          	sw	a0,200(sp)
    800022f8:	e49b7537          	lui	a0,0xe49b7
    800022fc:	9c150513          	addi	a0,a0,-1599 # e49b69c1 <_sstack+0x649569c1>
    80002300:	0ca12223          	sw	a0,196(sp)
    80002304:	efbe4537          	lui	a0,0xefbe4
    80002308:	78650513          	addi	a0,a0,1926 # efbe4786 <_sstack+0x6fb84786>
    8000230c:	0ca12023          	sw	a0,192(sp)
    80002310:	0fc1a537          	lui	a0,0xfc1a
    80002314:	dc650513          	addi	a0,a0,-570 # fc19dc6 <_hart_stack_size+0xfc195c6>
    80002318:	0aa12e23          	sw	a0,188(sp)
    8000231c:	240ca537          	lui	a0,0x240ca
    80002320:	1cc50513          	addi	a0,a0,460 # 240ca1cc <_hart_stack_size+0x240c99cc>
    80002324:	0aa12c23          	sw	a0,184(sp)
    80002328:	2de93537          	lui	a0,0x2de93
    8000232c:	c6f50513          	addi	a0,a0,-913 # 2de92c6f <_hart_stack_size+0x2de9246f>
    80002330:	0aa12a23          	sw	a0,180(sp)
    80002334:	4a748537          	lui	a0,0x4a748
    80002338:	4aa50513          	addi	a0,a0,1194 # 4a7484aa <_hart_stack_size+0x4a747caa>
    8000233c:	0aa12823          	sw	a0,176(sp)
    80002340:	5cb0b537          	lui	a0,0x5cb0b
    80002344:	9dc50513          	addi	a0,a0,-1572 # 5cb0a9dc <_hart_stack_size+0x5cb0a1dc>
    80002348:	0aa12623          	sw	a0,172(sp)
    8000234c:	76f99537          	lui	a0,0x76f99
    80002350:	8da50513          	addi	a0,a0,-1830 # 76f988da <_hart_stack_size+0x76f980da>
    80002354:	0aa12423          	sw	a0,168(sp)
    80002358:	983e5537          	lui	a0,0x983e5
    8000235c:	15250513          	addi	a0,a0,338 # 983e5152 <_sstack+0x18385152>
    80002360:	0aa12223          	sw	a0,164(sp)
    80002364:	a831c537          	lui	a0,0xa831c
    80002368:	66d50513          	addi	a0,a0,1645 # a831c66d <_sstack+0x282bc66d>
    8000236c:	0aa12023          	sw	a0,160(sp)
    80002370:	b0032537          	lui	a0,0xb0032
    80002374:	7c850513          	addi	a0,a0,1992 # b00327c8 <_sstack+0x2ffd27c8>
    80002378:	08a12e23          	sw	a0,156(sp)
    8000237c:	bf598537          	lui	a0,0xbf598
    80002380:	fc750513          	addi	a0,a0,-57 # bf597fc7 <_sstack+0x3f537fc7>
    80002384:	08a12c23          	sw	a0,152(sp)
    80002388:	c6e01537          	lui	a0,0xc6e01
    8000238c:	bf350513          	addi	a0,a0,-1037 # c6e00bf3 <_sstack+0x46da0bf3>
    80002390:	08a12a23          	sw	a0,148(sp)
    80002394:	d5a79537          	lui	a0,0xd5a79
    80002398:	14750513          	addi	a0,a0,327 # d5a79147 <_sstack+0x55a19147>
    8000239c:	08a12823          	sw	a0,144(sp)
    800023a0:	06ca6537          	lui	a0,0x6ca6
    800023a4:	35150513          	addi	a0,a0,849 # 6ca6351 <_hart_stack_size+0x6ca5b51>
    800023a8:	08a12623          	sw	a0,140(sp)
    800023ac:	14293537          	lui	a0,0x14293
    800023b0:	96750513          	addi	a0,a0,-1689 # 14292967 <_hart_stack_size+0x14292167>
    800023b4:	08a12423          	sw	a0,136(sp)
    800023b8:	27b71537          	lui	a0,0x27b71
    800023bc:	a8550513          	addi	a0,a0,-1403 # 27b70a85 <_hart_stack_size+0x27b70285>
    800023c0:	08a12223          	sw	a0,132(sp)
    800023c4:	2e1b2537          	lui	a0,0x2e1b2
    800023c8:	13850513          	addi	a0,a0,312 # 2e1b2138 <_hart_stack_size+0x2e1b1938>
    800023cc:	08a12023          	sw	a0,128(sp)
    800023d0:	4d2c7537          	lui	a0,0x4d2c7
    800023d4:	dfc50513          	addi	a0,a0,-516 # 4d2c6dfc <_hart_stack_size+0x4d2c65fc>
    800023d8:	06a12e23          	sw	a0,124(sp)
    800023dc:	53381537          	lui	a0,0x53381
    800023e0:	d1350513          	addi	a0,a0,-749 # 53380d13 <_hart_stack_size+0x53380513>
    800023e4:	06a12c23          	sw	a0,120(sp)
    800023e8:	650a7537          	lui	a0,0x650a7
    800023ec:	35450513          	addi	a0,a0,852 # 650a7354 <_hart_stack_size+0x650a6b54>
    800023f0:	06a12a23          	sw	a0,116(sp)
    800023f4:	766a1537          	lui	a0,0x766a1
    800023f8:	abb50513          	addi	a0,a0,-1349 # 766a0abb <_hart_stack_size+0x766a02bb>
    800023fc:	06a12823          	sw	a0,112(sp)
    80002400:	81c2d537          	lui	a0,0x81c2d
    80002404:	92e50513          	addi	a0,a0,-1746 # 81c2c92e <_sstack+0x1bcc92e>
    80002408:	06a12623          	sw	a0,108(sp)
    8000240c:	92723537          	lui	a0,0x92723
    80002410:	c8550513          	addi	a0,a0,-891 # 92722c85 <_sstack+0x126c2c85>
    80002414:	06a12423          	sw	a0,104(sp)
    80002418:	a2bff537          	lui	a0,0xa2bff
    8000241c:	8a150513          	addi	a0,a0,-1887 # a2bfe8a1 <_sstack+0x22b9e8a1>
    80002420:	06a12223          	sw	a0,100(sp)
    80002424:	a81a6537          	lui	a0,0xa81a6
    80002428:	64b50513          	addi	a0,a0,1611 # a81a664b <_sstack+0x2814664b>
    8000242c:	06a12023          	sw	a0,96(sp)
    80002430:	c24b9537          	lui	a0,0xc24b9
    80002434:	b7050513          	addi	a0,a0,-1168 # c24b8b70 <_sstack+0x42458b70>
    80002438:	04a12e23          	sw	a0,92(sp)
    8000243c:	c76c5537          	lui	a0,0xc76c5
    80002440:	1a350513          	addi	a0,a0,419 # c76c51a3 <_sstack+0x476651a3>
    80002444:	04a12c23          	sw	a0,88(sp)
    80002448:	d192f537          	lui	a0,0xd192f
    8000244c:	81950513          	addi	a0,a0,-2023 # d192e819 <_sstack+0x518ce819>
    80002450:	04a12a23          	sw	a0,84(sp)
    80002454:	d6990537          	lui	a0,0xd6990
    80002458:	62450513          	addi	a0,a0,1572 # d6990624 <_sstack+0x56930624>
    8000245c:	04a12823          	sw	a0,80(sp)
    80002460:	f40e3537          	lui	a0,0xf40e3
    80002464:	58550513          	addi	a0,a0,1413 # f40e3585 <_sstack+0x74083585>
    80002468:	04a12623          	sw	a0,76(sp)
    8000246c:	106aa537          	lui	a0,0x106aa
    80002470:	07050513          	addi	a0,a0,112 # 106aa070 <_hart_stack_size+0x106a9870>
    80002474:	04a12423          	sw	a0,72(sp)
    80002478:	19a4c537          	lui	a0,0x19a4c
    8000247c:	11650513          	addi	a0,a0,278 # 19a4c116 <_hart_stack_size+0x19a4b916>
    80002480:	04a12223          	sw	a0,68(sp)
    80002484:	1e377537          	lui	a0,0x1e377
    80002488:	c0850513          	addi	a0,a0,-1016 # 1e376c08 <_hart_stack_size+0x1e376408>
    8000248c:	04a12023          	sw	a0,64(sp)
    80002490:	27487537          	lui	a0,0x27487
    80002494:	74c50513          	addi	a0,a0,1868 # 2748774c <_hart_stack_size+0x27486f4c>
    80002498:	02a12e23          	sw	a0,60(sp)
    8000249c:	34b0c537          	lui	a0,0x34b0c
    800024a0:	cb550513          	addi	a0,a0,-843 # 34b0bcb5 <_hart_stack_size+0x34b0b4b5>
    800024a4:	02a12c23          	sw	a0,56(sp)
    800024a8:	391c1537          	lui	a0,0x391c1
    800024ac:	cb350513          	addi	a0,a0,-845 # 391c0cb3 <_hart_stack_size+0x391c04b3>
    800024b0:	02a12a23          	sw	a0,52(sp)
    800024b4:	4ed8b537          	lui	a0,0x4ed8b
    800024b8:	a4a50513          	addi	a0,a0,-1462 # 4ed8aa4a <_hart_stack_size+0x4ed8a24a>
    800024bc:	02a12823          	sw	a0,48(sp)
    800024c0:	5b9cd537          	lui	a0,0x5b9cd
    800024c4:	a4f50513          	addi	a0,a0,-1457 # 5b9cca4f <_hart_stack_size+0x5b9cc24f>
    800024c8:	02a12623          	sw	a0,44(sp)
    800024cc:	682e7537          	lui	a0,0x682e7
    800024d0:	ff350513          	addi	a0,a0,-13 # 682e6ff3 <_hart_stack_size+0x682e67f3>
    800024d4:	02a12423          	sw	a0,40(sp)
    800024d8:	748f8537          	lui	a0,0x748f8
    800024dc:	2ee50513          	addi	a0,a0,750 # 748f82ee <_hart_stack_size+0x748f7aee>
    800024e0:	02a12223          	sw	a0,36(sp)
    800024e4:	78a56537          	lui	a0,0x78a56
    800024e8:	36f50513          	addi	a0,a0,879 # 78a5636f <_hart_stack_size+0x78a55b6f>
    800024ec:	02a12023          	sw	a0,32(sp)
    800024f0:	84c88537          	lui	a0,0x84c88
    800024f4:	81450513          	addi	a0,a0,-2028 # 84c87814 <_sstack+0x4c27814>
    800024f8:	00a12e23          	sw	a0,28(sp)
    800024fc:	8cc70537          	lui	a0,0x8cc70
    80002500:	20850513          	addi	a0,a0,520 # 8cc70208 <_sstack+0xcc10208>
    80002504:	00a12c23          	sw	a0,24(sp)
    80002508:	90bf0537          	lui	a0,0x90bf0
    8000250c:	ffa50513          	addi	a0,a0,-6 # 90befffa <_sstack+0x10b8fffa>
    80002510:	00a12a23          	sw	a0,20(sp)
    80002514:	a4507537          	lui	a0,0xa4507
    80002518:	ceb50513          	addi	a0,a0,-789 # a4506ceb <_sstack+0x244a6ceb>
    8000251c:	00a12823          	sw	a0,16(sp)
    80002520:	bef9a537          	lui	a0,0xbef9a
    80002524:	3f750513          	addi	a0,a0,1015 # bef9a3f7 <_sstack+0x3ef3a3f7>
    80002528:	00a12623          	sw	a0,12(sp)
    8000252c:	c6718537          	lui	a0,0xc6718
    80002530:	8f250513          	addi	a0,a0,-1806 # c67178f2 <_sstack+0x466b78f2>
    80002534:	00a12423          	sw	a0,8(sp)
    80002538:	12812623          	sw	s0,300(sp)
    8000253c:	13212823          	sw	s2,304(sp)
    80002540:	13d12a23          	sw	t4,308(sp)
    80002544:	12712c23          	sw	t2,312(sp)
    80002548:	13012e23          	sw	a6,316(sp)
    8000254c:	15612c23          	sw	s6,344(sp)
    80002550:	15412023          	sw	s4,320(sp)
    80002554:	00144503          	lbu	a0,1(s0)
    80002558:	00044583          	lbu	a1,0(s0)
    8000255c:	00344603          	lbu	a2,3(s0)
    80002560:	00244683          	lbu	a3,2(s0)
    80002564:	00851513          	slli	a0,a0,0x8
    80002568:	00b56533          	or	a0,a0,a1
    8000256c:	00861593          	slli	a1,a2,0x8
    80002570:	00d5e5b3          	or	a1,a1,a3
    80002574:	01059593          	slli	a1,a1,0x10
    80002578:	00a5e533          	or	a0,a1,a0
    8000257c:	00855593          	srli	a1,a0,0x8
    80002580:	10812703          	lw	a4,264(sp)
    80002584:	00e5f5b3          	and	a1,a1,a4
    80002588:	01855613          	srli	a2,a0,0x18
    8000258c:	00c5e5b3          	or	a1,a1,a2
    80002590:	00851613          	slli	a2,a0,0x8
    80002594:	00ff07b7          	lui	a5,0xff0
    80002598:	00f67633          	and	a2,a2,a5
    8000259c:	01851513          	slli	a0,a0,0x18
    800025a0:	00c56533          	or	a0,a0,a2
    800025a4:	00b56533          	or	a0,a0,a1
    800025a8:	16a12623          	sw	a0,364(sp)
    800025ac:	00544503          	lbu	a0,5(s0)
    800025b0:	00444583          	lbu	a1,4(s0)
    800025b4:	00744603          	lbu	a2,7(s0)
    800025b8:	00644683          	lbu	a3,6(s0)
    800025bc:	00851513          	slli	a0,a0,0x8
    800025c0:	00b56533          	or	a0,a0,a1
    800025c4:	00861593          	slli	a1,a2,0x8
    800025c8:	00d5e5b3          	or	a1,a1,a3
    800025cc:	01059593          	slli	a1,a1,0x10
    800025d0:	00a5e533          	or	a0,a1,a0
    800025d4:	00855593          	srli	a1,a0,0x8
    800025d8:	00e5f5b3          	and	a1,a1,a4
    800025dc:	01855613          	srli	a2,a0,0x18
    800025e0:	00c5e5b3          	or	a1,a1,a2
    800025e4:	00851613          	slli	a2,a0,0x8
    800025e8:	00f67633          	and	a2,a2,a5
    800025ec:	01851513          	slli	a0,a0,0x18
    800025f0:	00c56533          	or	a0,a0,a2
    800025f4:	00b56533          	or	a0,a0,a1
    800025f8:	16a12823          	sw	a0,368(sp)
    800025fc:	00944503          	lbu	a0,9(s0)
    80002600:	00844583          	lbu	a1,8(s0)
    80002604:	00b44603          	lbu	a2,11(s0)
    80002608:	00a44683          	lbu	a3,10(s0)
    8000260c:	00851513          	slli	a0,a0,0x8
    80002610:	00b56533          	or	a0,a0,a1
    80002614:	00861593          	slli	a1,a2,0x8
    80002618:	00d5e5b3          	or	a1,a1,a3
    8000261c:	01059593          	slli	a1,a1,0x10
    80002620:	00a5e533          	or	a0,a1,a0
    80002624:	00855593          	srli	a1,a0,0x8
    80002628:	00e5f5b3          	and	a1,a1,a4
    8000262c:	01855613          	srli	a2,a0,0x18
    80002630:	00c5e5b3          	or	a1,a1,a2
    80002634:	00851613          	slli	a2,a0,0x8
    80002638:	00f67633          	and	a2,a2,a5
    8000263c:	01851513          	slli	a0,a0,0x18
    80002640:	00c56533          	or	a0,a0,a2
    80002644:	00b56533          	or	a0,a0,a1
    80002648:	16a12a23          	sw	a0,372(sp)
    8000264c:	00d44503          	lbu	a0,13(s0)
    80002650:	00c44583          	lbu	a1,12(s0)
    80002654:	00f44603          	lbu	a2,15(s0)
    80002658:	00e44683          	lbu	a3,14(s0)
    8000265c:	00851513          	slli	a0,a0,0x8
    80002660:	00b56533          	or	a0,a0,a1
    80002664:	00861593          	slli	a1,a2,0x8
    80002668:	00d5e5b3          	or	a1,a1,a3
    8000266c:	01059593          	slli	a1,a1,0x10
    80002670:	00a5e533          	or	a0,a1,a0
    80002674:	00855593          	srli	a1,a0,0x8
    80002678:	00e5f5b3          	and	a1,a1,a4
    8000267c:	01855613          	srli	a2,a0,0x18
    80002680:	00c5e5b3          	or	a1,a1,a2
    80002684:	00851613          	slli	a2,a0,0x8
    80002688:	00f67633          	and	a2,a2,a5
    8000268c:	01851513          	slli	a0,a0,0x18
    80002690:	00c56533          	or	a0,a0,a2
    80002694:	00b56533          	or	a0,a0,a1
    80002698:	16a12c23          	sw	a0,376(sp)
    8000269c:	01144503          	lbu	a0,17(s0)
    800026a0:	01044583          	lbu	a1,16(s0)
    800026a4:	01344603          	lbu	a2,19(s0)
    800026a8:	01244683          	lbu	a3,18(s0)
    800026ac:	00851513          	slli	a0,a0,0x8
    800026b0:	00b56533          	or	a0,a0,a1
    800026b4:	00861593          	slli	a1,a2,0x8
    800026b8:	00d5e5b3          	or	a1,a1,a3
    800026bc:	01059593          	slli	a1,a1,0x10
    800026c0:	00a5e533          	or	a0,a1,a0
    800026c4:	00855593          	srli	a1,a0,0x8
    800026c8:	00e5f5b3          	and	a1,a1,a4
    800026cc:	01855613          	srli	a2,a0,0x18
    800026d0:	00c5e5b3          	or	a1,a1,a2
    800026d4:	00851613          	slli	a2,a0,0x8
    800026d8:	00f67633          	and	a2,a2,a5
    800026dc:	01851513          	slli	a0,a0,0x18
    800026e0:	00c56533          	or	a0,a0,a2
    800026e4:	00b56533          	or	a0,a0,a1
    800026e8:	16a12e23          	sw	a0,380(sp)
    800026ec:	01544503          	lbu	a0,21(s0)
    800026f0:	01444583          	lbu	a1,20(s0)
    800026f4:	01744603          	lbu	a2,23(s0)
    800026f8:	01644683          	lbu	a3,22(s0)
    800026fc:	00851513          	slli	a0,a0,0x8
    80002700:	00b56533          	or	a0,a0,a1
    80002704:	00861593          	slli	a1,a2,0x8
    80002708:	00d5e5b3          	or	a1,a1,a3
    8000270c:	01059593          	slli	a1,a1,0x10
    80002710:	00a5e533          	or	a0,a1,a0
    80002714:	00855593          	srli	a1,a0,0x8
    80002718:	00e5f5b3          	and	a1,a1,a4
    8000271c:	01855613          	srli	a2,a0,0x18
    80002720:	00c5e5b3          	or	a1,a1,a2
    80002724:	00851613          	slli	a2,a0,0x8
    80002728:	00f67633          	and	a2,a2,a5
    8000272c:	01851513          	slli	a0,a0,0x18
    80002730:	00c56533          	or	a0,a0,a2
    80002734:	00b56533          	or	a0,a0,a1
    80002738:	18a12023          	sw	a0,384(sp)
    8000273c:	01944503          	lbu	a0,25(s0)
    80002740:	01844583          	lbu	a1,24(s0)
    80002744:	01b44603          	lbu	a2,27(s0)
    80002748:	01a44683          	lbu	a3,26(s0)
    8000274c:	00851513          	slli	a0,a0,0x8
    80002750:	00b56533          	or	a0,a0,a1
    80002754:	00861593          	slli	a1,a2,0x8
    80002758:	00d5e5b3          	or	a1,a1,a3
    8000275c:	01059593          	slli	a1,a1,0x10
    80002760:	00a5e533          	or	a0,a1,a0
    80002764:	00855593          	srli	a1,a0,0x8
    80002768:	00e5f5b3          	and	a1,a1,a4
    8000276c:	01855613          	srli	a2,a0,0x18
    80002770:	00c5e5b3          	or	a1,a1,a2
    80002774:	00851613          	slli	a2,a0,0x8
    80002778:	00f67633          	and	a2,a2,a5
    8000277c:	01851513          	slli	a0,a0,0x18
    80002780:	00c56533          	or	a0,a0,a2
    80002784:	00b56533          	or	a0,a0,a1
    80002788:	18a12223          	sw	a0,388(sp)
    8000278c:	00050313          	mv	t1,a0
    80002790:	16a12023          	sw	a0,352(sp)
    80002794:	01d44503          	lbu	a0,29(s0)
    80002798:	01c44583          	lbu	a1,28(s0)
    8000279c:	01f44603          	lbu	a2,31(s0)
    800027a0:	01e44683          	lbu	a3,30(s0)
    800027a4:	00851513          	slli	a0,a0,0x8
    800027a8:	00b56533          	or	a0,a0,a1
    800027ac:	00861593          	slli	a1,a2,0x8
    800027b0:	00d5e5b3          	or	a1,a1,a3
    800027b4:	01059593          	slli	a1,a1,0x10
    800027b8:	00a5e533          	or	a0,a1,a0
    800027bc:	00855593          	srli	a1,a0,0x8
    800027c0:	00e5f5b3          	and	a1,a1,a4
    800027c4:	01855613          	srli	a2,a0,0x18
    800027c8:	00c5e5b3          	or	a1,a1,a2
    800027cc:	00851613          	slli	a2,a0,0x8
    800027d0:	00f67633          	and	a2,a2,a5
    800027d4:	01851513          	slli	a0,a0,0x18
    800027d8:	00c56533          	or	a0,a0,a2
    800027dc:	00b56533          	or	a0,a0,a1
    800027e0:	18a12423          	sw	a0,392(sp)
    800027e4:	00050993          	mv	s3,a0
    800027e8:	14a12823          	sw	a0,336(sp)
    800027ec:	02144503          	lbu	a0,33(s0)
    800027f0:	02044583          	lbu	a1,32(s0)
    800027f4:	02344603          	lbu	a2,35(s0)
    800027f8:	02244683          	lbu	a3,34(s0)
    800027fc:	00851513          	slli	a0,a0,0x8
    80002800:	00b56533          	or	a0,a0,a1
    80002804:	00861593          	slli	a1,a2,0x8
    80002808:	00d5e5b3          	or	a1,a1,a3
    8000280c:	01059593          	slli	a1,a1,0x10
    80002810:	00a5e533          	or	a0,a1,a0
    80002814:	00855593          	srli	a1,a0,0x8
    80002818:	00e5f5b3          	and	a1,a1,a4
    8000281c:	01855613          	srli	a2,a0,0x18
    80002820:	00c5e5b3          	or	a1,a1,a2
    80002824:	00851613          	slli	a2,a0,0x8
    80002828:	00f67633          	and	a2,a2,a5
    8000282c:	01851513          	slli	a0,a0,0x18
    80002830:	00c56533          	or	a0,a0,a2
    80002834:	00b56533          	or	a0,a0,a1
    80002838:	18a12623          	sw	a0,396(sp)
    8000283c:	00050093          	mv	ra,a0
    80002840:	14a12a23          	sw	a0,340(sp)
    80002844:	02544503          	lbu	a0,37(s0)
    80002848:	02444583          	lbu	a1,36(s0)
    8000284c:	02744603          	lbu	a2,39(s0)
    80002850:	02644683          	lbu	a3,38(s0)
    80002854:	00851513          	slli	a0,a0,0x8
    80002858:	00b56533          	or	a0,a0,a1
    8000285c:	00861593          	slli	a1,a2,0x8
    80002860:	00d5e5b3          	or	a1,a1,a3
    80002864:	01059593          	slli	a1,a1,0x10
    80002868:	00a5e533          	or	a0,a1,a0
    8000286c:	00855593          	srli	a1,a0,0x8
    80002870:	00e5f5b3          	and	a1,a1,a4
    80002874:	01855613          	srli	a2,a0,0x18
    80002878:	00c5e5b3          	or	a1,a1,a2
    8000287c:	00851613          	slli	a2,a0,0x8
    80002880:	00f67633          	and	a2,a2,a5
    80002884:	01851513          	slli	a0,a0,0x18
    80002888:	00c56533          	or	a0,a0,a2
    8000288c:	00b56533          	or	a0,a0,a1
    80002890:	18a12823          	sw	a0,400(sp)
    80002894:	00050293          	mv	t0,a0
    80002898:	02944503          	lbu	a0,41(s0)
    8000289c:	02844583          	lbu	a1,40(s0)
    800028a0:	02b44603          	lbu	a2,43(s0)
    800028a4:	02a44683          	lbu	a3,42(s0)
    800028a8:	00851513          	slli	a0,a0,0x8
    800028ac:	00b56533          	or	a0,a0,a1
    800028b0:	00861593          	slli	a1,a2,0x8
    800028b4:	00d5e5b3          	or	a1,a1,a3
    800028b8:	01059593          	slli	a1,a1,0x10
    800028bc:	00a5e533          	or	a0,a1,a0
    800028c0:	00855593          	srli	a1,a0,0x8
    800028c4:	00e5f5b3          	and	a1,a1,a4
    800028c8:	01855613          	srli	a2,a0,0x18
    800028cc:	00c5e5b3          	or	a1,a1,a2
    800028d0:	00851613          	slli	a2,a0,0x8
    800028d4:	00f67633          	and	a2,a2,a5
    800028d8:	01851513          	slli	a0,a0,0x18
    800028dc:	00c56533          	or	a0,a0,a2
    800028e0:	00b56533          	or	a0,a0,a1
    800028e4:	18a12a23          	sw	a0,404(sp)
    800028e8:	00050c93          	mv	s9,a0
    800028ec:	14a12e23          	sw	a0,348(sp)
    800028f0:	02d44503          	lbu	a0,45(s0)
    800028f4:	02c44583          	lbu	a1,44(s0)
    800028f8:	02f44603          	lbu	a2,47(s0)
    800028fc:	02e44683          	lbu	a3,46(s0)
    80002900:	00851513          	slli	a0,a0,0x8
    80002904:	00b56533          	or	a0,a0,a1
    80002908:	00861593          	slli	a1,a2,0x8
    8000290c:	00d5e5b3          	or	a1,a1,a3
    80002910:	01059593          	slli	a1,a1,0x10
    80002914:	00a5e533          	or	a0,a1,a0
    80002918:	00855593          	srli	a1,a0,0x8
    8000291c:	00e5f5b3          	and	a1,a1,a4
    80002920:	01855613          	srli	a2,a0,0x18
    80002924:	00c5e5b3          	or	a1,a1,a2
    80002928:	00851613          	slli	a2,a0,0x8
    8000292c:	00f67633          	and	a2,a2,a5
    80002930:	01851513          	slli	a0,a0,0x18
    80002934:	00c56533          	or	a0,a0,a2
    80002938:	00b56fb3          	or	t6,a0,a1
    8000293c:	19f12c23          	sw	t6,408(sp)
    80002940:	03144503          	lbu	a0,49(s0)
    80002944:	03044583          	lbu	a1,48(s0)
    80002948:	03344603          	lbu	a2,51(s0)
    8000294c:	03244683          	lbu	a3,50(s0)
    80002950:	00851513          	slli	a0,a0,0x8
    80002954:	00b56533          	or	a0,a0,a1
    80002958:	00861593          	slli	a1,a2,0x8
    8000295c:	00d5e5b3          	or	a1,a1,a3
    80002960:	01059593          	slli	a1,a1,0x10
    80002964:	00a5e533          	or	a0,a1,a0
    80002968:	00855593          	srli	a1,a0,0x8
    8000296c:	00e5f5b3          	and	a1,a1,a4
    80002970:	01855613          	srli	a2,a0,0x18
    80002974:	00c5e5b3          	or	a1,a1,a2
    80002978:	00851613          	slli	a2,a0,0x8
    8000297c:	00f67633          	and	a2,a2,a5
    80002980:	01851513          	slli	a0,a0,0x18
    80002984:	00c56533          	or	a0,a0,a2
    80002988:	00b56bb3          	or	s7,a0,a1
    8000298c:	19712e23          	sw	s7,412(sp)
    80002990:	03544503          	lbu	a0,53(s0)
    80002994:	03444583          	lbu	a1,52(s0)
    80002998:	03744603          	lbu	a2,55(s0)
    8000299c:	03644683          	lbu	a3,54(s0)
    800029a0:	00851513          	slli	a0,a0,0x8
    800029a4:	00b56533          	or	a0,a0,a1
    800029a8:	00861593          	slli	a1,a2,0x8
    800029ac:	00d5e5b3          	or	a1,a1,a3
    800029b0:	01059593          	slli	a1,a1,0x10
    800029b4:	00a5e533          	or	a0,a1,a0
    800029b8:	00855593          	srli	a1,a0,0x8
    800029bc:	00e5f5b3          	and	a1,a1,a4
    800029c0:	01855613          	srli	a2,a0,0x18
    800029c4:	00c5e5b3          	or	a1,a1,a2
    800029c8:	00851613          	slli	a2,a0,0x8
    800029cc:	00f67633          	and	a2,a2,a5
    800029d0:	01851513          	slli	a0,a0,0x18
    800029d4:	00c56533          	or	a0,a0,a2
    800029d8:	00b56533          	or	a0,a0,a1
    800029dc:	16a12423          	sw	a0,360(sp)
    800029e0:	1aa12023          	sw	a0,416(sp)
    800029e4:	03944503          	lbu	a0,57(s0)
    800029e8:	03844583          	lbu	a1,56(s0)
    800029ec:	03b44603          	lbu	a2,59(s0)
    800029f0:	03a44683          	lbu	a3,58(s0)
    800029f4:	00851513          	slli	a0,a0,0x8
    800029f8:	00b56533          	or	a0,a0,a1
    800029fc:	00861593          	slli	a1,a2,0x8
    80002a00:	00d5e5b3          	or	a1,a1,a3
    80002a04:	01059593          	slli	a1,a1,0x10
    80002a08:	00a5e533          	or	a0,a1,a0
    80002a0c:	00855593          	srli	a1,a0,0x8
    80002a10:	00e5f5b3          	and	a1,a1,a4
    80002a14:	01855613          	srli	a2,a0,0x18
    80002a18:	00c5e5b3          	or	a1,a1,a2
    80002a1c:	00851613          	slli	a2,a0,0x8
    80002a20:	00f67633          	and	a2,a2,a5
    80002a24:	01851513          	slli	a0,a0,0x18
    80002a28:	00c56533          	or	a0,a0,a2
    80002a2c:	00b56db3          	or	s11,a0,a1
    80002a30:	1bb12223          	sw	s11,420(sp)
    80002a34:	03d44503          	lbu	a0,61(s0)
    80002a38:	03c44583          	lbu	a1,60(s0)
    80002a3c:	03f44603          	lbu	a2,63(s0)
    80002a40:	03e44683          	lbu	a3,62(s0)
    80002a44:	00851513          	slli	a0,a0,0x8
    80002a48:	00b56533          	or	a0,a0,a1
    80002a4c:	00861593          	slli	a1,a2,0x8
    80002a50:	00d5e5b3          	or	a1,a1,a3
    80002a54:	01059593          	slli	a1,a1,0x10
    80002a58:	00a5e533          	or	a0,a1,a0
    80002a5c:	00855593          	srli	a1,a0,0x8
    80002a60:	00e5f5b3          	and	a1,a1,a4
    80002a64:	01855613          	srli	a2,a0,0x18
    80002a68:	00c5e5b3          	or	a1,a1,a2
    80002a6c:	00851613          	slli	a2,a0,0x8
    80002a70:	00f67633          	and	a2,a2,a5
    80002a74:	01851513          	slli	a0,a0,0x18
    80002a78:	00c56533          	or	a0,a0,a2
    80002a7c:	00b56d33          	or	s10,a0,a1
    80002a80:	1ba12423          	sw	s10,424(sp)
    80002a84:	17812e03          	lw	t3,376(sp)
    80002a88:	17412883          	lw	a7,372(sp)
    80002a8c:	17012f03          	lw	t5,368(sp)
    80002a90:	16c12683          	lw	a3,364(sp)
    80002a94:	16d12223          	sw	a3,356(sp)
    80002a98:	17c12c03          	lw	s8,380(sp)
    80002a9c:	006ad513          	srli	a0,s5,0x6
    80002aa0:	01aa9593          	slli	a1,s5,0x1a
    80002aa4:	00a5e533          	or	a0,a1,a0
    80002aa8:	00bad593          	srli	a1,s5,0xb
    80002aac:	015a9613          	slli	a2,s5,0x15
    80002ab0:	00b665b3          	or	a1,a2,a1
    80002ab4:	00b54533          	xor	a0,a0,a1
    80002ab8:	019ad593          	srli	a1,s5,0x19
    80002abc:	007a9613          	slli	a2,s5,0x7
    80002ac0:	00b665b3          	or	a1,a2,a1
    80002ac4:	00b54533          	xor	a0,a0,a1
    80002ac8:	016845b3          	xor	a1,a6,s6
    80002acc:	0155f5b3          	and	a1,a1,s5
    80002ad0:	0165c5b3          	xor	a1,a1,s6
    80002ad4:	00ba05b3          	add	a1,s4,a1
    80002ad8:	00a58533          	add	a0,a1,a0
    80002adc:	00d50533          	add	a0,a0,a3
    80002ae0:	10412583          	lw	a1,260(sp)
    80002ae4:	00b50533          	add	a0,a0,a1
    80002ae8:	0024d593          	srli	a1,s1,0x2
    80002aec:	01e49613          	slli	a2,s1,0x1e
    80002af0:	00b665b3          	or	a1,a2,a1
    80002af4:	00d4d613          	srli	a2,s1,0xd
    80002af8:	01349693          	slli	a3,s1,0x13
    80002afc:	00c6e633          	or	a2,a3,a2
    80002b00:	00c5c5b3          	xor	a1,a1,a2
    80002b04:	0164d613          	srli	a2,s1,0x16
    80002b08:	00a49693          	slli	a3,s1,0xa
    80002b0c:	00c6e633          	or	a2,a3,a2
    80002b10:	00c5c5b3          	xor	a1,a1,a2
    80002b14:	0124f633          	and	a2,s1,s2
    80002b18:	01d4f6b3          	and	a3,s1,t4
    80002b1c:	01d97733          	and	a4,s2,t4
    80002b20:	00e64733          	xor	a4,a2,a4
    80002b24:	00d746b3          	xor	a3,a4,a3
    80002b28:	00b685b3          	add	a1,a3,a1
    80002b2c:	00048b13          	mv	s6,s1
    80002b30:	00a58a33          	add	s4,a1,a0
    80002b34:	00750533          	add	a0,a0,t2
    80002b38:	00655693          	srli	a3,a0,0x6
    80002b3c:	01a51713          	slli	a4,a0,0x1a
    80002b40:	00d766b3          	or	a3,a4,a3
    80002b44:	00b55713          	srli	a4,a0,0xb
    80002b48:	01551793          	slli	a5,a0,0x15
    80002b4c:	00e7e733          	or	a4,a5,a4
    80002b50:	00e6c6b3          	xor	a3,a3,a4
    80002b54:	01955713          	srli	a4,a0,0x19
    80002b58:	00751793          	slli	a5,a0,0x7
    80002b5c:	00e7e733          	or	a4,a5,a4
    80002b60:	00e6c6b3          	xor	a3,a3,a4
    80002b64:	010ac733          	xor	a4,s5,a6
    80002b68:	00e57733          	and	a4,a0,a4
    80002b6c:	01074733          	xor	a4,a4,a6
    80002b70:	15812583          	lw	a1,344(sp)
    80002b74:	01e587b3          	add	a5,a1,t5
    80002b78:	00e78733          	add	a4,a5,a4
    80002b7c:	00d706b3          	add	a3,a4,a3
    80002b80:	10012583          	lw	a1,256(sp)
    80002b84:	00b686b3          	add	a3,a3,a1
    80002b88:	002a5713          	srli	a4,s4,0x2
    80002b8c:	01ea1793          	slli	a5,s4,0x1e
    80002b90:	00e7e733          	or	a4,a5,a4
    80002b94:	00da5793          	srli	a5,s4,0xd
    80002b98:	013a1493          	slli	s1,s4,0x13
    80002b9c:	00f4e7b3          	or	a5,s1,a5
    80002ba0:	00f74733          	xor	a4,a4,a5
    80002ba4:	016a5793          	srli	a5,s4,0x16
    80002ba8:	00aa1493          	slli	s1,s4,0xa
    80002bac:	00f4e7b3          	or	a5,s1,a5
    80002bb0:	00f74733          	xor	a4,a4,a5
    80002bb4:	012b47b3          	xor	a5,s6,s2
    80002bb8:	00fa77b3          	and	a5,s4,a5
    80002bbc:	00c7c633          	xor	a2,a5,a2
    80002bc0:	00c70633          	add	a2,a4,a2
    80002bc4:	00d60633          	add	a2,a2,a3
    80002bc8:	01d68433          	add	s0,a3,t4
    80002bcc:	00645693          	srli	a3,s0,0x6
    80002bd0:	01a41713          	slli	a4,s0,0x1a
    80002bd4:	00d766b3          	or	a3,a4,a3
    80002bd8:	00b45713          	srli	a4,s0,0xb
    80002bdc:	01541793          	slli	a5,s0,0x15
    80002be0:	00e7e733          	or	a4,a5,a4
    80002be4:	00e6c6b3          	xor	a3,a3,a4
    80002be8:	01945713          	srli	a4,s0,0x19
    80002bec:	00741793          	slli	a5,s0,0x7
    80002bf0:	00e7e733          	or	a4,a5,a4
    80002bf4:	00e6c6b3          	xor	a3,a3,a4
    80002bf8:	01554733          	xor	a4,a0,s5
    80002bfc:	00e47733          	and	a4,s0,a4
    80002c00:	01574733          	xor	a4,a4,s5
    80002c04:	13512423          	sw	s5,296(sp)
    80002c08:	011807b3          	add	a5,a6,a7
    80002c0c:	00e78733          	add	a4,a5,a4
    80002c10:	00d706b3          	add	a3,a4,a3
    80002c14:	0fc12583          	lw	a1,252(sp)
    80002c18:	00b686b3          	add	a3,a3,a1
    80002c1c:	00265713          	srli	a4,a2,0x2
    80002c20:	01e61793          	slli	a5,a2,0x1e
    80002c24:	00e7e733          	or	a4,a5,a4
    80002c28:	00d65793          	srli	a5,a2,0xd
    80002c2c:	01361493          	slli	s1,a2,0x13
    80002c30:	00f4e7b3          	or	a5,s1,a5
    80002c34:	00f74733          	xor	a4,a4,a5
    80002c38:	01665793          	srli	a5,a2,0x16
    80002c3c:	00a61493          	slli	s1,a2,0xa
    80002c40:	00f4e7b3          	or	a5,s1,a5
    80002c44:	00f74733          	xor	a4,a4,a5
    80002c48:	01467eb3          	and	t4,a2,s4
    80002c4c:	016674b3          	and	s1,a2,s6
    80002c50:	016a77b3          	and	a5,s4,s6
    80002c54:	13612223          	sw	s6,292(sp)
    80002c58:	00fec7b3          	xor	a5,t4,a5
    80002c5c:	0097c7b3          	xor	a5,a5,s1
    80002c60:	00e78733          	add	a4,a5,a4
    80002c64:	00d703b3          	add	t2,a4,a3
    80002c68:	012686b3          	add	a3,a3,s2
    80002c6c:	0066d713          	srli	a4,a3,0x6
    80002c70:	01a69793          	slli	a5,a3,0x1a
    80002c74:	00e7e733          	or	a4,a5,a4
    80002c78:	00b6d793          	srli	a5,a3,0xb
    80002c7c:	01569493          	slli	s1,a3,0x15
    80002c80:	00f4e7b3          	or	a5,s1,a5
    80002c84:	00f74733          	xor	a4,a4,a5
    80002c88:	0196d793          	srli	a5,a3,0x19
    80002c8c:	00769493          	slli	s1,a3,0x7
    80002c90:	00f4e7b3          	or	a5,s1,a5
    80002c94:	00f74733          	xor	a4,a4,a5
    80002c98:	00a447b3          	xor	a5,s0,a0
    80002c9c:	00f6f7b3          	and	a5,a3,a5
    80002ca0:	00a7c7b3          	xor	a5,a5,a0
    80002ca4:	01ca84b3          	add	s1,s5,t3
    80002ca8:	00f487b3          	add	a5,s1,a5
    80002cac:	00e78733          	add	a4,a5,a4
    80002cb0:	0f812583          	lw	a1,248(sp)
    80002cb4:	00b707b3          	add	a5,a4,a1
    80002cb8:	0023d713          	srli	a4,t2,0x2
    80002cbc:	01e39493          	slli	s1,t2,0x1e
    80002cc0:	00e4e933          	or	s2,s1,a4
    80002cc4:	00d3d493          	srli	s1,t2,0xd
    80002cc8:	01339713          	slli	a4,t2,0x13
    80002ccc:	00976733          	or	a4,a4,s1
    80002cd0:	00e94933          	xor	s2,s2,a4
    80002cd4:	0163d493          	srli	s1,t2,0x16
    80002cd8:	00a39713          	slli	a4,t2,0xa
    80002cdc:	00976733          	or	a4,a4,s1
    80002ce0:	00e94733          	xor	a4,s2,a4
    80002ce4:	014644b3          	xor	s1,a2,s4
    80002ce8:	0093f4b3          	and	s1,t2,s1
    80002cec:	01d4c4b3          	xor	s1,s1,t4
    80002cf0:	00970733          	add	a4,a4,s1
    80002cf4:	00f70733          	add	a4,a4,a5
    80002cf8:	016787b3          	add	a5,a5,s6
    80002cfc:	0067d493          	srli	s1,a5,0x6
    80002d00:	01a79593          	slli	a1,a5,0x1a
    80002d04:	0095eeb3          	or	t4,a1,s1
    80002d08:	00b7d493          	srli	s1,a5,0xb
    80002d0c:	01579593          	slli	a1,a5,0x15
    80002d10:	0095e5b3          	or	a1,a1,s1
    80002d14:	00beceb3          	xor	t4,t4,a1
    80002d18:	0197d493          	srli	s1,a5,0x19
    80002d1c:	00779593          	slli	a1,a5,0x7
    80002d20:	0095e5b3          	or	a1,a1,s1
    80002d24:	00bec5b3          	xor	a1,t4,a1
    80002d28:	0086c4b3          	xor	s1,a3,s0
    80002d2c:	0097f4b3          	and	s1,a5,s1
    80002d30:	0084c4b3          	xor	s1,s1,s0
    80002d34:	01850533          	add	a0,a0,s8
    80002d38:	00950533          	add	a0,a0,s1
    80002d3c:	00b50eb3          	add	t4,a0,a1
    80002d40:	00275593          	srli	a1,a4,0x2
    80002d44:	01e71493          	slli	s1,a4,0x1e
    80002d48:	00b4e5b3          	or	a1,s1,a1
    80002d4c:	00d75493          	srli	s1,a4,0xd
    80002d50:	01371513          	slli	a0,a4,0x13
    80002d54:	00956533          	or	a0,a0,s1
    80002d58:	00a5c533          	xor	a0,a1,a0
    80002d5c:	01675593          	srli	a1,a4,0x16
    80002d60:	00a71493          	slli	s1,a4,0xa
    80002d64:	00b4e5b3          	or	a1,s1,a1
    80002d68:	00b54533          	xor	a0,a0,a1
    80002d6c:	00777933          	and	s2,a4,t2
    80002d70:	00c3f4b3          	and	s1,t2,a2
    80002d74:	009944b3          	xor	s1,s2,s1
    80002d78:	00c775b3          	and	a1,a4,a2
    80002d7c:	00b4c5b3          	xor	a1,s1,a1
    80002d80:	0f412483          	lw	s1,244(sp)
    80002d84:	009e84b3          	add	s1,t4,s1
    80002d88:	00a58533          	add	a0,a1,a0
    80002d8c:	00950eb3          	add	t4,a0,s1
    80002d90:	014484b3          	add	s1,s1,s4
    80002d94:	0064d513          	srli	a0,s1,0x6
    80002d98:	01a49593          	slli	a1,s1,0x1a
    80002d9c:	00a5ea33          	or	s4,a1,a0
    80002da0:	00b4d593          	srli	a1,s1,0xb
    80002da4:	01549513          	slli	a0,s1,0x15
    80002da8:	00b56533          	or	a0,a0,a1
    80002dac:	00aa4ab3          	xor	s5,s4,a0
    80002db0:	18012a03          	lw	s4,384(sp)
    80002db4:	0194d593          	srli	a1,s1,0x19
    80002db8:	00749513          	slli	a0,s1,0x7
    80002dbc:	00b56533          	or	a0,a0,a1
    80002dc0:	00aac533          	xor	a0,s5,a0
    80002dc4:	008a05b3          	add	a1,s4,s0
    80002dc8:	00d7c433          	xor	s0,a5,a3
    80002dcc:	0084f433          	and	s0,s1,s0
    80002dd0:	00d44433          	xor	s0,s0,a3
    80002dd4:	008585b3          	add	a1,a1,s0
    80002dd8:	00a58ab3          	add	s5,a1,a0
    80002ddc:	002ed593          	srli	a1,t4,0x2
    80002de0:	01ee9413          	slli	s0,t4,0x1e
    80002de4:	00b465b3          	or	a1,s0,a1
    80002de8:	00ded413          	srli	s0,t4,0xd
    80002dec:	013e9513          	slli	a0,t4,0x13
    80002df0:	00856533          	or	a0,a0,s0
    80002df4:	00a5c533          	xor	a0,a1,a0
    80002df8:	016ed593          	srli	a1,t4,0x16
    80002dfc:	00ae9413          	slli	s0,t4,0xa
    80002e00:	00b465b3          	or	a1,s0,a1
    80002e04:	00b54533          	xor	a0,a0,a1
    80002e08:	007745b3          	xor	a1,a4,t2
    80002e0c:	00bef5b3          	and	a1,t4,a1
    80002e10:	0125c5b3          	xor	a1,a1,s2
    80002e14:	0f012403          	lw	s0,240(sp)
    80002e18:	008a8433          	add	s0,s5,s0
    80002e1c:	00b50533          	add	a0,a0,a1
    80002e20:	008505b3          	add	a1,a0,s0
    80002e24:	00c40533          	add	a0,s0,a2
    80002e28:	00655613          	srli	a2,a0,0x6
    80002e2c:	01a51413          	slli	s0,a0,0x1a
    80002e30:	00c46933          	or	s2,s0,a2
    80002e34:	00b55413          	srli	s0,a0,0xb
    80002e38:	01551613          	slli	a2,a0,0x15
    80002e3c:	00866633          	or	a2,a2,s0
    80002e40:	00c94933          	xor	s2,s2,a2
    80002e44:	01955413          	srli	s0,a0,0x19
    80002e48:	00751613          	slli	a2,a0,0x7
    80002e4c:	00866633          	or	a2,a2,s0
    80002e50:	00d306b3          	add	a3,t1,a3
    80002e54:	00c94633          	xor	a2,s2,a2
    80002e58:	00f4c433          	xor	s0,s1,a5
    80002e5c:	00857433          	and	s0,a0,s0
    80002e60:	00f44433          	xor	s0,s0,a5
    80002e64:	008686b3          	add	a3,a3,s0
    80002e68:	00c68933          	add	s2,a3,a2
    80002e6c:	0025d693          	srli	a3,a1,0x2
    80002e70:	01e59413          	slli	s0,a1,0x1e
    80002e74:	00d466b3          	or	a3,s0,a3
    80002e78:	00d5d413          	srli	s0,a1,0xd
    80002e7c:	01359613          	slli	a2,a1,0x13
    80002e80:	00866633          	or	a2,a2,s0
    80002e84:	00c6c633          	xor	a2,a3,a2
    80002e88:	0165d693          	srli	a3,a1,0x16
    80002e8c:	00a59413          	slli	s0,a1,0xa
    80002e90:	00d466b3          	or	a3,s0,a3
    80002e94:	00d64633          	xor	a2,a2,a3
    80002e98:	01d5fab3          	and	s5,a1,t4
    80002e9c:	00eef433          	and	s0,t4,a4
    80002ea0:	008ac433          	xor	s0,s5,s0
    80002ea4:	00e5f6b3          	and	a3,a1,a4
    80002ea8:	00d446b3          	xor	a3,s0,a3
    80002eac:	00c68633          	add	a2,a3,a2
    80002eb0:	0ec12683          	lw	a3,236(sp)
    80002eb4:	00d906b3          	add	a3,s2,a3
    80002eb8:	00d60933          	add	s2,a2,a3
    80002ebc:	00768433          	add	s0,a3,t2
    80002ec0:	00645693          	srli	a3,s0,0x6
    80002ec4:	01a41613          	slli	a2,s0,0x1a
    80002ec8:	00d663b3          	or	t2,a2,a3
    80002ecc:	00b45693          	srli	a3,s0,0xb
    80002ed0:	01541613          	slli	a2,s0,0x15
    80002ed4:	00d66633          	or	a2,a2,a3
    80002ed8:	00c3c3b3          	xor	t2,t2,a2
    80002edc:	01945693          	srli	a3,s0,0x19
    80002ee0:	00741613          	slli	a2,s0,0x7
    80002ee4:	00d66633          	or	a2,a2,a3
    80002ee8:	00c3c633          	xor	a2,t2,a2
    80002eec:	00f986b3          	add	a3,s3,a5
    80002ef0:	009547b3          	xor	a5,a0,s1
    80002ef4:	00f477b3          	and	a5,s0,a5
    80002ef8:	0097c7b3          	xor	a5,a5,s1
    80002efc:	00f686b3          	add	a3,a3,a5
    80002f00:	00c683b3          	add	t2,a3,a2
    80002f04:	00295693          	srli	a3,s2,0x2
    80002f08:	01e91793          	slli	a5,s2,0x1e
    80002f0c:	00d7e6b3          	or	a3,a5,a3
    80002f10:	00d95793          	srli	a5,s2,0xd
    80002f14:	01391613          	slli	a2,s2,0x13
    80002f18:	00f66633          	or	a2,a2,a5
    80002f1c:	00c6c633          	xor	a2,a3,a2
    80002f20:	01695693          	srli	a3,s2,0x16
    80002f24:	00a91793          	slli	a5,s2,0xa
    80002f28:	00d7e6b3          	or	a3,a5,a3
    80002f2c:	00d64633          	xor	a2,a2,a3
    80002f30:	01d5c6b3          	xor	a3,a1,t4
    80002f34:	00d976b3          	and	a3,s2,a3
    80002f38:	0156c6b3          	xor	a3,a3,s5
    80002f3c:	0e812783          	lw	a5,232(sp)
    80002f40:	00f387b3          	add	a5,t2,a5
    80002f44:	00d60633          	add	a2,a2,a3
    80002f48:	00f606b3          	add	a3,a2,a5
    80002f4c:	00e787b3          	add	a5,a5,a4
    80002f50:	0067d613          	srli	a2,a5,0x6
    80002f54:	01a79713          	slli	a4,a5,0x1a
    80002f58:	00c763b3          	or	t2,a4,a2
    80002f5c:	00b7d713          	srli	a4,a5,0xb
    80002f60:	01579613          	slli	a2,a5,0x15
    80002f64:	00e66633          	or	a2,a2,a4
    80002f68:	00c3c3b3          	xor	t2,t2,a2
    80002f6c:	0197d713          	srli	a4,a5,0x19
    80002f70:	00779613          	slli	a2,a5,0x7
    80002f74:	00e66633          	or	a2,a2,a4
    80002f78:	00908733          	add	a4,ra,s1
    80002f7c:	00c3c633          	xor	a2,t2,a2
    80002f80:	00a444b3          	xor	s1,s0,a0
    80002f84:	0097f4b3          	and	s1,a5,s1
    80002f88:	00a4c4b3          	xor	s1,s1,a0
    80002f8c:	00970733          	add	a4,a4,s1
    80002f90:	00c703b3          	add	t2,a4,a2
    80002f94:	0026d713          	srli	a4,a3,0x2
    80002f98:	01e69493          	slli	s1,a3,0x1e
    80002f9c:	00e4e733          	or	a4,s1,a4
    80002fa0:	00d6d493          	srli	s1,a3,0xd
    80002fa4:	01369613          	slli	a2,a3,0x13
    80002fa8:	00966633          	or	a2,a2,s1
    80002fac:	00c74633          	xor	a2,a4,a2
    80002fb0:	0166d713          	srli	a4,a3,0x16
    80002fb4:	00a69493          	slli	s1,a3,0xa
    80002fb8:	00e4e733          	or	a4,s1,a4
    80002fbc:	00e64633          	xor	a2,a2,a4
    80002fc0:	0126fab3          	and	s5,a3,s2
    80002fc4:	00b97733          	and	a4,s2,a1
    80002fc8:	00eac733          	xor	a4,s5,a4
    80002fcc:	00b6f4b3          	and	s1,a3,a1
    80002fd0:	00974733          	xor	a4,a4,s1
    80002fd4:	00c70633          	add	a2,a4,a2
    80002fd8:	0e412703          	lw	a4,228(sp)
    80002fdc:	00e38733          	add	a4,t2,a4
    80002fe0:	00e603b3          	add	t2,a2,a4
    80002fe4:	01d70733          	add	a4,a4,t4
    80002fe8:	00675613          	srli	a2,a4,0x6
    80002fec:	01a71493          	slli	s1,a4,0x1a
    80002ff0:	00c4eeb3          	or	t4,s1,a2
    80002ff4:	00b75493          	srli	s1,a4,0xb
    80002ff8:	01571613          	slli	a2,a4,0x15
    80002ffc:	00966633          	or	a2,a2,s1
    80003000:	00ceceb3          	xor	t4,t4,a2
    80003004:	01975493          	srli	s1,a4,0x19
    80003008:	00771613          	slli	a2,a4,0x7
    8000300c:	00966633          	or	a2,a2,s1
    80003010:	00cec633          	xor	a2,t4,a2
    80003014:	00028313          	mv	t1,t0
    80003018:	14512223          	sw	t0,324(sp)
    8000301c:	00a28533          	add	a0,t0,a0
    80003020:	0087c4b3          	xor	s1,a5,s0
    80003024:	009774b3          	and	s1,a4,s1
    80003028:	0084c4b3          	xor	s1,s1,s0
    8000302c:	00950533          	add	a0,a0,s1
    80003030:	00c50eb3          	add	t4,a0,a2
    80003034:	0023d613          	srli	a2,t2,0x2
    80003038:	01e39493          	slli	s1,t2,0x1e
    8000303c:	00c4e633          	or	a2,s1,a2
    80003040:	00d3d493          	srli	s1,t2,0xd
    80003044:	01339513          	slli	a0,t2,0x13
    80003048:	00956533          	or	a0,a0,s1
    8000304c:	00a64533          	xor	a0,a2,a0
    80003050:	0163d613          	srli	a2,t2,0x16
    80003054:	00a39493          	slli	s1,t2,0xa
    80003058:	00c4e633          	or	a2,s1,a2
    8000305c:	00c544b3          	xor	s1,a0,a2
    80003060:	0126c633          	xor	a2,a3,s2
    80003064:	00c3f633          	and	a2,t2,a2
    80003068:	01564633          	xor	a2,a2,s5
    8000306c:	0e012503          	lw	a0,224(sp)
    80003070:	00ae8533          	add	a0,t4,a0
    80003074:	00c48633          	add	a2,s1,a2
    80003078:	00a604b3          	add	s1,a2,a0
    8000307c:	00b505b3          	add	a1,a0,a1
    80003080:	0065d513          	srli	a0,a1,0x6
    80003084:	01a59613          	slli	a2,a1,0x1a
    80003088:	00a66eb3          	or	t4,a2,a0
    8000308c:	00b5d613          	srli	a2,a1,0xb
    80003090:	01559513          	slli	a0,a1,0x15
    80003094:	00c56533          	or	a0,a0,a2
    80003098:	00aeceb3          	xor	t4,t4,a0
    8000309c:	0195d613          	srli	a2,a1,0x19
    800030a0:	00759513          	slli	a0,a1,0x7
    800030a4:	00c56533          	or	a0,a0,a2
    800030a8:	008c8633          	add	a2,s9,s0
    800030ac:	00aec533          	xor	a0,t4,a0
    800030b0:	00f74433          	xor	s0,a4,a5
    800030b4:	0085f433          	and	s0,a1,s0
    800030b8:	00f44433          	xor	s0,s0,a5
    800030bc:	00860633          	add	a2,a2,s0
    800030c0:	00a60eb3          	add	t4,a2,a0
    800030c4:	0024d613          	srli	a2,s1,0x2
    800030c8:	01e49413          	slli	s0,s1,0x1e
    800030cc:	00c46633          	or	a2,s0,a2
    800030d0:	00d4d413          	srli	s0,s1,0xd
    800030d4:	01349513          	slli	a0,s1,0x13
    800030d8:	00856533          	or	a0,a0,s0
    800030dc:	00a64533          	xor	a0,a2,a0
    800030e0:	0164d613          	srli	a2,s1,0x16
    800030e4:	00a49413          	slli	s0,s1,0xa
    800030e8:	00c46633          	or	a2,s0,a2
    800030ec:	00c54533          	xor	a0,a0,a2
    800030f0:	0074fab3          	and	s5,s1,t2
    800030f4:	00d3f433          	and	s0,t2,a3
    800030f8:	008ac433          	xor	s0,s5,s0
    800030fc:	00d4f633          	and	a2,s1,a3
    80003100:	00c44633          	xor	a2,s0,a2
    80003104:	00a60533          	add	a0,a2,a0
    80003108:	0dc12603          	lw	a2,220(sp)
    8000310c:	00ce8633          	add	a2,t4,a2
    80003110:	00c50eb3          	add	t4,a0,a2
    80003114:	01260533          	add	a0,a2,s2
    80003118:	00655613          	srli	a2,a0,0x6
    8000311c:	01a51413          	slli	s0,a0,0x1a
    80003120:	00c46933          	or	s2,s0,a2
    80003124:	00b55413          	srli	s0,a0,0xb
    80003128:	01551613          	slli	a2,a0,0x15
    8000312c:	00866633          	or	a2,a2,s0
    80003130:	00c94933          	xor	s2,s2,a2
    80003134:	01955413          	srli	s0,a0,0x19
    80003138:	00751613          	slli	a2,a0,0x7
    8000313c:	00866633          	or	a2,a2,s0
    80003140:	00c94633          	xor	a2,s2,a2
    80003144:	000f8293          	mv	t0,t6
    80003148:	11f12e23          	sw	t6,284(sp)
    8000314c:	00ff87b3          	add	a5,t6,a5
    80003150:	00e5c433          	xor	s0,a1,a4
    80003154:	00857433          	and	s0,a0,s0
    80003158:	00e44433          	xor	s0,s0,a4
    8000315c:	008787b3          	add	a5,a5,s0
    80003160:	00c78933          	add	s2,a5,a2
    80003164:	002ed793          	srli	a5,t4,0x2
    80003168:	01ee9413          	slli	s0,t4,0x1e
    8000316c:	00f467b3          	or	a5,s0,a5
    80003170:	00ded413          	srli	s0,t4,0xd
    80003174:	013e9613          	slli	a2,t4,0x13
    80003178:	00866633          	or	a2,a2,s0
    8000317c:	00c7c633          	xor	a2,a5,a2
    80003180:	016ed793          	srli	a5,t4,0x16
    80003184:	00ae9413          	slli	s0,t4,0xa
    80003188:	00f467b3          	or	a5,s0,a5
    8000318c:	00f64633          	xor	a2,a2,a5
    80003190:	0074c7b3          	xor	a5,s1,t2
    80003194:	00fef7b3          	and	a5,t4,a5
    80003198:	0157c7b3          	xor	a5,a5,s5
    8000319c:	0d812403          	lw	s0,216(sp)
    800031a0:	00890433          	add	s0,s2,s0
    800031a4:	00f60633          	add	a2,a2,a5
    800031a8:	00860633          	add	a2,a2,s0
    800031ac:	00d407b3          	add	a5,s0,a3
    800031b0:	0067d693          	srli	a3,a5,0x6
    800031b4:	01a79413          	slli	s0,a5,0x1a
    800031b8:	00d46933          	or	s2,s0,a3
    800031bc:	00b7d413          	srli	s0,a5,0xb
    800031c0:	01579693          	slli	a3,a5,0x15
    800031c4:	0086e6b3          	or	a3,a3,s0
    800031c8:	00d94933          	xor	s2,s2,a3
    800031cc:	0197d413          	srli	s0,a5,0x19
    800031d0:	00779693          	slli	a3,a5,0x7
    800031d4:	0086e6b3          	or	a3,a3,s0
    800031d8:	000b8f93          	mv	t6,s7
    800031dc:	00eb8733          	add	a4,s7,a4
    800031e0:	00d946b3          	xor	a3,s2,a3
    800031e4:	00b54433          	xor	s0,a0,a1
    800031e8:	0087f433          	and	s0,a5,s0
    800031ec:	00b44433          	xor	s0,s0,a1
    800031f0:	00870733          	add	a4,a4,s0
    800031f4:	00d70933          	add	s2,a4,a3
    800031f8:	00265713          	srli	a4,a2,0x2
    800031fc:	01e61413          	slli	s0,a2,0x1e
    80003200:	00e46733          	or	a4,s0,a4
    80003204:	00d65413          	srli	s0,a2,0xd
    80003208:	01361693          	slli	a3,a2,0x13
    8000320c:	0086e6b3          	or	a3,a3,s0
    80003210:	00d746b3          	xor	a3,a4,a3
    80003214:	01665713          	srli	a4,a2,0x16
    80003218:	00a61413          	slli	s0,a2,0xa
    8000321c:	00e46733          	or	a4,s0,a4
    80003220:	00e6c6b3          	xor	a3,a3,a4
    80003224:	01d67ab3          	and	s5,a2,t4
    80003228:	009ef433          	and	s0,t4,s1
    8000322c:	008ac433          	xor	s0,s5,s0
    80003230:	00967733          	and	a4,a2,s1
    80003234:	00e44733          	xor	a4,s0,a4
    80003238:	00d706b3          	add	a3,a4,a3
    8000323c:	0d412703          	lw	a4,212(sp)
    80003240:	00e90733          	add	a4,s2,a4
    80003244:	00e68833          	add	a6,a3,a4
    80003248:	00770b33          	add	s6,a4,t2
    8000324c:	006b5713          	srli	a4,s6,0x6
    80003250:	01ab1413          	slli	s0,s6,0x1a
    80003254:	00e46733          	or	a4,s0,a4
    80003258:	00bb5413          	srli	s0,s6,0xb
    8000325c:	015b1693          	slli	a3,s6,0x15
    80003260:	0086e6b3          	or	a3,a3,s0
    80003264:	00d746b3          	xor	a3,a4,a3
    80003268:	019b5713          	srli	a4,s6,0x19
    8000326c:	007b1413          	slli	s0,s6,0x7
    80003270:	00e46733          	or	a4,s0,a4
    80003274:	00e6c6b3          	xor	a3,a3,a4
    80003278:	16812703          	lw	a4,360(sp)
    8000327c:	00b705b3          	add	a1,a4,a1
    80003280:	00a7c733          	xor	a4,a5,a0
    80003284:	00eb7733          	and	a4,s6,a4
    80003288:	00a74733          	xor	a4,a4,a0
    8000328c:	00e585b3          	add	a1,a1,a4
    80003290:	00d585b3          	add	a1,a1,a3
    80003294:	00285693          	srli	a3,a6,0x2
    80003298:	01e81713          	slli	a4,a6,0x1e
    8000329c:	00d766b3          	or	a3,a4,a3
    800032a0:	00d85713          	srli	a4,a6,0xd
    800032a4:	01381413          	slli	s0,a6,0x13
    800032a8:	00e46733          	or	a4,s0,a4
    800032ac:	00e6c6b3          	xor	a3,a3,a4
    800032b0:	01685713          	srli	a4,a6,0x16
    800032b4:	00a81413          	slli	s0,a6,0xa
    800032b8:	00e46733          	or	a4,s0,a4
    800032bc:	00e6c6b3          	xor	a3,a3,a4
    800032c0:	01d64733          	xor	a4,a2,t4
    800032c4:	00e87733          	and	a4,a6,a4
    800032c8:	01574733          	xor	a4,a4,s5
    800032cc:	0d012403          	lw	s0,208(sp)
    800032d0:	00858433          	add	s0,a1,s0
    800032d4:	00e685b3          	add	a1,a3,a4
    800032d8:	00858bb3          	add	s7,a1,s0
    800032dc:	009404b3          	add	s1,s0,s1
    800032e0:	0064d693          	srli	a3,s1,0x6
    800032e4:	01a49713          	slli	a4,s1,0x1a
    800032e8:	00d766b3          	or	a3,a4,a3
    800032ec:	00b4d713          	srli	a4,s1,0xb
    800032f0:	01549413          	slli	s0,s1,0x15
    800032f4:	00e46733          	or	a4,s0,a4
    800032f8:	00e6c6b3          	xor	a3,a3,a4
    800032fc:	0194d713          	srli	a4,s1,0x19
    80003300:	00749413          	slli	s0,s1,0x7
    80003304:	00e46733          	or	a4,s0,a4
    80003308:	00ad8533          	add	a0,s11,a0
    8000330c:	00e6c6b3          	xor	a3,a3,a4
    80003310:	00fb4733          	xor	a4,s6,a5
    80003314:	00e4f733          	and	a4,s1,a4
    80003318:	00f74733          	xor	a4,a4,a5
    8000331c:	00e50533          	add	a0,a0,a4
    80003320:	00d503b3          	add	t2,a0,a3
    80003324:	002bd693          	srli	a3,s7,0x2
    80003328:	01eb9713          	slli	a4,s7,0x1e
    8000332c:	00d766b3          	or	a3,a4,a3
    80003330:	00dbd713          	srli	a4,s7,0xd
    80003334:	013b9413          	slli	s0,s7,0x13
    80003338:	00e46733          	or	a4,s0,a4
    8000333c:	00e6c6b3          	xor	a3,a3,a4
    80003340:	016bd713          	srli	a4,s7,0x16
    80003344:	00ab9413          	slli	s0,s7,0xa
    80003348:	00e46733          	or	a4,s0,a4
    8000334c:	00e6c6b3          	xor	a3,a3,a4
    80003350:	010bf933          	and	s2,s7,a6
    80003354:	00c87733          	and	a4,a6,a2
    80003358:	00e94733          	xor	a4,s2,a4
    8000335c:	00cbf533          	and	a0,s7,a2
    80003360:	00a74533          	xor	a0,a4,a0
    80003364:	00d50533          	add	a0,a0,a3
    80003368:	0cc12583          	lw	a1,204(sp)
    8000336c:	00b386b3          	add	a3,t2,a1
    80003370:	00d503b3          	add	t2,a0,a3
    80003374:	01d68733          	add	a4,a3,t4
    80003378:	00675513          	srli	a0,a4,0x6
    8000337c:	01a71693          	slli	a3,a4,0x1a
    80003380:	00a6e533          	or	a0,a3,a0
    80003384:	00b75693          	srli	a3,a4,0xb
    80003388:	01571413          	slli	s0,a4,0x15
    8000338c:	00d466b3          	or	a3,s0,a3
    80003390:	00d54533          	xor	a0,a0,a3
    80003394:	01975693          	srli	a3,a4,0x19
    80003398:	00771413          	slli	s0,a4,0x7
    8000339c:	00d466b3          	or	a3,s0,a3
    800033a0:	00d54533          	xor	a0,a0,a3
    800033a4:	00fd06b3          	add	a3,s10,a5
    800033a8:	0164c7b3          	xor	a5,s1,s6
    800033ac:	00f777b3          	and	a5,a4,a5
    800033b0:	0167c7b3          	xor	a5,a5,s6
    800033b4:	00f686b3          	add	a3,a3,a5
    800033b8:	00a68533          	add	a0,a3,a0
    800033bc:	0023d693          	srli	a3,t2,0x2
    800033c0:	01e39793          	slli	a5,t2,0x1e
    800033c4:	00d7e6b3          	or	a3,a5,a3
    800033c8:	00d3d793          	srli	a5,t2,0xd
    800033cc:	01339413          	slli	s0,t2,0x13
    800033d0:	00f467b3          	or	a5,s0,a5
    800033d4:	00f6c6b3          	xor	a3,a3,a5
    800033d8:	0163d793          	srli	a5,t2,0x16
    800033dc:	00a39413          	slli	s0,t2,0xa
    800033e0:	00f467b3          	or	a5,s0,a5
    800033e4:	00f6c6b3          	xor	a3,a3,a5
    800033e8:	010bc7b3          	xor	a5,s7,a6
    800033ec:	00f3f7b3          	and	a5,t2,a5
    800033f0:	0127c7b3          	xor	a5,a5,s2
    800033f4:	0c812583          	lw	a1,200(sp)
    800033f8:	00b50533          	add	a0,a0,a1
    800033fc:	00f686b3          	add	a3,a3,a5
    80003400:	00a68eb3          	add	t4,a3,a0
    80003404:	00c50633          	add	a2,a0,a2
    80003408:	000c0993          	mv	s3,s8
    8000340c:	007c5513          	srli	a0,s8,0x7
    80003410:	019c1693          	slli	a3,s8,0x19
    80003414:	00a6e933          	or	s2,a3,a0
    80003418:	007e5693          	srli	a3,t3,0x7
    8000341c:	019e1793          	slli	a5,t3,0x19
    80003420:	00d7eab3          	or	s5,a5,a3
    80003424:	0078d793          	srli	a5,a7,0x7
    80003428:	01989413          	slli	s0,a7,0x19
    8000342c:	00f467b3          	or	a5,s0,a5
    80003430:	007f5413          	srli	s0,t5,0x7
    80003434:	019f1513          	slli	a0,t5,0x19
    80003438:	00856533          	or	a0,a0,s0
    8000343c:	012c5413          	srli	s0,s8,0x12
    80003440:	00ec1693          	slli	a3,s8,0xe
    80003444:	0086e6b3          	or	a3,a3,s0
    80003448:	012e5413          	srli	s0,t3,0x12
    8000344c:	00ee1093          	slli	ra,t3,0xe
    80003450:	0080e0b3          	or	ra,ra,s0
    80003454:	0128d413          	srli	s0,a7,0x12
    80003458:	00e89c93          	slli	s9,a7,0xe
    8000345c:	008cecb3          	or	s9,s9,s0
    80003460:	012f5413          	srli	s0,t5,0x12
    80003464:	00ef1c13          	slli	s8,t5,0xe
    80003468:	008c6c33          	or	s8,s8,s0
    8000346c:	0126c6b3          	xor	a3,a3,s2
    80003470:	0150c433          	xor	s0,ra,s5
    80003474:	00fcc7b3          	xor	a5,s9,a5
    80003478:	00ac4533          	xor	a0,s8,a0
    8000347c:	0039d593          	srli	a1,s3,0x3
    80003480:	00b6c5b3          	xor	a1,a3,a1
    80003484:	003e5693          	srli	a3,t3,0x3
    80003488:	00d446b3          	xor	a3,s0,a3
    8000348c:	0038d413          	srli	s0,a7,0x3
    80003490:	0087c7b3          	xor	a5,a5,s0
    80003494:	003f5413          	srli	s0,t5,0x3
    80003498:	00854533          	xor	a0,a0,s0
    8000349c:	01c58c33          	add	s8,a1,t3
    800034a0:	011688b3          	add	a7,a3,a7
    800034a4:	01e787b3          	add	a5,a5,t5
    800034a8:	16412583          	lw	a1,356(sp)
    800034ac:	00b50533          	add	a0,a0,a1
    800034b0:	011dd413          	srli	s0,s11,0x11
    800034b4:	00fd9593          	slli	a1,s11,0xf
    800034b8:	0085e5b3          	or	a1,a1,s0
    800034bc:	013dd413          	srli	s0,s11,0x13
    800034c0:	00dd9693          	slli	a3,s11,0xd
    800034c4:	0086e6b3          	or	a3,a3,s0
    800034c8:	00650533          	add	a0,a0,t1
    800034cc:	00d5c5b3          	xor	a1,a1,a3
    800034d0:	00add693          	srli	a3,s11,0xa
    800034d4:	000d8313          	mv	t1,s11
    800034d8:	13b12023          	sw	s11,288(sp)
    800034dc:	00d5c5b3          	xor	a1,a1,a3
    800034e0:	00b50433          	add	s0,a0,a1
    800034e4:	011d5513          	srli	a0,s10,0x11
    800034e8:	00fd1593          	slli	a1,s10,0xf
    800034ec:	00a5e533          	or	a0,a1,a0
    800034f0:	013d5593          	srli	a1,s10,0x13
    800034f4:	00dd1693          	slli	a3,s10,0xd
    800034f8:	00b6e5b3          	or	a1,a3,a1
    800034fc:	15c12683          	lw	a3,348(sp)
    80003500:	00d786b3          	add	a3,a5,a3
    80003504:	00b54533          	xor	a0,a0,a1
    80003508:	00ad5593          	srli	a1,s10,0xa
    8000350c:	000d0d93          	mv	s11,s10
    80003510:	11a12c23          	sw	s10,280(sp)
    80003514:	00b54533          	xor	a0,a0,a1
    80003518:	00a687b3          	add	a5,a3,a0
    8000351c:	01145513          	srli	a0,s0,0x11
    80003520:	00f41593          	slli	a1,s0,0xf
    80003524:	00a5e533          	or	a0,a1,a0
    80003528:	01345593          	srli	a1,s0,0x13
    8000352c:	00d41693          	slli	a3,s0,0xd
    80003530:	00b6e5b3          	or	a1,a3,a1
    80003534:	005886b3          	add	a3,a7,t0
    80003538:	00b54533          	xor	a0,a0,a1
    8000353c:	00a45593          	srli	a1,s0,0xa
    80003540:	00b54533          	xor	a0,a0,a1
    80003544:	00a68e33          	add	t3,a3,a0
    80003548:	0117d513          	srli	a0,a5,0x11
    8000354c:	00f79593          	slli	a1,a5,0xf
    80003550:	00a5e533          	or	a0,a1,a0
    80003554:	0137d593          	srli	a1,a5,0x13
    80003558:	00d79693          	slli	a3,a5,0xd
    8000355c:	00b6e5b3          	or	a1,a3,a1
    80003560:	01fc06b3          	add	a3,s8,t6
    80003564:	000f8d13          	mv	s10,t6
    80003568:	00b54533          	xor	a0,a0,a1
    8000356c:	00a7d593          	srli	a1,a5,0xa
    80003570:	00078293          	mv	t0,a5
    80003574:	16f12223          	sw	a5,356(sp)
    80003578:	00b54533          	xor	a0,a0,a1
    8000357c:	00a68933          	add	s2,a3,a0
    80003580:	00665513          	srli	a0,a2,0x6
    80003584:	01a61593          	slli	a1,a2,0x1a
    80003588:	00a5e533          	or	a0,a1,a0
    8000358c:	00b65593          	srli	a1,a2,0xb
    80003590:	01561693          	slli	a3,a2,0x15
    80003594:	00b6e5b3          	or	a1,a3,a1
    80003598:	00b54533          	xor	a0,a0,a1
    8000359c:	01965593          	srli	a1,a2,0x19
    800035a0:	00761693          	slli	a3,a2,0x7
    800035a4:	00b6e5b3          	or	a1,a3,a1
    800035a8:	016406b3          	add	a3,s0,s6
    800035ac:	00040f93          	mv	t6,s0
    800035b0:	14812623          	sw	s0,332(sp)
    800035b4:	00b54533          	xor	a0,a0,a1
    800035b8:	009745b3          	xor	a1,a4,s1
    800035bc:	00b675b3          	and	a1,a2,a1
    800035c0:	0095c5b3          	xor	a1,a1,s1
    800035c4:	00b685b3          	add	a1,a3,a1
    800035c8:	00a58533          	add	a0,a1,a0
    800035cc:	002ed593          	srli	a1,t4,0x2
    800035d0:	01ee9693          	slli	a3,t4,0x1e
    800035d4:	00b6e5b3          	or	a1,a3,a1
    800035d8:	00ded693          	srli	a3,t4,0xd
    800035dc:	013e9793          	slli	a5,t4,0x13
    800035e0:	00d7e6b3          	or	a3,a5,a3
    800035e4:	00d5c5b3          	xor	a1,a1,a3
    800035e8:	016ed693          	srli	a3,t4,0x16
    800035ec:	00ae9793          	slli	a5,t4,0xa
    800035f0:	00d7e6b3          	or	a3,a5,a3
    800035f4:	00d5c5b3          	xor	a1,a1,a3
    800035f8:	007ef433          	and	s0,t4,t2
    800035fc:	0173f6b3          	and	a3,t2,s7
    80003600:	00d446b3          	xor	a3,s0,a3
    80003604:	017ef7b3          	and	a5,t4,s7
    80003608:	00f6c6b3          	xor	a3,a3,a5
    8000360c:	00b685b3          	add	a1,a3,a1
    80003610:	0c412683          	lw	a3,196(sp)
    80003614:	00d50533          	add	a0,a0,a3
    80003618:	00a58c33          	add	s8,a1,a0
    8000361c:	010508b3          	add	a7,a0,a6
    80003620:	0068d513          	srli	a0,a7,0x6
    80003624:	01a89593          	slli	a1,a7,0x1a
    80003628:	00a5e533          	or	a0,a1,a0
    8000362c:	00b8d593          	srli	a1,a7,0xb
    80003630:	01589793          	slli	a5,a7,0x15
    80003634:	00b7e5b3          	or	a1,a5,a1
    80003638:	00b54533          	xor	a0,a0,a1
    8000363c:	0198d593          	srli	a1,a7,0x19
    80003640:	00789793          	slli	a5,a7,0x7
    80003644:	00b7e5b3          	or	a1,a5,a1
    80003648:	00b54533          	xor	a0,a0,a1
    8000364c:	009285b3          	add	a1,t0,s1
    80003650:	00e647b3          	xor	a5,a2,a4
    80003654:	00f8f7b3          	and	a5,a7,a5
    80003658:	00e7c7b3          	xor	a5,a5,a4
    8000365c:	00f585b3          	add	a1,a1,a5
    80003660:	00a58533          	add	a0,a1,a0
    80003664:	002c5593          	srli	a1,s8,0x2
    80003668:	01ec1793          	slli	a5,s8,0x1e
    8000366c:	00b7e5b3          	or	a1,a5,a1
    80003670:	00dc5793          	srli	a5,s8,0xd
    80003674:	013c1493          	slli	s1,s8,0x13
    80003678:	00f4e7b3          	or	a5,s1,a5
    8000367c:	00f5c5b3          	xor	a1,a1,a5
    80003680:	016c5793          	srli	a5,s8,0x16
    80003684:	00ac1493          	slli	s1,s8,0xa
    80003688:	00f4e7b3          	or	a5,s1,a5
    8000368c:	00f5c5b3          	xor	a1,a1,a5
    80003690:	007ec7b3          	xor	a5,t4,t2
    80003694:	00fc77b3          	and	a5,s8,a5
    80003698:	0087c7b3          	xor	a5,a5,s0
    8000369c:	0c012483          	lw	s1,192(sp)
    800036a0:	00950533          	add	a0,a0,s1
    800036a4:	00f585b3          	add	a1,a1,a5
    800036a8:	00a58cb3          	add	s9,a1,a0
    800036ac:	01750f33          	add	t5,a0,s7
    800036b0:	006f5513          	srli	a0,t5,0x6
    800036b4:	01af1593          	slli	a1,t5,0x1a
    800036b8:	00a5e533          	or	a0,a1,a0
    800036bc:	00bf5593          	srli	a1,t5,0xb
    800036c0:	015f1793          	slli	a5,t5,0x15
    800036c4:	00b7e5b3          	or	a1,a5,a1
    800036c8:	00b54533          	xor	a0,a0,a1
    800036cc:	019f5593          	srli	a1,t5,0x19
    800036d0:	007f1793          	slli	a5,t5,0x7
    800036d4:	00b7e5b3          	or	a1,a5,a1
    800036d8:	00ee0733          	add	a4,t3,a4
    800036dc:	00b54533          	xor	a0,a0,a1
    800036e0:	00c8c5b3          	xor	a1,a7,a2
    800036e4:	00bf75b3          	and	a1,t5,a1
    800036e8:	00c5c5b3          	xor	a1,a1,a2
    800036ec:	00b705b3          	add	a1,a4,a1
    800036f0:	00a58533          	add	a0,a1,a0
    800036f4:	002cd593          	srli	a1,s9,0x2
    800036f8:	01ec9713          	slli	a4,s9,0x1e
    800036fc:	00b765b3          	or	a1,a4,a1
    80003700:	00dcd713          	srli	a4,s9,0xd
    80003704:	013c9793          	slli	a5,s9,0x13
    80003708:	00e7e733          	or	a4,a5,a4
    8000370c:	00e5c5b3          	xor	a1,a1,a4
    80003710:	016cd713          	srli	a4,s9,0x16
    80003714:	00ac9793          	slli	a5,s9,0xa
    80003718:	00e7e733          	or	a4,a5,a4
    8000371c:	00e5c5b3          	xor	a1,a1,a4
    80003720:	018cf7b3          	and	a5,s9,s8
    80003724:	01dc7733          	and	a4,s8,t4
    80003728:	00e7c733          	xor	a4,a5,a4
    8000372c:	01dcf4b3          	and	s1,s9,t4
    80003730:	00974733          	xor	a4,a4,s1
    80003734:	00b705b3          	add	a1,a4,a1
    80003738:	0bc12703          	lw	a4,188(sp)
    8000373c:	00e50533          	add	a0,a0,a4
    80003740:	00a58bb3          	add	s7,a1,a0
    80003744:	00750733          	add	a4,a0,t2
    80003748:	00675513          	srli	a0,a4,0x6
    8000374c:	01a71493          	slli	s1,a4,0x1a
    80003750:	00a4e533          	or	a0,s1,a0
    80003754:	00b75493          	srli	s1,a4,0xb
    80003758:	01571593          	slli	a1,a4,0x15
    8000375c:	0095e5b3          	or	a1,a1,s1
    80003760:	00b54533          	xor	a0,a0,a1
    80003764:	01975593          	srli	a1,a4,0x19
    80003768:	00771493          	slli	s1,a4,0x7
    8000376c:	00b4e5b3          	or	a1,s1,a1
    80003770:	00b54533          	xor	a0,a0,a1
    80003774:	00c905b3          	add	a1,s2,a2
    80003778:	011f4633          	xor	a2,t5,a7
    8000377c:	00c77633          	and	a2,a4,a2
    80003780:	01164633          	xor	a2,a2,a7
    80003784:	00c585b3          	add	a1,a1,a2
    80003788:	00a58533          	add	a0,a1,a0
    8000378c:	002bd593          	srli	a1,s7,0x2
    80003790:	01eb9613          	slli	a2,s7,0x1e
    80003794:	00b665b3          	or	a1,a2,a1
    80003798:	00dbd613          	srli	a2,s7,0xd
    8000379c:	013b9493          	slli	s1,s7,0x13
    800037a0:	00c4e633          	or	a2,s1,a2
    800037a4:	00c5c5b3          	xor	a1,a1,a2
    800037a8:	016bd613          	srli	a2,s7,0x16
    800037ac:	00ab9493          	slli	s1,s7,0xa
    800037b0:	00c4e633          	or	a2,s1,a2
    800037b4:	00c5c5b3          	xor	a1,a1,a2
    800037b8:	018cc633          	xor	a2,s9,s8
    800037bc:	00cbf633          	and	a2,s7,a2
    800037c0:	00f64633          	xor	a2,a2,a5
    800037c4:	0b812783          	lw	a5,184(sp)
    800037c8:	00f50533          	add	a0,a0,a5
    800037cc:	00c585b3          	add	a1,a1,a2
    800037d0:	00a580b3          	add	ra,a1,a0
    800037d4:	01d502b3          	add	t0,a0,t4
    800037d8:	15412a83          	lw	s5,340(sp)
    800037dc:	007ad513          	srli	a0,s5,0x7
    800037e0:	019a9593          	slli	a1,s5,0x19
    800037e4:	00a5e833          	or	a6,a1,a0
    800037e8:	15012603          	lw	a2,336(sp)
    800037ec:	00765593          	srli	a1,a2,0x7
    800037f0:	01961793          	slli	a5,a2,0x19
    800037f4:	00b7e3b3          	or	t2,a5,a1
    800037f8:	16012483          	lw	s1,352(sp)
    800037fc:	0074d793          	srli	a5,s1,0x7
    80003800:	01949513          	slli	a0,s1,0x19
    80003804:	00f56eb3          	or	t4,a0,a5
    80003808:	007a5793          	srli	a5,s4,0x7
    8000380c:	019a1593          	slli	a1,s4,0x19
    80003810:	00f5eb33          	or	s6,a1,a5
    80003814:	012ad793          	srli	a5,s5,0x12
    80003818:	00ea9513          	slli	a0,s5,0xe
    8000381c:	00f56533          	or	a0,a0,a5
    80003820:	01265793          	srli	a5,a2,0x12
    80003824:	00e61593          	slli	a1,a2,0xe
    80003828:	00060693          	mv	a3,a2
    8000382c:	00f5e5b3          	or	a1,a1,a5
    80003830:	0124d793          	srli	a5,s1,0x12
    80003834:	00e49413          	slli	s0,s1,0xe
    80003838:	00048613          	mv	a2,s1
    8000383c:	00f467b3          	or	a5,s0,a5
    80003840:	012a5413          	srli	s0,s4,0x12
    80003844:	00ea1493          	slli	s1,s4,0xe
    80003848:	0084e433          	or	s0,s1,s0
    8000384c:	01054533          	xor	a0,a0,a6
    80003850:	0075c5b3          	xor	a1,a1,t2
    80003854:	01d7c7b3          	xor	a5,a5,t4
    80003858:	016444b3          	xor	s1,s0,s6
    8000385c:	003ad413          	srli	s0,s5,0x3
    80003860:	00854533          	xor	a0,a0,s0
    80003864:	0036d413          	srli	s0,a3,0x3
    80003868:	0085c5b3          	xor	a1,a1,s0
    8000386c:	00365413          	srli	s0,a2,0x3
    80003870:	0087c7b3          	xor	a5,a5,s0
    80003874:	003a5413          	srli	s0,s4,0x3
    80003878:	0084c4b3          	xor	s1,s1,s0
    8000387c:	00d50eb3          	add	t4,a0,a3
    80003880:	00c58833          	add	a6,a1,a2
    80003884:	014787b3          	add	a5,a5,s4
    80003888:	013484b3          	add	s1,s1,s3
    8000388c:	011e5413          	srli	s0,t3,0x11
    80003890:	00fe1513          	slli	a0,t3,0xf
    80003894:	00856533          	or	a0,a0,s0
    80003898:	013e5413          	srli	s0,t3,0x13
    8000389c:	00de1593          	slli	a1,t3,0xd
    800038a0:	0085e5b3          	or	a1,a1,s0
    800038a4:	16812603          	lw	a2,360(sp)
    800038a8:	00c484b3          	add	s1,s1,a2
    800038ac:	00b54533          	xor	a0,a0,a1
    800038b0:	00ae5593          	srli	a1,t3,0xa
    800038b4:	11c12a23          	sw	t3,276(sp)
    800038b8:	00b54533          	xor	a0,a0,a1
    800038bc:	00a48ab3          	add	s5,s1,a0
    800038c0:	01195513          	srli	a0,s2,0x11
    800038c4:	00f91593          	slli	a1,s2,0xf
    800038c8:	00a5e533          	or	a0,a1,a0
    800038cc:	01395593          	srli	a1,s2,0x13
    800038d0:	00d91493          	slli	s1,s2,0xd
    800038d4:	00b4e5b3          	or	a1,s1,a1
    800038d8:	006787b3          	add	a5,a5,t1
    800038dc:	00b54533          	xor	a0,a0,a1
    800038e0:	00a95593          	srli	a1,s2,0xa
    800038e4:	00b54533          	xor	a0,a0,a1
    800038e8:	00a786b3          	add	a3,a5,a0
    800038ec:	011ad513          	srli	a0,s5,0x11
    800038f0:	00fa9593          	slli	a1,s5,0xf
    800038f4:	00a5e533          	or	a0,a1,a0
    800038f8:	013ad593          	srli	a1,s5,0x13
    800038fc:	00da9793          	slli	a5,s5,0xd
    80003900:	00b7e5b3          	or	a1,a5,a1
    80003904:	01b807b3          	add	a5,a6,s11
    80003908:	00b54533          	xor	a0,a0,a1
    8000390c:	00aad593          	srli	a1,s5,0xa
    80003910:	00b54533          	xor	a0,a0,a1
    80003914:	00a78333          	add	t1,a5,a0
    80003918:	0116d513          	srli	a0,a3,0x11
    8000391c:	00f69593          	slli	a1,a3,0xf
    80003920:	00a5e533          	or	a0,a1,a0
    80003924:	0136d593          	srli	a1,a3,0x13
    80003928:	00d69793          	slli	a5,a3,0xd
    8000392c:	00b7e5b3          	or	a1,a5,a1
    80003930:	01fe87b3          	add	a5,t4,t6
    80003934:	00b54533          	xor	a0,a0,a1
    80003938:	00a6d593          	srli	a1,a3,0xa
    8000393c:	00068413          	mv	s0,a3
    80003940:	16d12023          	sw	a3,352(sp)
    80003944:	00b54533          	xor	a0,a0,a1
    80003948:	00a78b33          	add	s6,a5,a0
    8000394c:	0062d513          	srli	a0,t0,0x6
    80003950:	01a29593          	slli	a1,t0,0x1a
    80003954:	00a5e533          	or	a0,a1,a0
    80003958:	00b2d593          	srli	a1,t0,0xb
    8000395c:	01529793          	slli	a5,t0,0x15
    80003960:	00b7e5b3          	or	a1,a5,a1
    80003964:	00b54533          	xor	a0,a0,a1
    80003968:	0192d593          	srli	a1,t0,0x19
    8000396c:	00729793          	slli	a5,t0,0x7
    80003970:	00b7e5b3          	or	a1,a5,a1
    80003974:	011a86b3          	add	a3,s5,a7
    80003978:	15512423          	sw	s5,328(sp)
    8000397c:	00b54533          	xor	a0,a0,a1
    80003980:	01e745b3          	xor	a1,a4,t5
    80003984:	00b2f5b3          	and	a1,t0,a1
    80003988:	01e5c5b3          	xor	a1,a1,t5
    8000398c:	00b685b3          	add	a1,a3,a1
    80003990:	00a58533          	add	a0,a1,a0
    80003994:	0020d593          	srli	a1,ra,0x2
    80003998:	01e09693          	slli	a3,ra,0x1e
    8000399c:	00b6e5b3          	or	a1,a3,a1
    800039a0:	00d0d693          	srli	a3,ra,0xd
    800039a4:	01309793          	slli	a5,ra,0x13
    800039a8:	00d7e6b3          	or	a3,a5,a3
    800039ac:	00d5c5b3          	xor	a1,a1,a3
    800039b0:	0160d693          	srli	a3,ra,0x16
    800039b4:	00a09793          	slli	a5,ra,0xa
    800039b8:	00d7e6b3          	or	a3,a5,a3
    800039bc:	00d5c5b3          	xor	a1,a1,a3
    800039c0:	0170f6b3          	and	a3,ra,s7
    800039c4:	019bf7b3          	and	a5,s7,s9
    800039c8:	00f6c7b3          	xor	a5,a3,a5
    800039cc:	0190f4b3          	and	s1,ra,s9
    800039d0:	0097c7b3          	xor	a5,a5,s1
    800039d4:	00b785b3          	add	a1,a5,a1
    800039d8:	0b412783          	lw	a5,180(sp)
    800039dc:	00f50533          	add	a0,a0,a5
    800039e0:	00a58fb3          	add	t6,a1,a0
    800039e4:	018509b3          	add	s3,a0,s8
    800039e8:	0069d513          	srli	a0,s3,0x6
    800039ec:	01a99593          	slli	a1,s3,0x1a
    800039f0:	00a5e533          	or	a0,a1,a0
    800039f4:	00b9d593          	srli	a1,s3,0xb
    800039f8:	01599493          	slli	s1,s3,0x15
    800039fc:	00b4e5b3          	or	a1,s1,a1
    80003a00:	00b54533          	xor	a0,a0,a1
    80003a04:	0199d593          	srli	a1,s3,0x19
    80003a08:	00799493          	slli	s1,s3,0x7
    80003a0c:	00b4e5b3          	or	a1,s1,a1
    80003a10:	00b54533          	xor	a0,a0,a1
    80003a14:	01e405b3          	add	a1,s0,t5
    80003a18:	00e2c4b3          	xor	s1,t0,a4
    80003a1c:	0099f4b3          	and	s1,s3,s1
    80003a20:	00e4c4b3          	xor	s1,s1,a4
    80003a24:	009585b3          	add	a1,a1,s1
    80003a28:	00a58533          	add	a0,a1,a0
    80003a2c:	002fd593          	srli	a1,t6,0x2
    80003a30:	01ef9493          	slli	s1,t6,0x1e
    80003a34:	00b4e5b3          	or	a1,s1,a1
    80003a38:	00dfd493          	srli	s1,t6,0xd
    80003a3c:	013f9413          	slli	s0,t6,0x13
    80003a40:	009464b3          	or	s1,s0,s1
    80003a44:	0095c5b3          	xor	a1,a1,s1
    80003a48:	016fd493          	srli	s1,t6,0x16
    80003a4c:	00af9413          	slli	s0,t6,0xa
    80003a50:	009464b3          	or	s1,s0,s1
    80003a54:	0095c5b3          	xor	a1,a1,s1
    80003a58:	0170c4b3          	xor	s1,ra,s7
    80003a5c:	009ff4b3          	and	s1,t6,s1
    80003a60:	00d4c6b3          	xor	a3,s1,a3
    80003a64:	0b012483          	lw	s1,176(sp)
    80003a68:	00950533          	add	a0,a0,s1
    80003a6c:	00d585b3          	add	a1,a1,a3
    80003a70:	00a58a33          	add	s4,a1,a0
    80003a74:	019503b3          	add	t2,a0,s9
    80003a78:	0063d513          	srli	a0,t2,0x6
    80003a7c:	01a39593          	slli	a1,t2,0x1a
    80003a80:	00a5e533          	or	a0,a1,a0
    80003a84:	00b3d593          	srli	a1,t2,0xb
    80003a88:	01539493          	slli	s1,t2,0x15
    80003a8c:	00b4e5b3          	or	a1,s1,a1
    80003a90:	00b54533          	xor	a0,a0,a1
    80003a94:	0193d593          	srli	a1,t2,0x19
    80003a98:	00739493          	slli	s1,t2,0x7
    80003a9c:	00b4e5b3          	or	a1,s1,a1
    80003aa0:	00e30733          	add	a4,t1,a4
    80003aa4:	00b54533          	xor	a0,a0,a1
    80003aa8:	0059c5b3          	xor	a1,s3,t0
    80003aac:	00b3f5b3          	and	a1,t2,a1
    80003ab0:	0055c5b3          	xor	a1,a1,t0
    80003ab4:	00b705b3          	add	a1,a4,a1
    80003ab8:	00a58533          	add	a0,a1,a0
    80003abc:	002a5593          	srli	a1,s4,0x2
    80003ac0:	01ea1713          	slli	a4,s4,0x1e
    80003ac4:	00b765b3          	or	a1,a4,a1
    80003ac8:	00da5713          	srli	a4,s4,0xd
    80003acc:	013a1493          	slli	s1,s4,0x13
    80003ad0:	00e4e733          	or	a4,s1,a4
    80003ad4:	00e5c5b3          	xor	a1,a1,a4
    80003ad8:	016a5713          	srli	a4,s4,0x16
    80003adc:	00aa1493          	slli	s1,s4,0xa
    80003ae0:	00e4e733          	or	a4,s1,a4
    80003ae4:	00e5c5b3          	xor	a1,a1,a4
    80003ae8:	01fa74b3          	and	s1,s4,t6
    80003aec:	001ff733          	and	a4,t6,ra
    80003af0:	00e4c733          	xor	a4,s1,a4
    80003af4:	001a7433          	and	s0,s4,ra
    80003af8:	00874733          	xor	a4,a4,s0
    80003afc:	00b705b3          	add	a1,a4,a1
    80003b00:	0ac12703          	lw	a4,172(sp)
    80003b04:	00e50533          	add	a0,a0,a4
    80003b08:	00a58c33          	add	s8,a1,a0
    80003b0c:	017508b3          	add	a7,a0,s7
    80003b10:	0068d513          	srli	a0,a7,0x6
    80003b14:	01a89593          	slli	a1,a7,0x1a
    80003b18:	00a5e533          	or	a0,a1,a0
    80003b1c:	00b8d593          	srli	a1,a7,0xb
    80003b20:	01589413          	slli	s0,a7,0x15
    80003b24:	00b465b3          	or	a1,s0,a1
    80003b28:	00b54533          	xor	a0,a0,a1
    80003b2c:	0198d593          	srli	a1,a7,0x19
    80003b30:	00789413          	slli	s0,a7,0x7
    80003b34:	00b465b3          	or	a1,s0,a1
    80003b38:	00b54533          	xor	a0,a0,a1
    80003b3c:	005b05b3          	add	a1,s6,t0
    80003b40:	0133c633          	xor	a2,t2,s3
    80003b44:	00c8f633          	and	a2,a7,a2
    80003b48:	01364633          	xor	a2,a2,s3
    80003b4c:	00c585b3          	add	a1,a1,a2
    80003b50:	00a58533          	add	a0,a1,a0
    80003b54:	002c5593          	srli	a1,s8,0x2
    80003b58:	01ec1613          	slli	a2,s8,0x1e
    80003b5c:	00b665b3          	or	a1,a2,a1
    80003b60:	00dc5613          	srli	a2,s8,0xd
    80003b64:	013c1413          	slli	s0,s8,0x13
    80003b68:	00c46633          	or	a2,s0,a2
    80003b6c:	00c5c5b3          	xor	a1,a1,a2
    80003b70:	016c5613          	srli	a2,s8,0x16
    80003b74:	00ac1413          	slli	s0,s8,0xa
    80003b78:	00c46633          	or	a2,s0,a2
    80003b7c:	00c5c5b3          	xor	a1,a1,a2
    80003b80:	01fa4633          	xor	a2,s4,t6
    80003b84:	00cc7633          	and	a2,s8,a2
    80003b88:	00964633          	xor	a2,a2,s1
    80003b8c:	0a812483          	lw	s1,168(sp)
    80003b90:	00950533          	add	a0,a0,s1
    80003b94:	00c585b3          	add	a1,a1,a2
    80003b98:	00a58cb3          	add	s9,a1,a0
    80003b9c:	00150bb3          	add	s7,a0,ra
    80003ba0:	000d0693          	mv	a3,s10
    80003ba4:	007d5513          	srli	a0,s10,0x7
    80003ba8:	019d1493          	slli	s1,s10,0x19
    80003bac:	00a4e2b3          	or	t0,s1,a0
    80003bb0:	11c12703          	lw	a4,284(sp)
    80003bb4:	00775493          	srli	s1,a4,0x7
    80003bb8:	01971413          	slli	s0,a4,0x19
    80003bbc:	00946eb3          	or	t4,s0,s1
    80003bc0:	15c12783          	lw	a5,348(sp)
    80003bc4:	0077d413          	srli	s0,a5,0x7
    80003bc8:	01979513          	slli	a0,a5,0x19
    80003bcc:	00856f33          	or	t5,a0,s0
    80003bd0:	14412583          	lw	a1,324(sp)
    80003bd4:	0075d413          	srli	s0,a1,0x7
    80003bd8:	01959493          	slli	s1,a1,0x19
    80003bdc:	0084e833          	or	a6,s1,s0
    80003be0:	012d5413          	srli	s0,s10,0x12
    80003be4:	00ed1513          	slli	a0,s10,0xe
    80003be8:	11a12823          	sw	s10,272(sp)
    80003bec:	008560b3          	or	ra,a0,s0
    80003bf0:	01275413          	srli	s0,a4,0x12
    80003bf4:	00e71493          	slli	s1,a4,0xe
    80003bf8:	0084e433          	or	s0,s1,s0
    80003bfc:	0127d493          	srli	s1,a5,0x12
    80003c00:	00e79613          	slli	a2,a5,0xe
    80003c04:	00078d13          	mv	s10,a5
    80003c08:	00966633          	or	a2,a2,s1
    80003c0c:	0125d493          	srli	s1,a1,0x12
    80003c10:	00e59513          	slli	a0,a1,0xe
    80003c14:	00058793          	mv	a5,a1
    80003c18:	00956533          	or	a0,a0,s1
    80003c1c:	0050c4b3          	xor	s1,ra,t0
    80003c20:	01d44433          	xor	s0,s0,t4
    80003c24:	01e64633          	xor	a2,a2,t5
    80003c28:	01054533          	xor	a0,a0,a6
    80003c2c:	0036d593          	srli	a1,a3,0x3
    80003c30:	00b4c5b3          	xor	a1,s1,a1
    80003c34:	00375493          	srli	s1,a4,0x3
    80003c38:	009444b3          	xor	s1,s0,s1
    80003c3c:	003d5413          	srli	s0,s10,0x3
    80003c40:	00864633          	xor	a2,a2,s0
    80003c44:	0037d413          	srli	s0,a5,0x3
    80003c48:	00854533          	xor	a0,a0,s0
    80003c4c:	00e582b3          	add	t0,a1,a4
    80003c50:	01a48eb3          	add	t4,s1,s10
    80003c54:	00f60633          	add	a2,a2,a5
    80003c58:	15412583          	lw	a1,340(sp)
    80003c5c:	00b50533          	add	a0,a0,a1
    80003c60:	14612823          	sw	t1,336(sp)
    80003c64:	01135413          	srli	s0,t1,0x11
    80003c68:	00f31593          	slli	a1,t1,0xf
    80003c6c:	0085e5b3          	or	a1,a1,s0
    80003c70:	01335413          	srli	s0,t1,0x13
    80003c74:	00d31493          	slli	s1,t1,0xd
    80003c78:	0084e4b3          	or	s1,s1,s0
    80003c7c:	16412683          	lw	a3,356(sp)
    80003c80:	00d50533          	add	a0,a0,a3
    80003c84:	0095c5b3          	xor	a1,a1,s1
    80003c88:	00a35493          	srli	s1,t1,0xa
    80003c8c:	0095c5b3          	xor	a1,a1,s1
    80003c90:	00b50db3          	add	s11,a0,a1
    80003c94:	011b5513          	srli	a0,s6,0x11
    80003c98:	00fb1593          	slli	a1,s6,0xf
    80003c9c:	00a5e533          	or	a0,a1,a0
    80003ca0:	013b5593          	srli	a1,s6,0x13
    80003ca4:	00db1493          	slli	s1,s6,0xd
    80003ca8:	00b4e5b3          	or	a1,s1,a1
    80003cac:	01c60633          	add	a2,a2,t3
    80003cb0:	00b54533          	xor	a0,a0,a1
    80003cb4:	00ab5593          	srli	a1,s6,0xa
    80003cb8:	00b54533          	xor	a0,a0,a1
    80003cbc:	00a60733          	add	a4,a2,a0
    80003cc0:	011dd513          	srli	a0,s11,0x11
    80003cc4:	00fd9593          	slli	a1,s11,0xf
    80003cc8:	00a5e533          	or	a0,a1,a0
    80003ccc:	013dd593          	srli	a1,s11,0x13
    80003cd0:	00dd9613          	slli	a2,s11,0xd
    80003cd4:	00b665b3          	or	a1,a2,a1
    80003cd8:	012e8633          	add	a2,t4,s2
    80003cdc:	00b54533          	xor	a0,a0,a1
    80003ce0:	00add593          	srli	a1,s11,0xa
    80003ce4:	00b54533          	xor	a0,a0,a1
    80003ce8:	00a600b3          	add	ra,a2,a0
    80003cec:	01175513          	srli	a0,a4,0x11
    80003cf0:	00f71593          	slli	a1,a4,0xf
    80003cf4:	00a5e533          	or	a0,a1,a0
    80003cf8:	01375593          	srli	a1,a4,0x13
    80003cfc:	00d71613          	slli	a2,a4,0xd
    80003d00:	00b665b3          	or	a1,a2,a1
    80003d04:	01528633          	add	a2,t0,s5
    80003d08:	00b54533          	xor	a0,a0,a1
    80003d0c:	00a75593          	srli	a1,a4,0xa
    80003d10:	00b54533          	xor	a0,a0,a1
    80003d14:	00a60f33          	add	t5,a2,a0
    80003d18:	006bd513          	srli	a0,s7,0x6
    80003d1c:	01ab9593          	slli	a1,s7,0x1a
    80003d20:	00a5e533          	or	a0,a1,a0
    80003d24:	00bbd593          	srli	a1,s7,0xb
    80003d28:	015b9613          	slli	a2,s7,0x15
    80003d2c:	00b665b3          	or	a1,a2,a1
    80003d30:	00b54533          	xor	a0,a0,a1
    80003d34:	019bd593          	srli	a1,s7,0x19
    80003d38:	007b9613          	slli	a2,s7,0x7
    80003d3c:	00b665b3          	or	a1,a2,a1
    80003d40:	013d8633          	add	a2,s11,s3
    80003d44:	15b12e23          	sw	s11,348(sp)
    80003d48:	00b54533          	xor	a0,a0,a1
    80003d4c:	0078c5b3          	xor	a1,a7,t2
    80003d50:	00bbf5b3          	and	a1,s7,a1
    80003d54:	0075c5b3          	xor	a1,a1,t2
    80003d58:	00b605b3          	add	a1,a2,a1
    80003d5c:	00a58533          	add	a0,a1,a0
    80003d60:	002cd593          	srli	a1,s9,0x2
    80003d64:	01ec9613          	slli	a2,s9,0x1e
    80003d68:	00b665b3          	or	a1,a2,a1
    80003d6c:	00dcd613          	srli	a2,s9,0xd
    80003d70:	013c9793          	slli	a5,s9,0x13
    80003d74:	00c7e633          	or	a2,a5,a2
    80003d78:	00c5c5b3          	xor	a1,a1,a2
    80003d7c:	016cd613          	srli	a2,s9,0x16
    80003d80:	00ac9793          	slli	a5,s9,0xa
    80003d84:	00c7e633          	or	a2,a5,a2
    80003d88:	00c5c5b3          	xor	a1,a1,a2
    80003d8c:	018cf633          	and	a2,s9,s8
    80003d90:	014c77b3          	and	a5,s8,s4
    80003d94:	00f647b3          	xor	a5,a2,a5
    80003d98:	014cf4b3          	and	s1,s9,s4
    80003d9c:	0097c7b3          	xor	a5,a5,s1
    80003da0:	00b785b3          	add	a1,a5,a1
    80003da4:	0a412783          	lw	a5,164(sp)
    80003da8:	00f50533          	add	a0,a0,a5
    80003dac:	00a589b3          	add	s3,a1,a0
    80003db0:	01f502b3          	add	t0,a0,t6
    80003db4:	0062d593          	srli	a1,t0,0x6
    80003db8:	01a29793          	slli	a5,t0,0x1a
    80003dbc:	00b7e5b3          	or	a1,a5,a1
    80003dc0:	00b2d793          	srli	a5,t0,0xb
    80003dc4:	01529413          	slli	s0,t0,0x15
    80003dc8:	00f467b3          	or	a5,s0,a5
    80003dcc:	00f5c5b3          	xor	a1,a1,a5
    80003dd0:	0192d793          	srli	a5,t0,0x19
    80003dd4:	00729413          	slli	s0,t0,0x7
    80003dd8:	00f467b3          	or	a5,s0,a5
    80003ddc:	00f5c5b3          	xor	a1,a1,a5
    80003de0:	007706b3          	add	a3,a4,t2
    80003de4:	00070e93          	mv	t4,a4
    80003de8:	14e12223          	sw	a4,324(sp)
    80003dec:	011bc7b3          	xor	a5,s7,a7
    80003df0:	00f2f7b3          	and	a5,t0,a5
    80003df4:	0117c7b3          	xor	a5,a5,a7
    80003df8:	00f686b3          	add	a3,a3,a5
    80003dfc:	00b685b3          	add	a1,a3,a1
    80003e00:	0029d693          	srli	a3,s3,0x2
    80003e04:	01e99793          	slli	a5,s3,0x1e
    80003e08:	00d7e6b3          	or	a3,a5,a3
    80003e0c:	00d9d793          	srli	a5,s3,0xd
    80003e10:	01399413          	slli	s0,s3,0x13
    80003e14:	00f467b3          	or	a5,s0,a5
    80003e18:	00f6c6b3          	xor	a3,a3,a5
    80003e1c:	0169d793          	srli	a5,s3,0x16
    80003e20:	00a99413          	slli	s0,s3,0xa
    80003e24:	00f467b3          	or	a5,s0,a5
    80003e28:	00f6c6b3          	xor	a3,a3,a5
    80003e2c:	018cc7b3          	xor	a5,s9,s8
    80003e30:	00f9f7b3          	and	a5,s3,a5
    80003e34:	00c7c633          	xor	a2,a5,a2
    80003e38:	0a012783          	lw	a5,160(sp)
    80003e3c:	00f585b3          	add	a1,a1,a5
    80003e40:	00c68633          	add	a2,a3,a2
    80003e44:	00b60fb3          	add	t6,a2,a1
    80003e48:	01458ab3          	add	s5,a1,s4
    80003e4c:	006ad593          	srli	a1,s5,0x6
    80003e50:	01aa9613          	slli	a2,s5,0x1a
    80003e54:	00b665b3          	or	a1,a2,a1
    80003e58:	00bad613          	srli	a2,s5,0xb
    80003e5c:	015a9793          	slli	a5,s5,0x15
    80003e60:	00c7e633          	or	a2,a5,a2
    80003e64:	00c5c5b3          	xor	a1,a1,a2
    80003e68:	019ad613          	srli	a2,s5,0x19
    80003e6c:	007a9793          	slli	a5,s5,0x7
    80003e70:	00c7e633          	or	a2,a5,a2
    80003e74:	01108733          	add	a4,ra,a7
    80003e78:	00c5c5b3          	xor	a1,a1,a2
    80003e7c:	0172c633          	xor	a2,t0,s7
    80003e80:	00caf633          	and	a2,s5,a2
    80003e84:	01764633          	xor	a2,a2,s7
    80003e88:	00c70633          	add	a2,a4,a2
    80003e8c:	00b605b3          	add	a1,a2,a1
    80003e90:	002fd613          	srli	a2,t6,0x2
    80003e94:	01ef9713          	slli	a4,t6,0x1e
    80003e98:	00c76633          	or	a2,a4,a2
    80003e9c:	00dfd713          	srli	a4,t6,0xd
    80003ea0:	013f9793          	slli	a5,t6,0x13
    80003ea4:	00e7e733          	or	a4,a5,a4
    80003ea8:	00e64633          	xor	a2,a2,a4
    80003eac:	016fd713          	srli	a4,t6,0x16
    80003eb0:	00af9793          	slli	a5,t6,0xa
    80003eb4:	00e7e733          	or	a4,a5,a4
    80003eb8:	00e64633          	xor	a2,a2,a4
    80003ebc:	013ff7b3          	and	a5,t6,s3
    80003ec0:	0199f733          	and	a4,s3,s9
    80003ec4:	00e7c733          	xor	a4,a5,a4
    80003ec8:	019ff433          	and	s0,t6,s9
    80003ecc:	00874733          	xor	a4,a4,s0
    80003ed0:	00c70633          	add	a2,a4,a2
    80003ed4:	09c12703          	lw	a4,156(sp)
    80003ed8:	00e585b3          	add	a1,a1,a4
    80003edc:	00b60333          	add	t1,a2,a1
    80003ee0:	018583b3          	add	t2,a1,s8
    80003ee4:	0063d593          	srli	a1,t2,0x6
    80003ee8:	01a39613          	slli	a2,t2,0x1a
    80003eec:	00b665b3          	or	a1,a2,a1
    80003ef0:	00b3d613          	srli	a2,t2,0xb
    80003ef4:	01539413          	slli	s0,t2,0x15
    80003ef8:	00c46633          	or	a2,s0,a2
    80003efc:	00c5c5b3          	xor	a1,a1,a2
    80003f00:	0193d613          	srli	a2,t2,0x19
    80003f04:	00739413          	slli	s0,t2,0x7
    80003f08:	00c46633          	or	a2,s0,a2
    80003f0c:	00c5c5b3          	xor	a1,a1,a2
    80003f10:	017f0633          	add	a2,t5,s7
    80003f14:	005ac433          	xor	s0,s5,t0
    80003f18:	0083f433          	and	s0,t2,s0
    80003f1c:	00544433          	xor	s0,s0,t0
    80003f20:	00860633          	add	a2,a2,s0
    80003f24:	00b605b3          	add	a1,a2,a1
    80003f28:	00235613          	srli	a2,t1,0x2
    80003f2c:	01e31413          	slli	s0,t1,0x1e
    80003f30:	00c46633          	or	a2,s0,a2
    80003f34:	00d35413          	srli	s0,t1,0xd
    80003f38:	01331493          	slli	s1,t1,0x13
    80003f3c:	0084e4b3          	or	s1,s1,s0
    80003f40:	00964633          	xor	a2,a2,s1
    80003f44:	01635493          	srli	s1,t1,0x16
    80003f48:	00a31413          	slli	s0,t1,0xa
    80003f4c:	009464b3          	or	s1,s0,s1
    80003f50:	00964633          	xor	a2,a2,s1
    80003f54:	013fc4b3          	xor	s1,t6,s3
    80003f58:	009374b3          	and	s1,t1,s1
    80003f5c:	00f4c7b3          	xor	a5,s1,a5
    80003f60:	09812483          	lw	s1,152(sp)
    80003f64:	009585b3          	add	a1,a1,s1
    80003f68:	00f60633          	add	a2,a2,a5
    80003f6c:	00b608b3          	add	a7,a2,a1
    80003f70:	01958cb3          	add	s9,a1,s9
    80003f74:	14c12703          	lw	a4,332(sp)
    80003f78:	00775613          	srli	a2,a4,0x7
    80003f7c:	01971493          	slli	s1,a4,0x19
    80003f80:	00c4ee33          	or	t3,s1,a2
    80003f84:	11812803          	lw	a6,280(sp)
    80003f88:	00785493          	srli	s1,a6,0x7
    80003f8c:	01981413          	slli	s0,a6,0x19
    80003f90:	00946a33          	or	s4,s0,s1
    80003f94:	12012583          	lw	a1,288(sp)
    80003f98:	0075d413          	srli	s0,a1,0x7
    80003f9c:	01959613          	slli	a2,a1,0x19
    80003fa0:	00866bb3          	or	s7,a2,s0
    80003fa4:	16812603          	lw	a2,360(sp)
    80003fa8:	00765413          	srli	s0,a2,0x7
    80003fac:	01961493          	slli	s1,a2,0x19
    80003fb0:	00060693          	mv	a3,a2
    80003fb4:	0084ec33          	or	s8,s1,s0
    80003fb8:	01275493          	srli	s1,a4,0x12
    80003fbc:	00e71613          	slli	a2,a4,0xe
    80003fc0:	00966633          	or	a2,a2,s1
    80003fc4:	01285493          	srli	s1,a6,0x12
    80003fc8:	00e81413          	slli	s0,a6,0xe
    80003fcc:	00946433          	or	s0,s0,s1
    80003fd0:	0125d493          	srli	s1,a1,0x12
    80003fd4:	00e59793          	slli	a5,a1,0xe
    80003fd8:	00058513          	mv	a0,a1
    80003fdc:	0097e7b3          	or	a5,a5,s1
    80003fe0:	0126d493          	srli	s1,a3,0x12
    80003fe4:	00e69d13          	slli	s10,a3,0xe
    80003fe8:	009d64b3          	or	s1,s10,s1
    80003fec:	01c64633          	xor	a2,a2,t3
    80003ff0:	01444433          	xor	s0,s0,s4
    80003ff4:	0177c7b3          	xor	a5,a5,s7
    80003ff8:	0184c4b3          	xor	s1,s1,s8
    80003ffc:	00375593          	srli	a1,a4,0x3
    80004000:	00b645b3          	xor	a1,a2,a1
    80004004:	00385613          	srli	a2,a6,0x3
    80004008:	00c44633          	xor	a2,s0,a2
    8000400c:	00355413          	srli	s0,a0,0x3
    80004010:	0087c7b3          	xor	a5,a5,s0
    80004014:	0036d413          	srli	s0,a3,0x3
    80004018:	0084c433          	xor	s0,s1,s0
    8000401c:	01058a33          	add	s4,a1,a6
    80004020:	00a60c33          	add	s8,a2,a0
    80004024:	00d787b3          	add	a5,a5,a3
    80004028:	11012503          	lw	a0,272(sp)
    8000402c:	00a40433          	add	s0,s0,a0
    80004030:	0110d493          	srli	s1,ra,0x11
    80004034:	00f09593          	slli	a1,ra,0xf
    80004038:	0095e5b3          	or	a1,a1,s1
    8000403c:	0130d493          	srli	s1,ra,0x13
    80004040:	00d09613          	slli	a2,ra,0xd
    80004044:	00966633          	or	a2,a2,s1
    80004048:	16012683          	lw	a3,352(sp)
    8000404c:	00d40433          	add	s0,s0,a3
    80004050:	00c5c5b3          	xor	a1,a1,a2
    80004054:	00a0d613          	srli	a2,ra,0xa
    80004058:	00c5c5b3          	xor	a1,a1,a2
    8000405c:	00b406b3          	add	a3,s0,a1
    80004060:	011f5593          	srli	a1,t5,0x11
    80004064:	00ff1613          	slli	a2,t5,0xf
    80004068:	00b665b3          	or	a1,a2,a1
    8000406c:	013f5613          	srli	a2,t5,0x13
    80004070:	00df1413          	slli	s0,t5,0xd
    80004074:	00c46633          	or	a2,s0,a2
    80004078:	15012503          	lw	a0,336(sp)
    8000407c:	00a787b3          	add	a5,a5,a0
    80004080:	00c5c5b3          	xor	a1,a1,a2
    80004084:	00af5613          	srli	a2,t5,0xa
    80004088:	00c5c5b3          	xor	a1,a1,a2
    8000408c:	00b784b3          	add	s1,a5,a1
    80004090:	0116d593          	srli	a1,a3,0x11
    80004094:	00f69613          	slli	a2,a3,0xf
    80004098:	00b665b3          	or	a1,a2,a1
    8000409c:	0136d613          	srli	a2,a3,0x13
    800040a0:	00d69793          	slli	a5,a3,0xd
    800040a4:	00c7e633          	or	a2,a5,a2
    800040a8:	016c07b3          	add	a5,s8,s6
    800040ac:	00c5c5b3          	xor	a1,a1,a2
    800040b0:	00a6d613          	srli	a2,a3,0xa
    800040b4:	16d12423          	sw	a3,360(sp)
    800040b8:	00c5c5b3          	xor	a1,a1,a2
    800040bc:	00b78bb3          	add	s7,a5,a1
    800040c0:	0114d593          	srli	a1,s1,0x11
    800040c4:	00f49793          	slli	a5,s1,0xf
    800040c8:	00b7e5b3          	or	a1,a5,a1
    800040cc:	0134d793          	srli	a5,s1,0x13
    800040d0:	00d49413          	slli	s0,s1,0xd
    800040d4:	00f467b3          	or	a5,s0,a5
    800040d8:	01ba0433          	add	s0,s4,s11
    800040dc:	00f5c5b3          	xor	a1,a1,a5
    800040e0:	00a4d793          	srli	a5,s1,0xa
    800040e4:	00048713          	mv	a4,s1
    800040e8:	14912a23          	sw	s1,340(sp)
    800040ec:	00f5c5b3          	xor	a1,a1,a5
    800040f0:	00b40d33          	add	s10,s0,a1
    800040f4:	006cd593          	srli	a1,s9,0x6
    800040f8:	01ac9793          	slli	a5,s9,0x1a
    800040fc:	00b7e5b3          	or	a1,a5,a1
    80004100:	00bcd793          	srli	a5,s9,0xb
    80004104:	015c9493          	slli	s1,s9,0x15
    80004108:	00f4e7b3          	or	a5,s1,a5
    8000410c:	00f5c5b3          	xor	a1,a1,a5
    80004110:	019cd793          	srli	a5,s9,0x19
    80004114:	007c9493          	slli	s1,s9,0x7
    80004118:	00f4e7b3          	or	a5,s1,a5
    8000411c:	00568533          	add	a0,a3,t0
    80004120:	00f5c5b3          	xor	a1,a1,a5
    80004124:	0153c7b3          	xor	a5,t2,s5
    80004128:	00fcf7b3          	and	a5,s9,a5
    8000412c:	0157c7b3          	xor	a5,a5,s5
    80004130:	00f50533          	add	a0,a0,a5
    80004134:	00b50533          	add	a0,a0,a1
    80004138:	0028d593          	srli	a1,a7,0x2
    8000413c:	01e89793          	slli	a5,a7,0x1e
    80004140:	00b7e5b3          	or	a1,a5,a1
    80004144:	00d8d793          	srli	a5,a7,0xd
    80004148:	01389493          	slli	s1,a7,0x13
    8000414c:	00f4e7b3          	or	a5,s1,a5
    80004150:	00f5c5b3          	xor	a1,a1,a5
    80004154:	0168d793          	srli	a5,a7,0x16
    80004158:	00a89493          	slli	s1,a7,0xa
    8000415c:	00f4e7b3          	or	a5,s1,a5
    80004160:	00f5c5b3          	xor	a1,a1,a5
    80004164:	0068f7b3          	and	a5,a7,t1
    80004168:	01f374b3          	and	s1,t1,t6
    8000416c:	0097c4b3          	xor	s1,a5,s1
    80004170:	01f8f633          	and	a2,a7,t6
    80004174:	00c4c633          	xor	a2,s1,a2
    80004178:	00b605b3          	add	a1,a2,a1
    8000417c:	09412603          	lw	a2,148(sp)
    80004180:	00c50533          	add	a0,a0,a2
    80004184:	00a58c33          	add	s8,a1,a0
    80004188:	01350533          	add	a0,a0,s3
    8000418c:	00655593          	srli	a1,a0,0x6
    80004190:	01a51613          	slli	a2,a0,0x1a
    80004194:	00b665b3          	or	a1,a2,a1
    80004198:	00b55613          	srli	a2,a0,0xb
    8000419c:	01551493          	slli	s1,a0,0x15
    800041a0:	00c4e633          	or	a2,s1,a2
    800041a4:	00c5c5b3          	xor	a1,a1,a2
    800041a8:	01955613          	srli	a2,a0,0x19
    800041ac:	00751493          	slli	s1,a0,0x7
    800041b0:	00c4e633          	or	a2,s1,a2
    800041b4:	00c5c5b3          	xor	a1,a1,a2
    800041b8:	01570633          	add	a2,a4,s5
    800041bc:	007cc6b3          	xor	a3,s9,t2
    800041c0:	00d576b3          	and	a3,a0,a3
    800041c4:	0076c6b3          	xor	a3,a3,t2
    800041c8:	00d60633          	add	a2,a2,a3
    800041cc:	00b605b3          	add	a1,a2,a1
    800041d0:	002c5613          	srli	a2,s8,0x2
    800041d4:	01ec1693          	slli	a3,s8,0x1e
    800041d8:	00c6e633          	or	a2,a3,a2
    800041dc:	00dc5693          	srli	a3,s8,0xd
    800041e0:	013c1493          	slli	s1,s8,0x13
    800041e4:	00d4e6b3          	or	a3,s1,a3
    800041e8:	00d64633          	xor	a2,a2,a3
    800041ec:	016c5693          	srli	a3,s8,0x16
    800041f0:	00ac1493          	slli	s1,s8,0xa
    800041f4:	00d4e6b3          	or	a3,s1,a3
    800041f8:	00d64633          	xor	a2,a2,a3
    800041fc:	0068c6b3          	xor	a3,a7,t1
    80004200:	00dc76b3          	and	a3,s8,a3
    80004204:	00f6c6b3          	xor	a3,a3,a5
    80004208:	09012783          	lw	a5,144(sp)
    8000420c:	00f585b3          	add	a1,a1,a5
    80004210:	00d60633          	add	a2,a2,a3
    80004214:	00b60e33          	add	t3,a2,a1
    80004218:	01f58a33          	add	s4,a1,t6
    8000421c:	006a5593          	srli	a1,s4,0x6
    80004220:	01aa1613          	slli	a2,s4,0x1a
    80004224:	00b665b3          	or	a1,a2,a1
    80004228:	00ba5613          	srli	a2,s4,0xb
    8000422c:	015a1693          	slli	a3,s4,0x15
    80004230:	00c6e633          	or	a2,a3,a2
    80004234:	00c5c5b3          	xor	a1,a1,a2
    80004238:	019a5613          	srli	a2,s4,0x19
    8000423c:	007a1693          	slli	a3,s4,0x7
    80004240:	00c6e633          	or	a2,a3,a2
    80004244:	007b86b3          	add	a3,s7,t2
    80004248:	00c5c5b3          	xor	a1,a1,a2
    8000424c:	01954633          	xor	a2,a0,s9
    80004250:	00ca7633          	and	a2,s4,a2
    80004254:	01964633          	xor	a2,a2,s9
    80004258:	00c68633          	add	a2,a3,a2
    8000425c:	00b605b3          	add	a1,a2,a1
    80004260:	002e5613          	srli	a2,t3,0x2
    80004264:	01ee1693          	slli	a3,t3,0x1e
    80004268:	00c6e633          	or	a2,a3,a2
    8000426c:	00de5693          	srli	a3,t3,0xd
    80004270:	013e1713          	slli	a4,t3,0x13
    80004274:	00d766b3          	or	a3,a4,a3
    80004278:	00d64633          	xor	a2,a2,a3
    8000427c:	016e5693          	srli	a3,t3,0x16
    80004280:	00ae1713          	slli	a4,t3,0xa
    80004284:	00d766b3          	or	a3,a4,a3
    80004288:	00d64633          	xor	a2,a2,a3
    8000428c:	018e7733          	and	a4,t3,s8
    80004290:	011c76b3          	and	a3,s8,a7
    80004294:	00d746b3          	xor	a3,a4,a3
    80004298:	011e77b3          	and	a5,t3,a7
    8000429c:	00f6c6b3          	xor	a3,a3,a5
    800042a0:	00c68633          	add	a2,a3,a2
    800042a4:	08c12683          	lw	a3,140(sp)
    800042a8:	00d585b3          	add	a1,a1,a3
    800042ac:	00b603b3          	add	t2,a2,a1
    800042b0:	006589b3          	add	s3,a1,t1
    800042b4:	0069d593          	srli	a1,s3,0x6
    800042b8:	01a99613          	slli	a2,s3,0x1a
    800042bc:	00b665b3          	or	a1,a2,a1
    800042c0:	00b9d613          	srli	a2,s3,0xb
    800042c4:	01599793          	slli	a5,s3,0x15
    800042c8:	00c7e633          	or	a2,a5,a2
    800042cc:	00c5c5b3          	xor	a1,a1,a2
    800042d0:	0199d613          	srli	a2,s3,0x19
    800042d4:	00799793          	slli	a5,s3,0x7
    800042d8:	00c7e633          	or	a2,a5,a2
    800042dc:	00c5c5b3          	xor	a1,a1,a2
    800042e0:	019d0633          	add	a2,s10,s9
    800042e4:	00aa47b3          	xor	a5,s4,a0
    800042e8:	00f9f7b3          	and	a5,s3,a5
    800042ec:	00a7c7b3          	xor	a5,a5,a0
    800042f0:	00f60633          	add	a2,a2,a5
    800042f4:	00b605b3          	add	a1,a2,a1
    800042f8:	0023d613          	srli	a2,t2,0x2
    800042fc:	01e39793          	slli	a5,t2,0x1e
    80004300:	00c7e633          	or	a2,a5,a2
    80004304:	00d3d793          	srli	a5,t2,0xd
    80004308:	01339413          	slli	s0,t2,0x13
    8000430c:	00f467b3          	or	a5,s0,a5
    80004310:	00f64633          	xor	a2,a2,a5
    80004314:	0163d793          	srli	a5,t2,0x16
    80004318:	00a39413          	slli	s0,t2,0xa
    8000431c:	00f467b3          	or	a5,s0,a5
    80004320:	00f64633          	xor	a2,a2,a5
    80004324:	018e47b3          	xor	a5,t3,s8
    80004328:	00f3f7b3          	and	a5,t2,a5
    8000432c:	00e7c733          	xor	a4,a5,a4
    80004330:	08812683          	lw	a3,136(sp)
    80004334:	00d585b3          	add	a1,a1,a3
    80004338:	00e60633          	add	a2,a2,a4
    8000433c:	00b60fb3          	add	t6,a2,a1
    80004340:	011585b3          	add	a1,a1,a7
    80004344:	14812683          	lw	a3,328(sp)
    80004348:	0076d613          	srli	a2,a3,0x7
    8000434c:	01969713          	slli	a4,a3,0x19
    80004350:	00c76833          	or	a6,a4,a2
    80004354:	00795713          	srli	a4,s2,0x7
    80004358:	01991793          	slli	a5,s2,0x19
    8000435c:	00e7e2b3          	or	t0,a5,a4
    80004360:	11412483          	lw	s1,276(sp)
    80004364:	0074d793          	srli	a5,s1,0x7
    80004368:	01949413          	slli	s0,s1,0x19
    8000436c:	00f46cb3          	or	s9,s0,a5
    80004370:	16412403          	lw	s0,356(sp)
    80004374:	00745713          	srli	a4,s0,0x7
    80004378:	01941613          	slli	a2,s0,0x19
    8000437c:	00e66db3          	or	s11,a2,a4
    80004380:	0126d613          	srli	a2,a3,0x12
    80004384:	00e69713          	slli	a4,a3,0xe
    80004388:	00068893          	mv	a7,a3
    8000438c:	00c76733          	or	a4,a4,a2
    80004390:	01295613          	srli	a2,s2,0x12
    80004394:	00e91793          	slli	a5,s2,0xe
    80004398:	00c7e7b3          	or	a5,a5,a2
    8000439c:	0124d693          	srli	a3,s1,0x12
    800043a0:	00e49613          	slli	a2,s1,0xe
    800043a4:	00d66633          	or	a2,a2,a3
    800043a8:	01245693          	srli	a3,s0,0x12
    800043ac:	00e41a93          	slli	s5,s0,0xe
    800043b0:	00dae6b3          	or	a3,s5,a3
    800043b4:	01074733          	xor	a4,a4,a6
    800043b8:	0057c7b3          	xor	a5,a5,t0
    800043bc:	01964633          	xor	a2,a2,s9
    800043c0:	01b6c833          	xor	a6,a3,s11
    800043c4:	0038d693          	srli	a3,a7,0x3
    800043c8:	00d746b3          	xor	a3,a4,a3
    800043cc:	00395713          	srli	a4,s2,0x3
    800043d0:	00e7c733          	xor	a4,a5,a4
    800043d4:	0034d793          	srli	a5,s1,0x3
    800043d8:	00f64633          	xor	a2,a2,a5
    800043dc:	00345793          	srli	a5,s0,0x3
    800043e0:	00f847b3          	xor	a5,a6,a5
    800043e4:	01268833          	add	a6,a3,s2
    800043e8:	009708b3          	add	a7,a4,s1
    800043ec:	00860633          	add	a2,a2,s0
    800043f0:	14c12683          	lw	a3,332(sp)
    800043f4:	00d787b3          	add	a5,a5,a3
    800043f8:	011bd413          	srli	s0,s7,0x11
    800043fc:	00fb9693          	slli	a3,s7,0xf
    80004400:	0086e6b3          	or	a3,a3,s0
    80004404:	013bd413          	srli	s0,s7,0x13
    80004408:	00db9713          	slli	a4,s7,0xd
    8000440c:	00876733          	or	a4,a4,s0
    80004410:	01d787b3          	add	a5,a5,t4
    80004414:	00e6c6b3          	xor	a3,a3,a4
    80004418:	00abd713          	srli	a4,s7,0xa
    8000441c:	00e6c6b3          	xor	a3,a3,a4
    80004420:	00d78433          	add	s0,a5,a3
    80004424:	011d5693          	srli	a3,s10,0x11
    80004428:	00fd1713          	slli	a4,s10,0xf
    8000442c:	00d766b3          	or	a3,a4,a3
    80004430:	013d5713          	srli	a4,s10,0x13
    80004434:	00dd1793          	slli	a5,s10,0xd
    80004438:	00e7e733          	or	a4,a5,a4
    8000443c:	00160633          	add	a2,a2,ra
    80004440:	00e6c6b3          	xor	a3,a3,a4
    80004444:	00ad5713          	srli	a4,s10,0xa
    80004448:	00e6c6b3          	xor	a3,a3,a4
    8000444c:	00d607b3          	add	a5,a2,a3
    80004450:	01145613          	srli	a2,s0,0x11
    80004454:	00f41693          	slli	a3,s0,0xf
    80004458:	00c6e633          	or	a2,a3,a2
    8000445c:	01345693          	srli	a3,s0,0x13
    80004460:	00d41713          	slli	a4,s0,0xd
    80004464:	00d766b3          	or	a3,a4,a3
    80004468:	01e88733          	add	a4,a7,t5
    8000446c:	00d64633          	xor	a2,a2,a3
    80004470:	00a45693          	srli	a3,s0,0xa
    80004474:	16812223          	sw	s0,356(sp)
    80004478:	00d64633          	xor	a2,a2,a3
    8000447c:	00c70db3          	add	s11,a4,a2
    80004480:	0117d613          	srli	a2,a5,0x11
    80004484:	00f79693          	slli	a3,a5,0xf
    80004488:	00c6e633          	or	a2,a3,a2
    8000448c:	0137d693          	srli	a3,a5,0x13
    80004490:	00d79713          	slli	a4,a5,0xd
    80004494:	00d766b3          	or	a3,a4,a3
    80004498:	16812703          	lw	a4,360(sp)
    8000449c:	00e80733          	add	a4,a6,a4
    800044a0:	00d64633          	xor	a2,a2,a3
    800044a4:	00a7d693          	srli	a3,a5,0xa
    800044a8:	00078893          	mv	a7,a5
    800044ac:	14f12623          	sw	a5,332(sp)
    800044b0:	00d64633          	xor	a2,a2,a3
    800044b4:	00c70cb3          	add	s9,a4,a2
    800044b8:	0065d613          	srli	a2,a1,0x6
    800044bc:	01a59693          	slli	a3,a1,0x1a
    800044c0:	00c6e633          	or	a2,a3,a2
    800044c4:	00b5d693          	srli	a3,a1,0xb
    800044c8:	01559793          	slli	a5,a1,0x15
    800044cc:	00d7e6b3          	or	a3,a5,a3
    800044d0:	00d64633          	xor	a2,a2,a3
    800044d4:	0195d693          	srli	a3,a1,0x19
    800044d8:	00759793          	slli	a5,a1,0x7
    800044dc:	00d7e6b3          	or	a3,a5,a3
    800044e0:	00a40533          	add	a0,s0,a0
    800044e4:	00d64633          	xor	a2,a2,a3
    800044e8:	0149c6b3          	xor	a3,s3,s4
    800044ec:	00d5f6b3          	and	a3,a1,a3
    800044f0:	0146c6b3          	xor	a3,a3,s4
    800044f4:	00d50533          	add	a0,a0,a3
    800044f8:	00c50533          	add	a0,a0,a2
    800044fc:	002fd613          	srli	a2,t6,0x2
    80004500:	01ef9693          	slli	a3,t6,0x1e
    80004504:	00c6e633          	or	a2,a3,a2
    80004508:	00dfd693          	srli	a3,t6,0xd
    8000450c:	013f9793          	slli	a5,t6,0x13
    80004510:	00d7e6b3          	or	a3,a5,a3
    80004514:	00d64633          	xor	a2,a2,a3
    80004518:	016fd693          	srli	a3,t6,0x16
    8000451c:	00af9793          	slli	a5,t6,0xa
    80004520:	00d7e6b3          	or	a3,a5,a3
    80004524:	00d64633          	xor	a2,a2,a3
    80004528:	007ff6b3          	and	a3,t6,t2
    8000452c:	01c3f7b3          	and	a5,t2,t3
    80004530:	00f6c7b3          	xor	a5,a3,a5
    80004534:	01cff433          	and	s0,t6,t3
    80004538:	0087c7b3          	xor	a5,a5,s0
    8000453c:	00c78633          	add	a2,a5,a2
    80004540:	08412703          	lw	a4,132(sp)
    80004544:	00e50533          	add	a0,a0,a4
    80004548:	00a60eb3          	add	t4,a2,a0
    8000454c:	01850833          	add	a6,a0,s8
    80004550:	00685613          	srli	a2,a6,0x6
    80004554:	01a81793          	slli	a5,a6,0x1a
    80004558:	00c7e633          	or	a2,a5,a2
    8000455c:	00b85793          	srli	a5,a6,0xb
    80004560:	01581413          	slli	s0,a6,0x15
    80004564:	00f467b3          	or	a5,s0,a5
    80004568:	00f64633          	xor	a2,a2,a5
    8000456c:	01985793          	srli	a5,a6,0x19
    80004570:	00781413          	slli	s0,a6,0x7
    80004574:	00f467b3          	or	a5,s0,a5
    80004578:	00f64633          	xor	a2,a2,a5
    8000457c:	014887b3          	add	a5,a7,s4
    80004580:	0135c433          	xor	s0,a1,s3
    80004584:	00887433          	and	s0,a6,s0
    80004588:	01344433          	xor	s0,s0,s3
    8000458c:	008787b3          	add	a5,a5,s0
    80004590:	00c78633          	add	a2,a5,a2
    80004594:	002ed793          	srli	a5,t4,0x2
    80004598:	01ee9413          	slli	s0,t4,0x1e
    8000459c:	00f467b3          	or	a5,s0,a5
    800045a0:	00ded413          	srli	s0,t4,0xd
    800045a4:	013e9713          	slli	a4,t4,0x13
    800045a8:	00876733          	or	a4,a4,s0
    800045ac:	00e7c733          	xor	a4,a5,a4
    800045b0:	016ed793          	srli	a5,t4,0x16
    800045b4:	00ae9413          	slli	s0,t4,0xa
    800045b8:	00f467b3          	or	a5,s0,a5
    800045bc:	00f74733          	xor	a4,a4,a5
    800045c0:	007fc7b3          	xor	a5,t6,t2
    800045c4:	00fef7b3          	and	a5,t4,a5
    800045c8:	00d7c6b3          	xor	a3,a5,a3
    800045cc:	08012783          	lw	a5,128(sp)
    800045d0:	00f60633          	add	a2,a2,a5
    800045d4:	00d706b3          	add	a3,a4,a3
    800045d8:	00c68333          	add	t1,a3,a2
    800045dc:	01c608b3          	add	a7,a2,t3
    800045e0:	0068d613          	srli	a2,a7,0x6
    800045e4:	01a89693          	slli	a3,a7,0x1a
    800045e8:	00c6e633          	or	a2,a3,a2
    800045ec:	00b8d693          	srli	a3,a7,0xb
    800045f0:	01589713          	slli	a4,a7,0x15
    800045f4:	00d766b3          	or	a3,a4,a3
    800045f8:	00d64633          	xor	a2,a2,a3
    800045fc:	0198d693          	srli	a3,a7,0x19
    80004600:	00789713          	slli	a4,a7,0x7
    80004604:	00d766b3          	or	a3,a4,a3
    80004608:	013d8733          	add	a4,s11,s3
    8000460c:	00d64633          	xor	a2,a2,a3
    80004610:	00b846b3          	xor	a3,a6,a1
    80004614:	00d8f6b3          	and	a3,a7,a3
    80004618:	00b6c6b3          	xor	a3,a3,a1
    8000461c:	00d706b3          	add	a3,a4,a3
    80004620:	00c68633          	add	a2,a3,a2
    80004624:	00235693          	srli	a3,t1,0x2
    80004628:	01e31713          	slli	a4,t1,0x1e
    8000462c:	00d766b3          	or	a3,a4,a3
    80004630:	00d35713          	srli	a4,t1,0xd
    80004634:	01331413          	slli	s0,t1,0x13
    80004638:	00e46733          	or	a4,s0,a4
    8000463c:	00e6c6b3          	xor	a3,a3,a4
    80004640:	01635713          	srli	a4,t1,0x16
    80004644:	00a31413          	slli	s0,t1,0xa
    80004648:	00e46733          	or	a4,s0,a4
    8000464c:	00e6c6b3          	xor	a3,a3,a4
    80004650:	01d37733          	and	a4,t1,t4
    80004654:	01fef433          	and	s0,t4,t6
    80004658:	00874433          	xor	s0,a4,s0
    8000465c:	01f374b3          	and	s1,t1,t6
    80004660:	00944433          	xor	s0,s0,s1
    80004664:	00d406b3          	add	a3,s0,a3
    80004668:	07c12483          	lw	s1,124(sp)
    8000466c:	00960633          	add	a2,a2,s1
    80004670:	00c689b3          	add	s3,a3,a2
    80004674:	007604b3          	add	s1,a2,t2
    80004678:	0064d613          	srli	a2,s1,0x6
    8000467c:	01a49693          	slli	a3,s1,0x1a
    80004680:	00c6e633          	or	a2,a3,a2
    80004684:	00b4d693          	srli	a3,s1,0xb
    80004688:	01549413          	slli	s0,s1,0x15
    8000468c:	00d466b3          	or	a3,s0,a3
    80004690:	00d64633          	xor	a2,a2,a3
    80004694:	0194d693          	srli	a3,s1,0x19
    80004698:	00749413          	slli	s0,s1,0x7
    8000469c:	00d466b3          	or	a3,s0,a3
    800046a0:	00d64633          	xor	a2,a2,a3
    800046a4:	00bc85b3          	add	a1,s9,a1
    800046a8:	0108c6b3          	xor	a3,a7,a6
    800046ac:	00d4f6b3          	and	a3,s1,a3
    800046b0:	0106c6b3          	xor	a3,a3,a6
    800046b4:	00d585b3          	add	a1,a1,a3
    800046b8:	00c585b3          	add	a1,a1,a2
    800046bc:	0029d613          	srli	a2,s3,0x2
    800046c0:	01e99693          	slli	a3,s3,0x1e
    800046c4:	00c6e633          	or	a2,a3,a2
    800046c8:	00d9d693          	srli	a3,s3,0xd
    800046cc:	01399413          	slli	s0,s3,0x13
    800046d0:	00d466b3          	or	a3,s0,a3
    800046d4:	00d64633          	xor	a2,a2,a3
    800046d8:	0169d693          	srli	a3,s3,0x16
    800046dc:	00a99413          	slli	s0,s3,0xa
    800046e0:	00d466b3          	or	a3,s0,a3
    800046e4:	00d64633          	xor	a2,a2,a3
    800046e8:	01d346b3          	xor	a3,t1,t4
    800046ec:	00d9f6b3          	and	a3,s3,a3
    800046f0:	00e6c6b3          	xor	a3,a3,a4
    800046f4:	07812703          	lw	a4,120(sp)
    800046f8:	00e585b3          	add	a1,a1,a4
    800046fc:	00d60633          	add	a2,a2,a3
    80004700:	00b602b3          	add	t0,a2,a1
    80004704:	01f58933          	add	s2,a1,t6
    80004708:	15c12783          	lw	a5,348(sp)
    8000470c:	0077d613          	srli	a2,a5,0x7
    80004710:	01979713          	slli	a4,a5,0x19
    80004714:	00c763b3          	or	t2,a4,a2
    80004718:	007b5713          	srli	a4,s6,0x7
    8000471c:	019b1413          	slli	s0,s6,0x19
    80004720:	00e46fb3          	or	t6,s0,a4
    80004724:	15012503          	lw	a0,336(sp)
    80004728:	00755413          	srli	s0,a0,0x7
    8000472c:	01951613          	slli	a2,a0,0x19
    80004730:	00866c33          	or	s8,a2,s0
    80004734:	16012583          	lw	a1,352(sp)
    80004738:	0075d413          	srli	s0,a1,0x7
    8000473c:	01959713          	slli	a4,a1,0x19
    80004740:	00876a33          	or	s4,a4,s0
    80004744:	0127d413          	srli	s0,a5,0x12
    80004748:	00e79613          	slli	a2,a5,0xe
    8000474c:	00866ab3          	or	s5,a2,s0
    80004750:	012b5413          	srli	s0,s6,0x12
    80004754:	00eb1713          	slli	a4,s6,0xe
    80004758:	00876e33          	or	t3,a4,s0
    8000475c:	01255413          	srli	s0,a0,0x12
    80004760:	00e51693          	slli	a3,a0,0xe
    80004764:	00050713          	mv	a4,a0
    80004768:	0086e6b3          	or	a3,a3,s0
    8000476c:	0125d413          	srli	s0,a1,0x12
    80004770:	00e59613          	slli	a2,a1,0xe
    80004774:	00058513          	mv	a0,a1
    80004778:	00866633          	or	a2,a2,s0
    8000477c:	007ac433          	xor	s0,s5,t2
    80004780:	01fe43b3          	xor	t2,t3,t6
    80004784:	0186c6b3          	xor	a3,a3,s8
    80004788:	01464633          	xor	a2,a2,s4
    8000478c:	0037d593          	srli	a1,a5,0x3
    80004790:	00b445b3          	xor	a1,s0,a1
    80004794:	003b5413          	srli	s0,s6,0x3
    80004798:	0083c3b3          	xor	t2,t2,s0
    8000479c:	00375413          	srli	s0,a4,0x3
    800047a0:	0086c6b3          	xor	a3,a3,s0
    800047a4:	00355413          	srli	s0,a0,0x3
    800047a8:	00864633          	xor	a2,a2,s0
    800047ac:	01658fb3          	add	t6,a1,s6
    800047b0:	00e383b3          	add	t2,t2,a4
    800047b4:	00a686b3          	add	a3,a3,a0
    800047b8:	14812503          	lw	a0,328(sp)
    800047bc:	00a60633          	add	a2,a2,a0
    800047c0:	011dd413          	srli	s0,s11,0x11
    800047c4:	00fd9593          	slli	a1,s11,0xf
    800047c8:	0085e5b3          	or	a1,a1,s0
    800047cc:	013dd413          	srli	s0,s11,0x13
    800047d0:	00dd9713          	slli	a4,s11,0xd
    800047d4:	00876733          	or	a4,a4,s0
    800047d8:	15412503          	lw	a0,340(sp)
    800047dc:	00a60633          	add	a2,a2,a0
    800047e0:	00e5c5b3          	xor	a1,a1,a4
    800047e4:	00add713          	srli	a4,s11,0xa
    800047e8:	00e5c5b3          	xor	a1,a1,a4
    800047ec:	00b60433          	add	s0,a2,a1
    800047f0:	011cd593          	srli	a1,s9,0x11
    800047f4:	00fc9613          	slli	a2,s9,0xf
    800047f8:	00b665b3          	or	a1,a2,a1
    800047fc:	013cd613          	srli	a2,s9,0x13
    80004800:	00dc9713          	slli	a4,s9,0xd
    80004804:	00c76633          	or	a2,a4,a2
    80004808:	017686b3          	add	a3,a3,s7
    8000480c:	00c5c5b3          	xor	a1,a1,a2
    80004810:	00acd613          	srli	a2,s9,0xa
    80004814:	00c5c5b3          	xor	a1,a1,a2
    80004818:	00b68533          	add	a0,a3,a1
    8000481c:	01145593          	srli	a1,s0,0x11
    80004820:	00f41613          	slli	a2,s0,0xf
    80004824:	00b665b3          	or	a1,a2,a1
    80004828:	01345613          	srli	a2,s0,0x13
    8000482c:	00d41693          	slli	a3,s0,0xd
    80004830:	00c6e633          	or	a2,a3,a2
    80004834:	01a386b3          	add	a3,t2,s10
    80004838:	00c5c5b3          	xor	a1,a1,a2
    8000483c:	00a45613          	srli	a2,s0,0xa
    80004840:	16812023          	sw	s0,352(sp)
    80004844:	00c5c5b3          	xor	a1,a1,a2
    80004848:	00b683b3          	add	t2,a3,a1
    8000484c:	01155593          	srli	a1,a0,0x11
    80004850:	00f51613          	slli	a2,a0,0xf
    80004854:	00b665b3          	or	a1,a2,a1
    80004858:	01355613          	srli	a2,a0,0x13
    8000485c:	00050713          	mv	a4,a0
    80004860:	00d51693          	slli	a3,a0,0xd
    80004864:	00c6e633          	or	a2,a3,a2
    80004868:	16412503          	lw	a0,356(sp)
    8000486c:	00af86b3          	add	a3,t6,a0
    80004870:	00c5c5b3          	xor	a1,a1,a2
    80004874:	00a75613          	srli	a2,a4,0xa
    80004878:	00070793          	mv	a5,a4
    8000487c:	14e12423          	sw	a4,328(sp)
    80004880:	00c5c5b3          	xor	a1,a1,a2
    80004884:	00b68c33          	add	s8,a3,a1
    80004888:	00695593          	srli	a1,s2,0x6
    8000488c:	01a91613          	slli	a2,s2,0x1a
    80004890:	00b665b3          	or	a1,a2,a1
    80004894:	00b95613          	srli	a2,s2,0xb
    80004898:	01591693          	slli	a3,s2,0x15
    8000489c:	00c6e633          	or	a2,a3,a2
    800048a0:	00c5c5b3          	xor	a1,a1,a2
    800048a4:	01995613          	srli	a2,s2,0x19
    800048a8:	00791693          	slli	a3,s2,0x7
    800048ac:	00c6e633          	or	a2,a3,a2
    800048b0:	01040533          	add	a0,s0,a6
    800048b4:	00c5c5b3          	xor	a1,a1,a2
    800048b8:	0114c633          	xor	a2,s1,a7
    800048bc:	00c97633          	and	a2,s2,a2
    800048c0:	01164633          	xor	a2,a2,a7
    800048c4:	00c50533          	add	a0,a0,a2
    800048c8:	00b50533          	add	a0,a0,a1
    800048cc:	0022d593          	srli	a1,t0,0x2
    800048d0:	01e29613          	slli	a2,t0,0x1e
    800048d4:	00b665b3          	or	a1,a2,a1
    800048d8:	00d2d613          	srli	a2,t0,0xd
    800048dc:	01329693          	slli	a3,t0,0x13
    800048e0:	00c6e633          	or	a2,a3,a2
    800048e4:	00c5c5b3          	xor	a1,a1,a2
    800048e8:	0162d613          	srli	a2,t0,0x16
    800048ec:	00a29693          	slli	a3,t0,0xa
    800048f0:	00c6e633          	or	a2,a3,a2
    800048f4:	00c5c5b3          	xor	a1,a1,a2
    800048f8:	0132f633          	and	a2,t0,s3
    800048fc:	0069f6b3          	and	a3,s3,t1
    80004900:	00d646b3          	xor	a3,a2,a3
    80004904:	0062f733          	and	a4,t0,t1
    80004908:	00e6c6b3          	xor	a3,a3,a4
    8000490c:	00b685b3          	add	a1,a3,a1
    80004910:	07412683          	lw	a3,116(sp)
    80004914:	00d50533          	add	a0,a0,a3
    80004918:	00a58e33          	add	t3,a1,a0
    8000491c:	01d50533          	add	a0,a0,t4
    80004920:	00655593          	srli	a1,a0,0x6
    80004924:	01a51693          	slli	a3,a0,0x1a
    80004928:	00b6e5b3          	or	a1,a3,a1
    8000492c:	00b55693          	srli	a3,a0,0xb
    80004930:	01551713          	slli	a4,a0,0x15
    80004934:	00d766b3          	or	a3,a4,a3
    80004938:	00d5c5b3          	xor	a1,a1,a3
    8000493c:	01955693          	srli	a3,a0,0x19
    80004940:	00751713          	slli	a4,a0,0x7
    80004944:	00d766b3          	or	a3,a4,a3
    80004948:	00d5c5b3          	xor	a1,a1,a3
    8000494c:	011786b3          	add	a3,a5,a7
    80004950:	00994733          	xor	a4,s2,s1
    80004954:	00e57733          	and	a4,a0,a4
    80004958:	00974733          	xor	a4,a4,s1
    8000495c:	00e686b3          	add	a3,a3,a4
    80004960:	00b685b3          	add	a1,a3,a1
    80004964:	002e5693          	srli	a3,t3,0x2
    80004968:	01ee1713          	slli	a4,t3,0x1e
    8000496c:	00d766b3          	or	a3,a4,a3
    80004970:	00de5713          	srli	a4,t3,0xd
    80004974:	013e1793          	slli	a5,t3,0x13
    80004978:	00e7e733          	or	a4,a5,a4
    8000497c:	00e6c6b3          	xor	a3,a3,a4
    80004980:	016e5713          	srli	a4,t3,0x16
    80004984:	00ae1793          	slli	a5,t3,0xa
    80004988:	00e7e733          	or	a4,a5,a4
    8000498c:	00e6c6b3          	xor	a3,a3,a4
    80004990:	0132c733          	xor	a4,t0,s3
    80004994:	00ee7733          	and	a4,t3,a4
    80004998:	00c74633          	xor	a2,a4,a2
    8000499c:	07012703          	lw	a4,112(sp)
    800049a0:	00e585b3          	add	a1,a1,a4
    800049a4:	00c68633          	add	a2,a3,a2
    800049a8:	00b60ab3          	add	s5,a2,a1
    800049ac:	006587b3          	add	a5,a1,t1
    800049b0:	0067d593          	srli	a1,a5,0x6
    800049b4:	01a79613          	slli	a2,a5,0x1a
    800049b8:	00b665b3          	or	a1,a2,a1
    800049bc:	00b7d613          	srli	a2,a5,0xb
    800049c0:	01579693          	slli	a3,a5,0x15
    800049c4:	00c6e633          	or	a2,a3,a2
    800049c8:	00c5c5b3          	xor	a1,a1,a2
    800049cc:	0197d613          	srli	a2,a5,0x19
    800049d0:	00779693          	slli	a3,a5,0x7
    800049d4:	00c6e633          	or	a2,a3,a2
    800049d8:	009386b3          	add	a3,t2,s1
    800049dc:	00038f93          	mv	t6,t2
    800049e0:	00c5c5b3          	xor	a1,a1,a2
    800049e4:	01254633          	xor	a2,a0,s2
    800049e8:	00c7f633          	and	a2,a5,a2
    800049ec:	01264633          	xor	a2,a2,s2
    800049f0:	00c68633          	add	a2,a3,a2
    800049f4:	00b605b3          	add	a1,a2,a1
    800049f8:	002ad613          	srli	a2,s5,0x2
    800049fc:	01ea9693          	slli	a3,s5,0x1e
    80004a00:	00c6e633          	or	a2,a3,a2
    80004a04:	00dad693          	srli	a3,s5,0xd
    80004a08:	013a9713          	slli	a4,s5,0x13
    80004a0c:	00d766b3          	or	a3,a4,a3
    80004a10:	00d64633          	xor	a2,a2,a3
    80004a14:	016ad693          	srli	a3,s5,0x16
    80004a18:	00aa9713          	slli	a4,s5,0xa
    80004a1c:	00d766b3          	or	a3,a4,a3
    80004a20:	00d64633          	xor	a2,a2,a3
    80004a24:	01caf6b3          	and	a3,s5,t3
    80004a28:	005e7733          	and	a4,t3,t0
    80004a2c:	00e6c733          	xor	a4,a3,a4
    80004a30:	005af4b3          	and	s1,s5,t0
    80004a34:	00974733          	xor	a4,a4,s1
    80004a38:	00c70633          	add	a2,a4,a2
    80004a3c:	06c12703          	lw	a4,108(sp)
    80004a40:	00e585b3          	add	a1,a1,a4
    80004a44:	00b60a33          	add	s4,a2,a1
    80004a48:	013584b3          	add	s1,a1,s3
    80004a4c:	0064d593          	srli	a1,s1,0x6
    80004a50:	01a49613          	slli	a2,s1,0x1a
    80004a54:	00b665b3          	or	a1,a2,a1
    80004a58:	00b4d613          	srli	a2,s1,0xb
    80004a5c:	01549713          	slli	a4,s1,0x15
    80004a60:	00c76633          	or	a2,a4,a2
    80004a64:	00c5c5b3          	xor	a1,a1,a2
    80004a68:	0194d613          	srli	a2,s1,0x19
    80004a6c:	00749713          	slli	a4,s1,0x7
    80004a70:	00c76633          	or	a2,a4,a2
    80004a74:	00c5c5b3          	xor	a1,a1,a2
    80004a78:	012c0633          	add	a2,s8,s2
    80004a7c:	00a7c733          	xor	a4,a5,a0
    80004a80:	00e4f733          	and	a4,s1,a4
    80004a84:	00a74733          	xor	a4,a4,a0
    80004a88:	00e60633          	add	a2,a2,a4
    80004a8c:	00b605b3          	add	a1,a2,a1
    80004a90:	002a5613          	srli	a2,s4,0x2
    80004a94:	01ea1713          	slli	a4,s4,0x1e
    80004a98:	00c76633          	or	a2,a4,a2
    80004a9c:	00da5713          	srli	a4,s4,0xd
    80004aa0:	013a1413          	slli	s0,s4,0x13
    80004aa4:	00e46733          	or	a4,s0,a4
    80004aa8:	00e64633          	xor	a2,a2,a4
    80004aac:	016a5713          	srli	a4,s4,0x16
    80004ab0:	00aa1413          	slli	s0,s4,0xa
    80004ab4:	00e46733          	or	a4,s0,a4
    80004ab8:	00e64633          	xor	a2,a2,a4
    80004abc:	01cac733          	xor	a4,s5,t3
    80004ac0:	00ea7733          	and	a4,s4,a4
    80004ac4:	00d746b3          	xor	a3,a4,a3
    80004ac8:	06812703          	lw	a4,104(sp)
    80004acc:	00e585b3          	add	a1,a1,a4
    80004ad0:	00d60633          	add	a2,a2,a3
    80004ad4:	00b60333          	add	t1,a2,a1
    80004ad8:	00558833          	add	a6,a1,t0
    80004adc:	16812b03          	lw	s6,360(sp)
    80004ae0:	007b5593          	srli	a1,s6,0x7
    80004ae4:	019b1613          	slli	a2,s6,0x19
    80004ae8:	00b663b3          	or	t2,a2,a1
    80004aec:	007f5613          	srli	a2,t5,0x7
    80004af0:	019f1713          	slli	a4,t5,0x19
    80004af4:	00c762b3          	or	t0,a4,a2
    80004af8:	0070d713          	srli	a4,ra,0x7
    80004afc:	01909413          	slli	s0,ra,0x19
    80004b00:	00e46933          	or	s2,s0,a4
    80004b04:	14412e83          	lw	t4,324(sp)
    80004b08:	007ed413          	srli	s0,t4,0x7
    80004b0c:	019e9593          	slli	a1,t4,0x19
    80004b10:	0085e9b3          	or	s3,a1,s0
    80004b14:	012b5413          	srli	s0,s6,0x12
    80004b18:	00eb1613          	slli	a2,s6,0xe
    80004b1c:	008668b3          	or	a7,a2,s0
    80004b20:	012f5413          	srli	s0,t5,0x12
    80004b24:	00ef1713          	slli	a4,t5,0xe
    80004b28:	00876733          	or	a4,a4,s0
    80004b2c:	0120d413          	srli	s0,ra,0x12
    80004b30:	00e09593          	slli	a1,ra,0xe
    80004b34:	0085e5b3          	or	a1,a1,s0
    80004b38:	012ed413          	srli	s0,t4,0x12
    80004b3c:	00ee9613          	slli	a2,t4,0xe
    80004b40:	00866633          	or	a2,a2,s0
    80004b44:	0078c433          	xor	s0,a7,t2
    80004b48:	00574733          	xor	a4,a4,t0
    80004b4c:	0125c5b3          	xor	a1,a1,s2
    80004b50:	01364633          	xor	a2,a2,s3
    80004b54:	003b5693          	srli	a3,s6,0x3
    80004b58:	00d446b3          	xor	a3,s0,a3
    80004b5c:	003f5413          	srli	s0,t5,0x3
    80004b60:	00874733          	xor	a4,a4,s0
    80004b64:	0030d413          	srli	s0,ra,0x3
    80004b68:	0085c5b3          	xor	a1,a1,s0
    80004b6c:	003ed413          	srli	s0,t4,0x3
    80004b70:	00864633          	xor	a2,a2,s0
    80004b74:	01e68f33          	add	t5,a3,t5
    80004b78:	001708b3          	add	a7,a4,ra
    80004b7c:	01d585b3          	add	a1,a1,t4
    80004b80:	15c12683          	lw	a3,348(sp)
    80004b84:	00d60633          	add	a2,a2,a3
    80004b88:	011fd413          	srli	s0,t6,0x11
    80004b8c:	00ff9693          	slli	a3,t6,0xf
    80004b90:	0086e6b3          	or	a3,a3,s0
    80004b94:	013fd413          	srli	s0,t6,0x13
    80004b98:	00df9713          	slli	a4,t6,0xd
    80004b9c:	00876733          	or	a4,a4,s0
    80004ba0:	14c12403          	lw	s0,332(sp)
    80004ba4:	00860633          	add	a2,a2,s0
    80004ba8:	00e6c6b3          	xor	a3,a3,a4
    80004bac:	00afd713          	srli	a4,t6,0xa
    80004bb0:	000f8b13          	mv	s6,t6
    80004bb4:	00e6c6b3          	xor	a3,a3,a4
    80004bb8:	00d60433          	add	s0,a2,a3
    80004bbc:	011c5613          	srli	a2,s8,0x11
    80004bc0:	00fc1693          	slli	a3,s8,0xf
    80004bc4:	00c6e633          	or	a2,a3,a2
    80004bc8:	013c5693          	srli	a3,s8,0x13
    80004bcc:	00dc1713          	slli	a4,s8,0xd
    80004bd0:	00d766b3          	or	a3,a4,a3
    80004bd4:	01b585b3          	add	a1,a1,s11
    80004bd8:	00d64633          	xor	a2,a2,a3
    80004bdc:	00ac5693          	srli	a3,s8,0xa
    80004be0:	00d64633          	xor	a2,a2,a3
    80004be4:	00c58733          	add	a4,a1,a2
    80004be8:	01145593          	srli	a1,s0,0x11
    80004bec:	00f41613          	slli	a2,s0,0xf
    80004bf0:	00b665b3          	or	a1,a2,a1
    80004bf4:	01345613          	srli	a2,s0,0x13
    80004bf8:	00d41693          	slli	a3,s0,0xd
    80004bfc:	00c6e633          	or	a2,a3,a2
    80004c00:	019886b3          	add	a3,a7,s9
    80004c04:	00c5c5b3          	xor	a1,a1,a2
    80004c08:	00a45613          	srli	a2,s0,0xa
    80004c0c:	14812e23          	sw	s0,348(sp)
    80004c10:	00c5c5b3          	xor	a1,a1,a2
    80004c14:	00b680b3          	add	ra,a3,a1
    80004c18:	01175593          	srli	a1,a4,0x11
    80004c1c:	00f71613          	slli	a2,a4,0xf
    80004c20:	00b665b3          	or	a1,a2,a1
    80004c24:	01375613          	srli	a2,a4,0x13
    80004c28:	00d71693          	slli	a3,a4,0xd
    80004c2c:	00c6e633          	or	a2,a3,a2
    80004c30:	16012683          	lw	a3,352(sp)
    80004c34:	00df06b3          	add	a3,t5,a3
    80004c38:	00c5c5b3          	xor	a1,a1,a2
    80004c3c:	00a75613          	srli	a2,a4,0xa
    80004c40:	00070893          	mv	a7,a4
    80004c44:	14e12823          	sw	a4,336(sp)
    80004c48:	00c5c5b3          	xor	a1,a1,a2
    80004c4c:	00b68eb3          	add	t4,a3,a1
    80004c50:	00685593          	srli	a1,a6,0x6
    80004c54:	01a81613          	slli	a2,a6,0x1a
    80004c58:	00b665b3          	or	a1,a2,a1
    80004c5c:	00b85613          	srli	a2,a6,0xb
    80004c60:	01581693          	slli	a3,a6,0x15
    80004c64:	00c6e633          	or	a2,a3,a2
    80004c68:	00c5c5b3          	xor	a1,a1,a2
    80004c6c:	01985613          	srli	a2,a6,0x19
    80004c70:	00781693          	slli	a3,a6,0x7
    80004c74:	00c6e633          	or	a2,a3,a2
    80004c78:	00a40533          	add	a0,s0,a0
    80004c7c:	00c5c5b3          	xor	a1,a1,a2
    80004c80:	00f4c633          	xor	a2,s1,a5
    80004c84:	00c87633          	and	a2,a6,a2
    80004c88:	00f64633          	xor	a2,a2,a5
    80004c8c:	00c50533          	add	a0,a0,a2
    80004c90:	00b50533          	add	a0,a0,a1
    80004c94:	00235593          	srli	a1,t1,0x2
    80004c98:	01e31613          	slli	a2,t1,0x1e
    80004c9c:	00b665b3          	or	a1,a2,a1
    80004ca0:	00d35613          	srli	a2,t1,0xd
    80004ca4:	01331693          	slli	a3,t1,0x13
    80004ca8:	00c6e633          	or	a2,a3,a2
    80004cac:	00c5c5b3          	xor	a1,a1,a2
    80004cb0:	01635613          	srli	a2,t1,0x16
    80004cb4:	00a31693          	slli	a3,t1,0xa
    80004cb8:	00c6e633          	or	a2,a3,a2
    80004cbc:	00c5c5b3          	xor	a1,a1,a2
    80004cc0:	01437633          	and	a2,t1,s4
    80004cc4:	015a76b3          	and	a3,s4,s5
    80004cc8:	00d646b3          	xor	a3,a2,a3
    80004ccc:	01537733          	and	a4,t1,s5
    80004cd0:	00e6c6b3          	xor	a3,a3,a4
    80004cd4:	00b685b3          	add	a1,a3,a1
    80004cd8:	06412683          	lw	a3,100(sp)
    80004cdc:	00d50533          	add	a0,a0,a3
    80004ce0:	00a58f33          	add	t5,a1,a0
    80004ce4:	01c50933          	add	s2,a0,t3
    80004ce8:	00695513          	srli	a0,s2,0x6
    80004cec:	01a91593          	slli	a1,s2,0x1a
    80004cf0:	00a5e533          	or	a0,a1,a0
    80004cf4:	00b95593          	srli	a1,s2,0xb
    80004cf8:	01591693          	slli	a3,s2,0x15
    80004cfc:	00b6e5b3          	or	a1,a3,a1
    80004d00:	00b54533          	xor	a0,a0,a1
    80004d04:	01995593          	srli	a1,s2,0x19
    80004d08:	00791693          	slli	a3,s2,0x7
    80004d0c:	00b6e5b3          	or	a1,a3,a1
    80004d10:	00b54533          	xor	a0,a0,a1
    80004d14:	00f885b3          	add	a1,a7,a5
    80004d18:	009846b3          	xor	a3,a6,s1
    80004d1c:	00d976b3          	and	a3,s2,a3
    80004d20:	0096c6b3          	xor	a3,a3,s1
    80004d24:	00d585b3          	add	a1,a1,a3
    80004d28:	00a58533          	add	a0,a1,a0
    80004d2c:	002f5593          	srli	a1,t5,0x2
    80004d30:	01ef1693          	slli	a3,t5,0x1e
    80004d34:	00b6e5b3          	or	a1,a3,a1
    80004d38:	00df5693          	srli	a3,t5,0xd
    80004d3c:	013f1713          	slli	a4,t5,0x13
    80004d40:	00d766b3          	or	a3,a4,a3
    80004d44:	00d5c5b3          	xor	a1,a1,a3
    80004d48:	016f5693          	srli	a3,t5,0x16
    80004d4c:	00af1713          	slli	a4,t5,0xa
    80004d50:	00d766b3          	or	a3,a4,a3
    80004d54:	00d5c5b3          	xor	a1,a1,a3
    80004d58:	014346b3          	xor	a3,t1,s4
    80004d5c:	00df76b3          	and	a3,t5,a3
    80004d60:	00c6c633          	xor	a2,a3,a2
    80004d64:	06012683          	lw	a3,96(sp)
    80004d68:	00d50533          	add	a0,a0,a3
    80004d6c:	00c585b3          	add	a1,a1,a2
    80004d70:	00a582b3          	add	t0,a1,a0
    80004d74:	01550ab3          	add	s5,a0,s5
    80004d78:	006ad513          	srli	a0,s5,0x6
    80004d7c:	01aa9613          	slli	a2,s5,0x1a
    80004d80:	00a66533          	or	a0,a2,a0
    80004d84:	00bad613          	srli	a2,s5,0xb
    80004d88:	015a9693          	slli	a3,s5,0x15
    80004d8c:	00c6e633          	or	a2,a3,a2
    80004d90:	00c54533          	xor	a0,a0,a2
    80004d94:	019ad613          	srli	a2,s5,0x19
    80004d98:	007a9693          	slli	a3,s5,0x7
    80004d9c:	00c6e633          	or	a2,a3,a2
    80004da0:	009086b3          	add	a3,ra,s1
    80004da4:	00c54533          	xor	a0,a0,a2
    80004da8:	01094633          	xor	a2,s2,a6
    80004dac:	00caf633          	and	a2,s5,a2
    80004db0:	01064633          	xor	a2,a2,a6
    80004db4:	00c68633          	add	a2,a3,a2
    80004db8:	00a60533          	add	a0,a2,a0
    80004dbc:	0022d613          	srli	a2,t0,0x2
    80004dc0:	01e29693          	slli	a3,t0,0x1e
    80004dc4:	00c6e633          	or	a2,a3,a2
    80004dc8:	00d2d693          	srli	a3,t0,0xd
    80004dcc:	01329713          	slli	a4,t0,0x13
    80004dd0:	00d766b3          	or	a3,a4,a3
    80004dd4:	00d64633          	xor	a2,a2,a3
    80004dd8:	0162d693          	srli	a3,t0,0x16
    80004ddc:	00a29713          	slli	a4,t0,0xa
    80004de0:	00d766b3          	or	a3,a4,a3
    80004de4:	00d64633          	xor	a2,a2,a3
    80004de8:	01e2f6b3          	and	a3,t0,t5
    80004dec:	006f7733          	and	a4,t5,t1
    80004df0:	00e6c733          	xor	a4,a3,a4
    80004df4:	0062f7b3          	and	a5,t0,t1
    80004df8:	00f74733          	xor	a4,a4,a5
    80004dfc:	00c70633          	add	a2,a4,a2
    80004e00:	05c12703          	lw	a4,92(sp)
    80004e04:	00e50533          	add	a0,a0,a4
    80004e08:	00a608b3          	add	a7,a2,a0
    80004e0c:	01450533          	add	a0,a0,s4
    80004e10:	00655613          	srli	a2,a0,0x6
    80004e14:	01a51713          	slli	a4,a0,0x1a
    80004e18:	00c76633          	or	a2,a4,a2
    80004e1c:	00b55713          	srli	a4,a0,0xb
    80004e20:	01551493          	slli	s1,a0,0x15
    80004e24:	00e4e733          	or	a4,s1,a4
    80004e28:	00e64633          	xor	a2,a2,a4
    80004e2c:	01955713          	srli	a4,a0,0x19
    80004e30:	00751493          	slli	s1,a0,0x7
    80004e34:	00e4e733          	or	a4,s1,a4
    80004e38:	00e64633          	xor	a2,a2,a4
    80004e3c:	010e8733          	add	a4,t4,a6
    80004e40:	012ac4b3          	xor	s1,s5,s2
    80004e44:	009574b3          	and	s1,a0,s1
    80004e48:	0124c4b3          	xor	s1,s1,s2
    80004e4c:	00970733          	add	a4,a4,s1
    80004e50:	00c70633          	add	a2,a4,a2
    80004e54:	0028d713          	srli	a4,a7,0x2
    80004e58:	01e89493          	slli	s1,a7,0x1e
    80004e5c:	00e4e733          	or	a4,s1,a4
    80004e60:	00d8d493          	srli	s1,a7,0xd
    80004e64:	01389413          	slli	s0,a7,0x13
    80004e68:	009464b3          	or	s1,s0,s1
    80004e6c:	00974733          	xor	a4,a4,s1
    80004e70:	0168d493          	srli	s1,a7,0x16
    80004e74:	00a89413          	slli	s0,a7,0xa
    80004e78:	009464b3          	or	s1,s0,s1
    80004e7c:	00974733          	xor	a4,a4,s1
    80004e80:	01e2c4b3          	xor	s1,t0,t5
    80004e84:	0098f4b3          	and	s1,a7,s1
    80004e88:	00d4c6b3          	xor	a3,s1,a3
    80004e8c:	05812783          	lw	a5,88(sp)
    80004e90:	00f60633          	add	a2,a2,a5
    80004e94:	00d706b3          	add	a3,a4,a3
    80004e98:	00c68a33          	add	s4,a3,a2
    80004e9c:	006603b3          	add	t2,a2,t1
    80004ea0:	16412783          	lw	a5,356(sp)
    80004ea4:	0077d613          	srli	a2,a5,0x7
    80004ea8:	01979693          	slli	a3,a5,0x19
    80004eac:	00c6e833          	or	a6,a3,a2
    80004eb0:	007d5693          	srli	a3,s10,0x7
    80004eb4:	019d1713          	slli	a4,s10,0x19
    80004eb8:	00d76333          	or	t1,a4,a3
    80004ebc:	007bd713          	srli	a4,s7,0x7
    80004ec0:	019b9413          	slli	s0,s7,0x19
    80004ec4:	00e46e33          	or	t3,s0,a4
    80004ec8:	15412583          	lw	a1,340(sp)
    80004ecc:	0075d413          	srli	s0,a1,0x7
    80004ed0:	01959613          	slli	a2,a1,0x19
    80004ed4:	008669b3          	or	s3,a2,s0
    80004ed8:	0127d413          	srli	s0,a5,0x12
    80004edc:	00e79693          	slli	a3,a5,0xe
    80004ee0:	00078493          	mv	s1,a5
    80004ee4:	0086e6b3          	or	a3,a3,s0
    80004ee8:	012d5413          	srli	s0,s10,0x12
    80004eec:	00ed1713          	slli	a4,s10,0xe
    80004ef0:	00876733          	or	a4,a4,s0
    80004ef4:	012bd413          	srli	s0,s7,0x12
    80004ef8:	00eb9613          	slli	a2,s7,0xe
    80004efc:	00866633          	or	a2,a2,s0
    80004f00:	0125d413          	srli	s0,a1,0x12
    80004f04:	00e59793          	slli	a5,a1,0xe
    80004f08:	0087e7b3          	or	a5,a5,s0
    80004f0c:	0106c6b3          	xor	a3,a3,a6
    80004f10:	00674733          	xor	a4,a4,t1
    80004f14:	01c64633          	xor	a2,a2,t3
    80004f18:	0137c7b3          	xor	a5,a5,s3
    80004f1c:	0034d413          	srli	s0,s1,0x3
    80004f20:	0086c6b3          	xor	a3,a3,s0
    80004f24:	003d5413          	srli	s0,s10,0x3
    80004f28:	00874733          	xor	a4,a4,s0
    80004f2c:	003bd413          	srli	s0,s7,0x3
    80004f30:	00864633          	xor	a2,a2,s0
    80004f34:	0035d413          	srli	s0,a1,0x3
    80004f38:	0087c7b3          	xor	a5,a5,s0
    80004f3c:	01a68833          	add	a6,a3,s10
    80004f40:	01770333          	add	t1,a4,s7
    80004f44:	00b60633          	add	a2,a2,a1
    80004f48:	16812583          	lw	a1,360(sp)
    80004f4c:	00b787b3          	add	a5,a5,a1
    80004f50:	0110d413          	srli	s0,ra,0x11
    80004f54:	00f09693          	slli	a3,ra,0xf
    80004f58:	0086e6b3          	or	a3,a3,s0
    80004f5c:	0130d413          	srli	s0,ra,0x13
    80004f60:	00d09713          	slli	a4,ra,0xd
    80004f64:	00876733          	or	a4,a4,s0
    80004f68:	14812583          	lw	a1,328(sp)
    80004f6c:	00b787b3          	add	a5,a5,a1
    80004f70:	00e6c6b3          	xor	a3,a3,a4
    80004f74:	00a0d713          	srli	a4,ra,0xa
    80004f78:	00e6c6b3          	xor	a3,a3,a4
    80004f7c:	00d785b3          	add	a1,a5,a3
    80004f80:	011ed693          	srli	a3,t4,0x11
    80004f84:	00fe9713          	slli	a4,t4,0xf
    80004f88:	00d766b3          	or	a3,a4,a3
    80004f8c:	013ed713          	srli	a4,t4,0x13
    80004f90:	00de9793          	slli	a5,t4,0xd
    80004f94:	00e7e733          	or	a4,a5,a4
    80004f98:	01f60633          	add	a2,a2,t6
    80004f9c:	00e6c6b3          	xor	a3,a3,a4
    80004fa0:	00aed713          	srli	a4,t4,0xa
    80004fa4:	00e6c6b3          	xor	a3,a3,a4
    80004fa8:	00d607b3          	add	a5,a2,a3
    80004fac:	0115d613          	srli	a2,a1,0x11
    80004fb0:	00f59693          	slli	a3,a1,0xf
    80004fb4:	00c6e633          	or	a2,a3,a2
    80004fb8:	0135d693          	srli	a3,a1,0x13
    80004fbc:	00d59713          	slli	a4,a1,0xd
    80004fc0:	00d766b3          	or	a3,a4,a3
    80004fc4:	01830733          	add	a4,t1,s8
    80004fc8:	00d64633          	xor	a2,a2,a3
    80004fcc:	00a5d693          	srli	a3,a1,0xa
    80004fd0:	16b12423          	sw	a1,360(sp)
    80004fd4:	00d64633          	xor	a2,a2,a3
    80004fd8:	00c70fb3          	add	t6,a4,a2
    80004fdc:	0117d613          	srli	a2,a5,0x11
    80004fe0:	00f79693          	slli	a3,a5,0xf
    80004fe4:	00c6e633          	or	a2,a3,a2
    80004fe8:	0137d693          	srli	a3,a5,0x13
    80004fec:	00d79713          	slli	a4,a5,0xd
    80004ff0:	00d766b3          	or	a3,a4,a3
    80004ff4:	15c12703          	lw	a4,348(sp)
    80004ff8:	00e80733          	add	a4,a6,a4
    80004ffc:	00d64633          	xor	a2,a2,a3
    80005000:	00a7d693          	srli	a3,a5,0xa
    80005004:	00078313          	mv	t1,a5
    80005008:	14f12223          	sw	a5,324(sp)
    8000500c:	00d64633          	xor	a2,a2,a3
    80005010:	00c70e33          	add	t3,a4,a2
    80005014:	0063d613          	srli	a2,t2,0x6
    80005018:	01a39693          	slli	a3,t2,0x1a
    8000501c:	00c6e633          	or	a2,a3,a2
    80005020:	00b3d693          	srli	a3,t2,0xb
    80005024:	01539713          	slli	a4,t2,0x15
    80005028:	00d766b3          	or	a3,a4,a3
    8000502c:	00d64633          	xor	a2,a2,a3
    80005030:	0193d693          	srli	a3,t2,0x19
    80005034:	00739713          	slli	a4,t2,0x7
    80005038:	00d766b3          	or	a3,a4,a3
    8000503c:	01258733          	add	a4,a1,s2
    80005040:	00d64633          	xor	a2,a2,a3
    80005044:	015546b3          	xor	a3,a0,s5
    80005048:	00d3f6b3          	and	a3,t2,a3
    8000504c:	0156c6b3          	xor	a3,a3,s5
    80005050:	00d706b3          	add	a3,a4,a3
    80005054:	00c68633          	add	a2,a3,a2
    80005058:	002a5693          	srli	a3,s4,0x2
    8000505c:	01ea1713          	slli	a4,s4,0x1e
    80005060:	00d766b3          	or	a3,a4,a3
    80005064:	00da5713          	srli	a4,s4,0xd
    80005068:	013a1793          	slli	a5,s4,0x13
    8000506c:	00e7e733          	or	a4,a5,a4
    80005070:	00e6c6b3          	xor	a3,a3,a4
    80005074:	016a5713          	srli	a4,s4,0x16
    80005078:	00aa1793          	slli	a5,s4,0xa
    8000507c:	00e7e733          	or	a4,a5,a4
    80005080:	00e6c6b3          	xor	a3,a3,a4
    80005084:	011a7833          	and	a6,s4,a7
    80005088:	0058f7b3          	and	a5,a7,t0
    8000508c:	00f847b3          	xor	a5,a6,a5
    80005090:	005a7433          	and	s0,s4,t0
    80005094:	0087c7b3          	xor	a5,a5,s0
    80005098:	00d786b3          	add	a3,a5,a3
    8000509c:	05412703          	lw	a4,84(sp)
    800050a0:	00e60633          	add	a2,a2,a4
    800050a4:	00c68933          	add	s2,a3,a2
    800050a8:	01e60433          	add	s0,a2,t5
    800050ac:	00645613          	srli	a2,s0,0x6
    800050b0:	01a41693          	slli	a3,s0,0x1a
    800050b4:	00c6e633          	or	a2,a3,a2
    800050b8:	00b45693          	srli	a3,s0,0xb
    800050bc:	01541793          	slli	a5,s0,0x15
    800050c0:	00d7e6b3          	or	a3,a5,a3
    800050c4:	00d64633          	xor	a2,a2,a3
    800050c8:	01945693          	srli	a3,s0,0x19
    800050cc:	00741793          	slli	a5,s0,0x7
    800050d0:	00d7e6b3          	or	a3,a5,a3
    800050d4:	00d64633          	xor	a2,a2,a3
    800050d8:	015306b3          	add	a3,t1,s5
    800050dc:	00a3c7b3          	xor	a5,t2,a0
    800050e0:	00f477b3          	and	a5,s0,a5
    800050e4:	00a7c7b3          	xor	a5,a5,a0
    800050e8:	00f686b3          	add	a3,a3,a5
    800050ec:	00c68633          	add	a2,a3,a2
    800050f0:	00295693          	srli	a3,s2,0x2
    800050f4:	01e91793          	slli	a5,s2,0x1e
    800050f8:	00d7e6b3          	or	a3,a5,a3
    800050fc:	00d95793          	srli	a5,s2,0xd
    80005100:	01391713          	slli	a4,s2,0x13
    80005104:	00f76733          	or	a4,a4,a5
    80005108:	00e6c6b3          	xor	a3,a3,a4
    8000510c:	01695713          	srli	a4,s2,0x16
    80005110:	00a91793          	slli	a5,s2,0xa
    80005114:	00e7e733          	or	a4,a5,a4
    80005118:	00e6c6b3          	xor	a3,a3,a4
    8000511c:	011a4733          	xor	a4,s4,a7
    80005120:	00e97733          	and	a4,s2,a4
    80005124:	01074733          	xor	a4,a4,a6
    80005128:	05012783          	lw	a5,80(sp)
    8000512c:	00f607b3          	add	a5,a2,a5
    80005130:	00e68633          	add	a2,a3,a4
    80005134:	00f60bb3          	add	s7,a2,a5
    80005138:	00578833          	add	a6,a5,t0
    8000513c:	00685693          	srli	a3,a6,0x6
    80005140:	01a81713          	slli	a4,a6,0x1a
    80005144:	00d766b3          	or	a3,a4,a3
    80005148:	00b85713          	srli	a4,a6,0xb
    8000514c:	01581793          	slli	a5,a6,0x15
    80005150:	00e7e733          	or	a4,a5,a4
    80005154:	00e6c6b3          	xor	a3,a3,a4
    80005158:	01985713          	srli	a4,a6,0x19
    8000515c:	00781793          	slli	a5,a6,0x7
    80005160:	00e7e733          	or	a4,a5,a4
    80005164:	00af8533          	add	a0,t6,a0
    80005168:	00e6c6b3          	xor	a3,a3,a4
    8000516c:	00744733          	xor	a4,s0,t2
    80005170:	00e87733          	and	a4,a6,a4
    80005174:	00774733          	xor	a4,a4,t2
    80005178:	00e50533          	add	a0,a0,a4
    8000517c:	00d505b3          	add	a1,a0,a3
    80005180:	002bd693          	srli	a3,s7,0x2
    80005184:	01eb9713          	slli	a4,s7,0x1e
    80005188:	00d766b3          	or	a3,a4,a3
    8000518c:	00dbd713          	srli	a4,s7,0xd
    80005190:	013b9793          	slli	a5,s7,0x13
    80005194:	00e7e733          	or	a4,a5,a4
    80005198:	00e6c6b3          	xor	a3,a3,a4
    8000519c:	016bd713          	srli	a4,s7,0x16
    800051a0:	00ab9793          	slli	a5,s7,0xa
    800051a4:	00e7e733          	or	a4,a5,a4
    800051a8:	00e6c6b3          	xor	a3,a3,a4
    800051ac:	012bfab3          	and	s5,s7,s2
    800051b0:	014977b3          	and	a5,s2,s4
    800051b4:	00fac7b3          	xor	a5,s5,a5
    800051b8:	014bf533          	and	a0,s7,s4
    800051bc:	00a7c533          	xor	a0,a5,a0
    800051c0:	00d50533          	add	a0,a0,a3
    800051c4:	04c12603          	lw	a2,76(sp)
    800051c8:	00c586b3          	add	a3,a1,a2
    800051cc:	00d50f33          	add	t5,a0,a3
    800051d0:	011686b3          	add	a3,a3,a7
    800051d4:	0066d513          	srli	a0,a3,0x6
    800051d8:	01a69793          	slli	a5,a3,0x1a
    800051dc:	00a7e533          	or	a0,a5,a0
    800051e0:	00b6d793          	srli	a5,a3,0xb
    800051e4:	01569713          	slli	a4,a3,0x15
    800051e8:	00f76733          	or	a4,a4,a5
    800051ec:	00e54533          	xor	a0,a0,a4
    800051f0:	0196d713          	srli	a4,a3,0x19
    800051f4:	00769793          	slli	a5,a3,0x7
    800051f8:	00e7e733          	or	a4,a5,a4
    800051fc:	00e54533          	xor	a0,a0,a4
    80005200:	007e0733          	add	a4,t3,t2
    80005204:	008847b3          	xor	a5,a6,s0
    80005208:	00f6f7b3          	and	a5,a3,a5
    8000520c:	0087c7b3          	xor	a5,a5,s0
    80005210:	00f70733          	add	a4,a4,a5
    80005214:	00a70533          	add	a0,a4,a0
    80005218:	002f5713          	srli	a4,t5,0x2
    8000521c:	01ef1793          	slli	a5,t5,0x1e
    80005220:	00e7e733          	or	a4,a5,a4
    80005224:	00df5793          	srli	a5,t5,0xd
    80005228:	013f1493          	slli	s1,t5,0x13
    8000522c:	00f4e7b3          	or	a5,s1,a5
    80005230:	00f74733          	xor	a4,a4,a5
    80005234:	016f5793          	srli	a5,t5,0x16
    80005238:	00af1493          	slli	s1,t5,0xa
    8000523c:	00f4e7b3          	or	a5,s1,a5
    80005240:	00f74733          	xor	a4,a4,a5
    80005244:	012bc7b3          	xor	a5,s7,s2
    80005248:	00ff77b3          	and	a5,t5,a5
    8000524c:	0157c7b3          	xor	a5,a5,s5
    80005250:	04812603          	lw	a2,72(sp)
    80005254:	00c50533          	add	a0,a0,a2
    80005258:	00f70733          	add	a4,a4,a5
    8000525c:	00a703b3          	add	t2,a4,a0
    80005260:	01450d33          	add	s10,a0,s4
    80005264:	16012583          	lw	a1,352(sp)
    80005268:	0075d713          	srli	a4,a1,0x7
    8000526c:	01959493          	slli	s1,a1,0x19
    80005270:	00e4e2b3          	or	t0,s1,a4
    80005274:	007cd493          	srli	s1,s9,0x7
    80005278:	019c9713          	slli	a4,s9,0x19
    8000527c:	009768b3          	or	a7,a4,s1
    80005280:	007dd493          	srli	s1,s11,0x7
    80005284:	019d9713          	slli	a4,s11,0x19
    80005288:	00976a33          	or	s4,a4,s1
    8000528c:	14c12503          	lw	a0,332(sp)
    80005290:	00755493          	srli	s1,a0,0x7
    80005294:	01951713          	slli	a4,a0,0x19
    80005298:	00976ab3          	or	s5,a4,s1
    8000529c:	0125d493          	srli	s1,a1,0x12
    800052a0:	00e59713          	slli	a4,a1,0xe
    800052a4:	00976733          	or	a4,a4,s1
    800052a8:	012cd493          	srli	s1,s9,0x12
    800052ac:	00ec9613          	slli	a2,s9,0xe
    800052b0:	009669b3          	or	s3,a2,s1
    800052b4:	012dd493          	srli	s1,s11,0x12
    800052b8:	00ed9793          	slli	a5,s11,0xe
    800052bc:	0097e7b3          	or	a5,a5,s1
    800052c0:	01255493          	srli	s1,a0,0x12
    800052c4:	00e51313          	slli	t1,a0,0xe
    800052c8:	00050613          	mv	a2,a0
    800052cc:	009364b3          	or	s1,t1,s1
    800052d0:	00574733          	xor	a4,a4,t0
    800052d4:	0119c8b3          	xor	a7,s3,a7
    800052d8:	0147c7b3          	xor	a5,a5,s4
    800052dc:	0154c4b3          	xor	s1,s1,s5
    800052e0:	0035d513          	srli	a0,a1,0x3
    800052e4:	00a74533          	xor	a0,a4,a0
    800052e8:	003cd713          	srli	a4,s9,0x3
    800052ec:	00e8c2b3          	xor	t0,a7,a4
    800052f0:	003dd713          	srli	a4,s11,0x3
    800052f4:	00e7c733          	xor	a4,a5,a4
    800052f8:	00365793          	srli	a5,a2,0x3
    800052fc:	00f4c7b3          	xor	a5,s1,a5
    80005300:	019508b3          	add	a7,a0,s9
    80005304:	01b28a33          	add	s4,t0,s11
    80005308:	00c702b3          	add	t0,a4,a2
    8000530c:	16412503          	lw	a0,356(sp)
    80005310:	00a787b3          	add	a5,a5,a0
    80005314:	000f8713          	mv	a4,t6
    80005318:	15f12a23          	sw	t6,340(sp)
    8000531c:	011fd493          	srli	s1,t6,0x11
    80005320:	00ff9513          	slli	a0,t6,0xf
    80005324:	00956533          	or	a0,a0,s1
    80005328:	013fd493          	srli	s1,t6,0x13
    8000532c:	00df9613          	slli	a2,t6,0xd
    80005330:	00966633          	or	a2,a2,s1
    80005334:	15012483          	lw	s1,336(sp)
    80005338:	009787b3          	add	a5,a5,s1
    8000533c:	00c54533          	xor	a0,a0,a2
    80005340:	00afd613          	srli	a2,t6,0xa
    80005344:	00c54533          	xor	a0,a0,a2
    80005348:	00a78fb3          	add	t6,a5,a0
    8000534c:	011e5513          	srli	a0,t3,0x11
    80005350:	00fe1613          	slli	a2,t3,0xf
    80005354:	00a66533          	or	a0,a2,a0
    80005358:	013e5613          	srli	a2,t3,0x13
    8000535c:	00de1793          	slli	a5,t3,0xd
    80005360:	00c7e633          	or	a2,a5,a2
    80005364:	00128733          	add	a4,t0,ra
    80005368:	00c54533          	xor	a0,a0,a2
    8000536c:	00ae5613          	srli	a2,t3,0xa
    80005370:	000e0293          	mv	t0,t3
    80005374:	13c12023          	sw	t3,288(sp)
    80005378:	00c54533          	xor	a0,a0,a2
    8000537c:	00a709b3          	add	s3,a4,a0
    80005380:	011fd513          	srli	a0,t6,0x11
    80005384:	00ff9613          	slli	a2,t6,0xf
    80005388:	00a66533          	or	a0,a2,a0
    8000538c:	013fd613          	srli	a2,t6,0x13
    80005390:	00df9713          	slli	a4,t6,0xd
    80005394:	00c76633          	or	a2,a4,a2
    80005398:	01da0733          	add	a4,s4,t4
    8000539c:	00c54533          	xor	a0,a0,a2
    800053a0:	00afd613          	srli	a2,t6,0xa
    800053a4:	00c54533          	xor	a0,a0,a2
    800053a8:	00a70cb3          	add	s9,a4,a0
    800053ac:	0119d513          	srli	a0,s3,0x11
    800053b0:	00f99613          	slli	a2,s3,0xf
    800053b4:	00a66533          	or	a0,a2,a0
    800053b8:	0139d613          	srli	a2,s3,0x13
    800053bc:	00d99713          	slli	a4,s3,0xd
    800053c0:	00c76633          	or	a2,a4,a2
    800053c4:	16812703          	lw	a4,360(sp)
    800053c8:	00e88733          	add	a4,a7,a4
    800053cc:	00c54533          	xor	a0,a0,a2
    800053d0:	00a9d613          	srli	a2,s3,0xa
    800053d4:	00c54533          	xor	a0,a0,a2
    800053d8:	00a70a33          	add	s4,a4,a0
    800053dc:	006d5513          	srli	a0,s10,0x6
    800053e0:	01ad1613          	slli	a2,s10,0x1a
    800053e4:	00a66533          	or	a0,a2,a0
    800053e8:	00bd5613          	srli	a2,s10,0xb
    800053ec:	015d1713          	slli	a4,s10,0x15
    800053f0:	00c76633          	or	a2,a4,a2
    800053f4:	00c54533          	xor	a0,a0,a2
    800053f8:	019d5613          	srli	a2,s10,0x19
    800053fc:	007d1713          	slli	a4,s10,0x7
    80005400:	00c76633          	or	a2,a4,a2
    80005404:	008f8733          	add	a4,t6,s0
    80005408:	00c54533          	xor	a0,a0,a2
    8000540c:	0106c633          	xor	a2,a3,a6
    80005410:	00cd7633          	and	a2,s10,a2
    80005414:	01064633          	xor	a2,a2,a6
    80005418:	00c70633          	add	a2,a4,a2
    8000541c:	00a60533          	add	a0,a2,a0
    80005420:	0023d613          	srli	a2,t2,0x2
    80005424:	01e39713          	slli	a4,t2,0x1e
    80005428:	00c76633          	or	a2,a4,a2
    8000542c:	00d3d713          	srli	a4,t2,0xd
    80005430:	01339793          	slli	a5,t2,0x13
    80005434:	00e7e733          	or	a4,a5,a4
    80005438:	00e64633          	xor	a2,a2,a4
    8000543c:	0163d713          	srli	a4,t2,0x16
    80005440:	00a39793          	slli	a5,t2,0xa
    80005444:	00e7e733          	or	a4,a5,a4
    80005448:	00e64633          	xor	a2,a2,a4
    8000544c:	01e3f733          	and	a4,t2,t5
    80005450:	017f77b3          	and	a5,t5,s7
    80005454:	00f747b3          	xor	a5,a4,a5
    80005458:	0173f4b3          	and	s1,t2,s7
    8000545c:	0097c7b3          	xor	a5,a5,s1
    80005460:	00c78633          	add	a2,a5,a2
    80005464:	04412783          	lw	a5,68(sp)
    80005468:	00f50533          	add	a0,a0,a5
    8000546c:	00a60ab3          	add	s5,a2,a0
    80005470:	01250433          	add	s0,a0,s2
    80005474:	00645513          	srli	a0,s0,0x6
    80005478:	01a41613          	slli	a2,s0,0x1a
    8000547c:	00a66533          	or	a0,a2,a0
    80005480:	00b45613          	srli	a2,s0,0xb
    80005484:	01541793          	slli	a5,s0,0x15
    80005488:	00c7e633          	or	a2,a5,a2
    8000548c:	00c54533          	xor	a0,a0,a2
    80005490:	01945613          	srli	a2,s0,0x19
    80005494:	00741793          	slli	a5,s0,0x7
    80005498:	00c7e633          	or	a2,a5,a2
    8000549c:	00c54533          	xor	a0,a0,a2
    800054a0:	010985b3          	add	a1,s3,a6
    800054a4:	00dd4633          	xor	a2,s10,a3
    800054a8:	00c47633          	and	a2,s0,a2
    800054ac:	00d64633          	xor	a2,a2,a3
    800054b0:	00c585b3          	add	a1,a1,a2
    800054b4:	00a58533          	add	a0,a1,a0
    800054b8:	002ad593          	srli	a1,s5,0x2
    800054bc:	01ea9613          	slli	a2,s5,0x1e
    800054c0:	00b665b3          	or	a1,a2,a1
    800054c4:	00dad613          	srli	a2,s5,0xd
    800054c8:	013a9793          	slli	a5,s5,0x13
    800054cc:	00c7e633          	or	a2,a5,a2
    800054d0:	00c5c5b3          	xor	a1,a1,a2
    800054d4:	016ad613          	srli	a2,s5,0x16
    800054d8:	00aa9793          	slli	a5,s5,0xa
    800054dc:	00c7e633          	or	a2,a5,a2
    800054e0:	00c5c5b3          	xor	a1,a1,a2
    800054e4:	01e3c633          	xor	a2,t2,t5
    800054e8:	00caf633          	and	a2,s5,a2
    800054ec:	00e64633          	xor	a2,a2,a4
    800054f0:	04012703          	lw	a4,64(sp)
    800054f4:	00e50533          	add	a0,a0,a4
    800054f8:	00c585b3          	add	a1,a1,a2
    800054fc:	00a58db3          	add	s11,a1,a0
    80005500:	01750bb3          	add	s7,a0,s7
    80005504:	006bd513          	srli	a0,s7,0x6
    80005508:	01ab9593          	slli	a1,s7,0x1a
    8000550c:	00a5e533          	or	a0,a1,a0
    80005510:	00bbd593          	srli	a1,s7,0xb
    80005514:	015b9713          	slli	a4,s7,0x15
    80005518:	00b765b3          	or	a1,a4,a1
    8000551c:	00b54533          	xor	a0,a0,a1
    80005520:	019bd593          	srli	a1,s7,0x19
    80005524:	007b9713          	slli	a4,s7,0x7
    80005528:	00b765b3          	or	a1,a4,a1
    8000552c:	00dc86b3          	add	a3,s9,a3
    80005530:	00b54533          	xor	a0,a0,a1
    80005534:	01a445b3          	xor	a1,s0,s10
    80005538:	00bbf5b3          	and	a1,s7,a1
    8000553c:	01a5c5b3          	xor	a1,a1,s10
    80005540:	00b685b3          	add	a1,a3,a1
    80005544:	00a58533          	add	a0,a1,a0
    80005548:	002dd593          	srli	a1,s11,0x2
    8000554c:	01ed9693          	slli	a3,s11,0x1e
    80005550:	00b6e5b3          	or	a1,a3,a1
    80005554:	00ddd693          	srli	a3,s11,0xd
    80005558:	013d9713          	slli	a4,s11,0x13
    8000555c:	00d766b3          	or	a3,a4,a3
    80005560:	00d5c5b3          	xor	a1,a1,a3
    80005564:	016dd693          	srli	a3,s11,0x16
    80005568:	00ad9713          	slli	a4,s11,0xa
    8000556c:	00d766b3          	or	a3,a4,a3
    80005570:	00d5c5b3          	xor	a1,a1,a3
    80005574:	015df4b3          	and	s1,s11,s5
    80005578:	007af6b3          	and	a3,s5,t2
    8000557c:	00d4c6b3          	xor	a3,s1,a3
    80005580:	007df7b3          	and	a5,s11,t2
    80005584:	00f6c6b3          	xor	a3,a3,a5
    80005588:	00b685b3          	add	a1,a3,a1
    8000558c:	03c12603          	lw	a2,60(sp)
    80005590:	00c50533          	add	a0,a0,a2
    80005594:	00a58933          	add	s2,a1,a0
    80005598:	01e508b3          	add	a7,a0,t5
    8000559c:	0068d513          	srli	a0,a7,0x6
    800055a0:	01a89593          	slli	a1,a7,0x1a
    800055a4:	00a5e533          	or	a0,a1,a0
    800055a8:	00b8d593          	srli	a1,a7,0xb
    800055ac:	01589793          	slli	a5,a7,0x15
    800055b0:	00b7e5b3          	or	a1,a5,a1
    800055b4:	00b54533          	xor	a0,a0,a1
    800055b8:	0198d593          	srli	a1,a7,0x19
    800055bc:	00789793          	slli	a5,a7,0x7
    800055c0:	00b7e5b3          	or	a1,a5,a1
    800055c4:	00b54533          	xor	a0,a0,a1
    800055c8:	01aa05b3          	add	a1,s4,s10
    800055cc:	008bc7b3          	xor	a5,s7,s0
    800055d0:	00f8f7b3          	and	a5,a7,a5
    800055d4:	0087c7b3          	xor	a5,a5,s0
    800055d8:	00f585b3          	add	a1,a1,a5
    800055dc:	00a58533          	add	a0,a1,a0
    800055e0:	00295593          	srli	a1,s2,0x2
    800055e4:	01e91793          	slli	a5,s2,0x1e
    800055e8:	00b7e5b3          	or	a1,a5,a1
    800055ec:	00d95793          	srli	a5,s2,0xd
    800055f0:	01391713          	slli	a4,s2,0x13
    800055f4:	00f76733          	or	a4,a4,a5
    800055f8:	00e5c5b3          	xor	a1,a1,a4
    800055fc:	01695713          	srli	a4,s2,0x16
    80005600:	00a91793          	slli	a5,s2,0xa
    80005604:	00e7e733          	or	a4,a5,a4
    80005608:	00e5c5b3          	xor	a1,a1,a4
    8000560c:	015dc733          	xor	a4,s11,s5
    80005610:	00e97733          	and	a4,s2,a4
    80005614:	00974733          	xor	a4,a4,s1
    80005618:	03812603          	lw	a2,56(sp)
    8000561c:	00c50533          	add	a0,a0,a2
    80005620:	00e585b3          	add	a1,a1,a4
    80005624:	00a58d33          	add	s10,a1,a0
    80005628:	00750733          	add	a4,a0,t2
    8000562c:	15c12683          	lw	a3,348(sp)
    80005630:	0076d513          	srli	a0,a3,0x7
    80005634:	01969793          	slli	a5,a3,0x19
    80005638:	00a7e833          	or	a6,a5,a0
    8000563c:	007c5793          	srli	a5,s8,0x7
    80005640:	019c1513          	slli	a0,s8,0x19
    80005644:	00f56333          	or	t1,a0,a5
    80005648:	007b5793          	srli	a5,s6,0x7
    8000564c:	019b1513          	slli	a0,s6,0x19
    80005650:	00f56f33          	or	t5,a0,a5
    80005654:	14812603          	lw	a2,328(sp)
    80005658:	00765793          	srli	a5,a2,0x7
    8000565c:	01961513          	slli	a0,a2,0x19
    80005660:	00060393          	mv	t2,a2
    80005664:	00f56633          	or	a2,a0,a5
    80005668:	0126d793          	srli	a5,a3,0x12
    8000566c:	00e69513          	slli	a0,a3,0xe
    80005670:	00f56533          	or	a0,a0,a5
    80005674:	012c5793          	srli	a5,s8,0x12
    80005678:	00ec1593          	slli	a1,s8,0xe
    8000567c:	00f5e5b3          	or	a1,a1,a5
    80005680:	012b5793          	srli	a5,s6,0x12
    80005684:	00eb1493          	slli	s1,s6,0xe
    80005688:	00f4e7b3          	or	a5,s1,a5
    8000568c:	0123d493          	srli	s1,t2,0x12
    80005690:	00e39e13          	slli	t3,t2,0xe
    80005694:	009e64b3          	or	s1,t3,s1
    80005698:	01054533          	xor	a0,a0,a6
    8000569c:	0065c5b3          	xor	a1,a1,t1
    800056a0:	01e7c7b3          	xor	a5,a5,t5
    800056a4:	00c4c4b3          	xor	s1,s1,a2
    800056a8:	0036d613          	srli	a2,a3,0x3
    800056ac:	00c54533          	xor	a0,a0,a2
    800056b0:	003c5613          	srli	a2,s8,0x3
    800056b4:	00c5c5b3          	xor	a1,a1,a2
    800056b8:	003b5613          	srli	a2,s6,0x3
    800056bc:	00c7c633          	xor	a2,a5,a2
    800056c0:	0033d793          	srli	a5,t2,0x3
    800056c4:	00f4c7b3          	xor	a5,s1,a5
    800056c8:	01850833          	add	a6,a0,s8
    800056cc:	016586b3          	add	a3,a1,s6
    800056d0:	00760633          	add	a2,a2,t2
    800056d4:	16012503          	lw	a0,352(sp)
    800056d8:	00a787b3          	add	a5,a5,a0
    800056dc:	011cd493          	srli	s1,s9,0x11
    800056e0:	00fc9513          	slli	a0,s9,0xf
    800056e4:	00956533          	or	a0,a0,s1
    800056e8:	013cd493          	srli	s1,s9,0x13
    800056ec:	00dc9593          	slli	a1,s9,0xd
    800056f0:	0095e5b3          	or	a1,a1,s1
    800056f4:	14412483          	lw	s1,324(sp)
    800056f8:	009787b3          	add	a5,a5,s1
    800056fc:	00b54533          	xor	a0,a0,a1
    80005700:	00acd593          	srli	a1,s9,0xa
    80005704:	00b54533          	xor	a0,a0,a1
    80005708:	00a78f33          	add	t5,a5,a0
    8000570c:	011a5513          	srli	a0,s4,0x11
    80005710:	00fa1593          	slli	a1,s4,0xf
    80005714:	00a5e533          	or	a0,a1,a0
    80005718:	013a5593          	srli	a1,s4,0x13
    8000571c:	00da1793          	slli	a5,s4,0xd
    80005720:	00b7e5b3          	or	a1,a5,a1
    80005724:	15412783          	lw	a5,340(sp)
    80005728:	00f60633          	add	a2,a2,a5
    8000572c:	00b54533          	xor	a0,a0,a1
    80005730:	00aa5593          	srli	a1,s4,0xa
    80005734:	00b54533          	xor	a0,a0,a1
    80005738:	00a607b3          	add	a5,a2,a0
    8000573c:	011f5513          	srli	a0,t5,0x11
    80005740:	00ff1593          	slli	a1,t5,0xf
    80005744:	00a5e533          	or	a0,a1,a0
    80005748:	013f5593          	srli	a1,t5,0x13
    8000574c:	00df1613          	slli	a2,t5,0xd
    80005750:	00b665b3          	or	a1,a2,a1
    80005754:	00568633          	add	a2,a3,t0
    80005758:	00b54533          	xor	a0,a0,a1
    8000575c:	00af5593          	srli	a1,t5,0xa
    80005760:	00b54533          	xor	a0,a0,a1
    80005764:	00a60b33          	add	s6,a2,a0
    80005768:	0117d513          	srli	a0,a5,0x11
    8000576c:	00f79593          	slli	a1,a5,0xf
    80005770:	00a5e533          	or	a0,a1,a0
    80005774:	0137d593          	srli	a1,a5,0x13
    80005778:	00d79613          	slli	a2,a5,0xd
    8000577c:	00b665b3          	or	a1,a2,a1
    80005780:	01f80633          	add	a2,a6,t6
    80005784:	00b54533          	xor	a0,a0,a1
    80005788:	00a7d593          	srli	a1,a5,0xa
    8000578c:	00078693          	mv	a3,a5
    80005790:	16f12023          	sw	a5,352(sp)
    80005794:	00b54533          	xor	a0,a0,a1
    80005798:	00a603b3          	add	t2,a2,a0
    8000579c:	00675513          	srli	a0,a4,0x6
    800057a0:	01a71593          	slli	a1,a4,0x1a
    800057a4:	00a5e533          	or	a0,a1,a0
    800057a8:	00b75593          	srli	a1,a4,0xb
    800057ac:	01571613          	slli	a2,a4,0x15
    800057b0:	00b665b3          	or	a1,a2,a1
    800057b4:	00b54533          	xor	a0,a0,a1
    800057b8:	01975593          	srli	a1,a4,0x19
    800057bc:	00771613          	slli	a2,a4,0x7
    800057c0:	00b665b3          	or	a1,a2,a1
    800057c4:	008f0633          	add	a2,t5,s0
    800057c8:	00b54533          	xor	a0,a0,a1
    800057cc:	0178c5b3          	xor	a1,a7,s7
    800057d0:	00b775b3          	and	a1,a4,a1
    800057d4:	0175c5b3          	xor	a1,a1,s7
    800057d8:	00b605b3          	add	a1,a2,a1
    800057dc:	00a58533          	add	a0,a1,a0
    800057e0:	002d5593          	srli	a1,s10,0x2
    800057e4:	01ed1613          	slli	a2,s10,0x1e
    800057e8:	00b665b3          	or	a1,a2,a1
    800057ec:	00dd5613          	srli	a2,s10,0xd
    800057f0:	013d1793          	slli	a5,s10,0x13
    800057f4:	00c7e633          	or	a2,a5,a2
    800057f8:	00c5c5b3          	xor	a1,a1,a2
    800057fc:	016d5613          	srli	a2,s10,0x16
    80005800:	00ad1793          	slli	a5,s10,0xa
    80005804:	00c7e633          	or	a2,a5,a2
    80005808:	00c5c5b3          	xor	a1,a1,a2
    8000580c:	012d7633          	and	a2,s10,s2
    80005810:	01b977b3          	and	a5,s2,s11
    80005814:	00f647b3          	xor	a5,a2,a5
    80005818:	01bd74b3          	and	s1,s10,s11
    8000581c:	0097c7b3          	xor	a5,a5,s1
    80005820:	00b785b3          	add	a1,a5,a1
    80005824:	03412783          	lw	a5,52(sp)
    80005828:	00f50533          	add	a0,a0,a5
    8000582c:	00a58e33          	add	t3,a1,a0
    80005830:	01550c33          	add	s8,a0,s5
    80005834:	006c5793          	srli	a5,s8,0x6
    80005838:	01ac1493          	slli	s1,s8,0x1a
    8000583c:	00f4e7b3          	or	a5,s1,a5
    80005840:	00bc5493          	srli	s1,s8,0xb
    80005844:	015c1413          	slli	s0,s8,0x15
    80005848:	009464b3          	or	s1,s0,s1
    8000584c:	0097c7b3          	xor	a5,a5,s1
    80005850:	019c5493          	srli	s1,s8,0x19
    80005854:	007c1413          	slli	s0,s8,0x7
    80005858:	009464b3          	or	s1,s0,s1
    8000585c:	0097c7b3          	xor	a5,a5,s1
    80005860:	017684b3          	add	s1,a3,s7
    80005864:	01174433          	xor	s0,a4,a7
    80005868:	008c7433          	and	s0,s8,s0
    8000586c:	01144433          	xor	s0,s0,a7
    80005870:	008484b3          	add	s1,s1,s0
    80005874:	00f487b3          	add	a5,s1,a5
    80005878:	002e5493          	srli	s1,t3,0x2
    8000587c:	01ee1413          	slli	s0,t3,0x1e
    80005880:	009464b3          	or	s1,s0,s1
    80005884:	00de5413          	srli	s0,t3,0xd
    80005888:	013e1593          	slli	a1,t3,0x13
    8000588c:	0085e5b3          	or	a1,a1,s0
    80005890:	00b4c5b3          	xor	a1,s1,a1
    80005894:	016e5493          	srli	s1,t3,0x16
    80005898:	00ae1413          	slli	s0,t3,0xa
    8000589c:	009464b3          	or	s1,s0,s1
    800058a0:	0095c5b3          	xor	a1,a1,s1
    800058a4:	012d44b3          	xor	s1,s10,s2
    800058a8:	009e74b3          	and	s1,t3,s1
    800058ac:	00c4c633          	xor	a2,s1,a2
    800058b0:	03012503          	lw	a0,48(sp)
    800058b4:	00a787b3          	add	a5,a5,a0
    800058b8:	00c585b3          	add	a1,a1,a2
    800058bc:	00f582b3          	add	t0,a1,a5
    800058c0:	01b78833          	add	a6,a5,s11
    800058c4:	00685593          	srli	a1,a6,0x6
    800058c8:	01a81793          	slli	a5,a6,0x1a
    800058cc:	00b7e5b3          	or	a1,a5,a1
    800058d0:	00b85793          	srli	a5,a6,0xb
    800058d4:	01581493          	slli	s1,a6,0x15
    800058d8:	00f4e7b3          	or	a5,s1,a5
    800058dc:	00f5c5b3          	xor	a1,a1,a5
    800058e0:	01985793          	srli	a5,a6,0x19
    800058e4:	00781493          	slli	s1,a6,0x7
    800058e8:	00f4e7b3          	or	a5,s1,a5
    800058ec:	011b06b3          	add	a3,s6,a7
    800058f0:	00f5c5b3          	xor	a1,a1,a5
    800058f4:	00ec47b3          	xor	a5,s8,a4
    800058f8:	00f877b3          	and	a5,a6,a5
    800058fc:	00e7c7b3          	xor	a5,a5,a4
    80005900:	00f686b3          	add	a3,a3,a5
    80005904:	00b68633          	add	a2,a3,a1
    80005908:	0022d693          	srli	a3,t0,0x2
    8000590c:	01e29793          	slli	a5,t0,0x1e
    80005910:	00d7e6b3          	or	a3,a5,a3
    80005914:	00d2d793          	srli	a5,t0,0xd
    80005918:	01329493          	slli	s1,t0,0x13
    8000591c:	00f4e7b3          	or	a5,s1,a5
    80005920:	00f6c6b3          	xor	a3,a3,a5
    80005924:	0162d793          	srli	a5,t0,0x16
    80005928:	00a29493          	slli	s1,t0,0xa
    8000592c:	00f4e7b3          	or	a5,s1,a5
    80005930:	00f6c6b3          	xor	a3,a3,a5
    80005934:	01c2fbb3          	and	s7,t0,t3
    80005938:	01ae77b3          	and	a5,t3,s10
    8000593c:	00fbc7b3          	xor	a5,s7,a5
    80005940:	01a2f5b3          	and	a1,t0,s10
    80005944:	00b7c5b3          	xor	a1,a5,a1
    80005948:	00d585b3          	add	a1,a1,a3
    8000594c:	02c12503          	lw	a0,44(sp)
    80005950:	00a606b3          	add	a3,a2,a0
    80005954:	00d58ab3          	add	s5,a1,a3
    80005958:	012687b3          	add	a5,a3,s2
    8000595c:	0067d593          	srli	a1,a5,0x6
    80005960:	01a79693          	slli	a3,a5,0x1a
    80005964:	00b6e5b3          	or	a1,a3,a1
    80005968:	00b7d693          	srli	a3,a5,0xb
    8000596c:	01579493          	slli	s1,a5,0x15
    80005970:	00d4e6b3          	or	a3,s1,a3
    80005974:	00d5c5b3          	xor	a1,a1,a3
    80005978:	0197d693          	srli	a3,a5,0x19
    8000597c:	00779493          	slli	s1,a5,0x7
    80005980:	00d4e6b3          	or	a3,s1,a3
    80005984:	00d5c5b3          	xor	a1,a1,a3
    80005988:	00e386b3          	add	a3,t2,a4
    8000598c:	01884733          	xor	a4,a6,s8
    80005990:	00e7f733          	and	a4,a5,a4
    80005994:	01874733          	xor	a4,a4,s8
    80005998:	00e686b3          	add	a3,a3,a4
    8000599c:	00b685b3          	add	a1,a3,a1
    800059a0:	002ad693          	srli	a3,s5,0x2
    800059a4:	01ea9713          	slli	a4,s5,0x1e
    800059a8:	00d766b3          	or	a3,a4,a3
    800059ac:	00dad713          	srli	a4,s5,0xd
    800059b0:	013a9493          	slli	s1,s5,0x13
    800059b4:	00e4e733          	or	a4,s1,a4
    800059b8:	00e6c6b3          	xor	a3,a3,a4
    800059bc:	016ad713          	srli	a4,s5,0x16
    800059c0:	00aa9493          	slli	s1,s5,0xa
    800059c4:	00e4e733          	or	a4,s1,a4
    800059c8:	00e6c6b3          	xor	a3,a3,a4
    800059cc:	01c2c733          	xor	a4,t0,t3
    800059d0:	00eaf733          	and	a4,s5,a4
    800059d4:	01774733          	xor	a4,a4,s7
    800059d8:	02812503          	lw	a0,40(sp)
    800059dc:	00a585b3          	add	a1,a1,a0
    800059e0:	00e686b3          	add	a3,a3,a4
    800059e4:	00b68db3          	add	s11,a3,a1
    800059e8:	01a584b3          	add	s1,a1,s10
    800059ec:	16812683          	lw	a3,360(sp)
    800059f0:	0076d593          	srli	a1,a3,0x7
    800059f4:	01969713          	slli	a4,a3,0x19
    800059f8:	00b768b3          	or	a7,a4,a1
    800059fc:	007ed713          	srli	a4,t4,0x7
    80005a00:	019e9593          	slli	a1,t4,0x19
    80005a04:	00e5e933          	or	s2,a1,a4
    80005a08:	0070d713          	srli	a4,ra,0x7
    80005a0c:	01909593          	slli	a1,ra,0x19
    80005a10:	00e5ebb3          	or	s7,a1,a4
    80005a14:	15012603          	lw	a2,336(sp)
    80005a18:	00765713          	srli	a4,a2,0x7
    80005a1c:	01961593          	slli	a1,a2,0x19
    80005a20:	00e5e333          	or	t1,a1,a4
    80005a24:	0126d713          	srli	a4,a3,0x12
    80005a28:	00e69593          	slli	a1,a3,0xe
    80005a2c:	00068513          	mv	a0,a3
    80005a30:	00e5ed33          	or	s10,a1,a4
    80005a34:	012ed713          	srli	a4,t4,0x12
    80005a38:	00ee9693          	slli	a3,t4,0xe
    80005a3c:	00e6e6b3          	or	a3,a3,a4
    80005a40:	0120d713          	srli	a4,ra,0x12
    80005a44:	00e09413          	slli	s0,ra,0xe
    80005a48:	00e46733          	or	a4,s0,a4
    80005a4c:	01265413          	srli	s0,a2,0x12
    80005a50:	00e61593          	slli	a1,a2,0xe
    80005a54:	0085e5b3          	or	a1,a1,s0
    80005a58:	011d4433          	xor	s0,s10,a7
    80005a5c:	0126c6b3          	xor	a3,a3,s2
    80005a60:	01774733          	xor	a4,a4,s7
    80005a64:	0065c5b3          	xor	a1,a1,t1
    80005a68:	00355513          	srli	a0,a0,0x3
    80005a6c:	00a44533          	xor	a0,s0,a0
    80005a70:	003ed413          	srli	s0,t4,0x3
    80005a74:	0086c6b3          	xor	a3,a3,s0
    80005a78:	0030d413          	srli	s0,ra,0x3
    80005a7c:	00874733          	xor	a4,a4,s0
    80005a80:	00365413          	srli	s0,a2,0x3
    80005a84:	0085c5b3          	xor	a1,a1,s0
    80005a88:	01d50533          	add	a0,a0,t4
    80005a8c:	001686b3          	add	a3,a3,ra
    80005a90:	00c70733          	add	a4,a4,a2
    80005a94:	15c12603          	lw	a2,348(sp)
    80005a98:	00c585b3          	add	a1,a1,a2
    80005a9c:	01e50f33          	add	t5,a0,t5
    80005aa0:	01468eb3          	add	t4,a3,s4
    80005aa4:	01970733          	add	a4,a4,s9
    80005aa8:	013585b3          	add	a1,a1,s3
    80005aac:	011b5413          	srli	s0,s6,0x11
    80005ab0:	00fb1513          	slli	a0,s6,0xf
    80005ab4:	00856533          	or	a0,a0,s0
    80005ab8:	013b5413          	srli	s0,s6,0x13
    80005abc:	00db1693          	slli	a3,s6,0xd
    80005ac0:	0086e6b3          	or	a3,a3,s0
    80005ac4:	00d54533          	xor	a0,a0,a3
    80005ac8:	00ab5693          	srli	a3,s6,0xa
    80005acc:	00d54533          	xor	a0,a0,a3
    80005ad0:	00a580b3          	add	ra,a1,a0
    80005ad4:	16712223          	sw	t2,356(sp)
    80005ad8:	0113d513          	srli	a0,t2,0x11
    80005adc:	00f39593          	slli	a1,t2,0xf
    80005ae0:	00a5e533          	or	a0,a1,a0
    80005ae4:	0133d593          	srli	a1,t2,0x13
    80005ae8:	00d39693          	slli	a3,t2,0xd
    80005aec:	00b6e5b3          	or	a1,a3,a1
    80005af0:	00b54533          	xor	a0,a0,a1
    80005af4:	00a3d593          	srli	a1,t2,0xa
    80005af8:	00b54533          	xor	a0,a0,a1
    80005afc:	00a70533          	add	a0,a4,a0
    80005b00:	0110d593          	srli	a1,ra,0x11
    80005b04:	00f09693          	slli	a3,ra,0xf
    80005b08:	00b6e5b3          	or	a1,a3,a1
    80005b0c:	0130d693          	srli	a3,ra,0x13
    80005b10:	00d09713          	slli	a4,ra,0xd
    80005b14:	00d766b3          	or	a3,a4,a3
    80005b18:	00d5c5b3          	xor	a1,a1,a3
    80005b1c:	00a0d693          	srli	a3,ra,0xa
    80005b20:	00d5c5b3          	xor	a1,a1,a3
    80005b24:	00be8eb3          	add	t4,t4,a1
    80005b28:	01155593          	srli	a1,a0,0x11
    80005b2c:	00f51693          	slli	a3,a0,0xf
    80005b30:	00b6e5b3          	or	a1,a3,a1
    80005b34:	01355693          	srli	a3,a0,0x13
    80005b38:	00d51713          	slli	a4,a0,0xd
    80005b3c:	00d766b3          	or	a3,a4,a3
    80005b40:	00d5c5b3          	xor	a1,a1,a3
    80005b44:	00a55693          	srli	a3,a0,0xa
    80005b48:	00d5c5b3          	xor	a1,a1,a3
    80005b4c:	00bf0333          	add	t1,t5,a1
    80005b50:	00930f33          	add	t5,t1,s1
    80005b54:	00fe8933          	add	s2,t4,a5
    80005b58:	01050a33          	add	s4,a0,a6
    80005b5c:	01808533          	add	a0,ra,s8
    80005b60:	0064d593          	srli	a1,s1,0x6
    80005b64:	01a49713          	slli	a4,s1,0x1a
    80005b68:	00b765b3          	or	a1,a4,a1
    80005b6c:	00b4d713          	srli	a4,s1,0xb
    80005b70:	01549413          	slli	s0,s1,0x15
    80005b74:	00e46733          	or	a4,s0,a4
    80005b78:	00e5c5b3          	xor	a1,a1,a4
    80005b7c:	0194d713          	srli	a4,s1,0x19
    80005b80:	00749413          	slli	s0,s1,0x7
    80005b84:	00e46733          	or	a4,s0,a4
    80005b88:	00e5c5b3          	xor	a1,a1,a4
    80005b8c:	0107c733          	xor	a4,a5,a6
    80005b90:	00e4f733          	and	a4,s1,a4
    80005b94:	01074633          	xor	a2,a4,a6
    80005b98:	00c50533          	add	a0,a0,a2
    80005b9c:	00b50533          	add	a0,a0,a1
    80005ba0:	02412583          	lw	a1,36(sp)
    80005ba4:	00b505b3          	add	a1,a0,a1
    80005ba8:	002dd513          	srli	a0,s11,0x2
    80005bac:	01ed9613          	slli	a2,s11,0x1e
    80005bb0:	00a66533          	or	a0,a2,a0
    80005bb4:	00ddd613          	srli	a2,s11,0xd
    80005bb8:	013d9713          	slli	a4,s11,0x13
    80005bbc:	00c76633          	or	a2,a4,a2
    80005bc0:	00c54533          	xor	a0,a0,a2
    80005bc4:	016dd613          	srli	a2,s11,0x16
    80005bc8:	00ad9713          	slli	a4,s11,0xa
    80005bcc:	00c76633          	or	a2,a4,a2
    80005bd0:	00c54533          	xor	a0,a0,a2
    80005bd4:	015df633          	and	a2,s11,s5
    80005bd8:	005df733          	and	a4,s11,t0
    80005bdc:	005af433          	and	s0,s5,t0
    80005be0:	00864433          	xor	s0,a2,s0
    80005be4:	00e44733          	xor	a4,s0,a4
    80005be8:	00a70533          	add	a0,a4,a0
    80005bec:	00b50bb3          	add	s7,a0,a1
    80005bf0:	01c585b3          	add	a1,a1,t3
    80005bf4:	0065d713          	srli	a4,a1,0x6
    80005bf8:	01a59413          	slli	s0,a1,0x1a
    80005bfc:	00e46733          	or	a4,s0,a4
    80005c00:	00b5d413          	srli	s0,a1,0xb
    80005c04:	01559693          	slli	a3,a1,0x15
    80005c08:	0086e6b3          	or	a3,a3,s0
    80005c0c:	00d746b3          	xor	a3,a4,a3
    80005c10:	0195d713          	srli	a4,a1,0x19
    80005c14:	00759413          	slli	s0,a1,0x7
    80005c18:	00e46733          	or	a4,s0,a4
    80005c1c:	00e6c6b3          	xor	a3,a3,a4
    80005c20:	00f4c733          	xor	a4,s1,a5
    80005c24:	00e5f733          	and	a4,a1,a4
    80005c28:	00f74733          	xor	a4,a4,a5
    80005c2c:	00ea0733          	add	a4,s4,a4
    80005c30:	00d706b3          	add	a3,a4,a3
    80005c34:	02012503          	lw	a0,32(sp)
    80005c38:	00a686b3          	add	a3,a3,a0
    80005c3c:	002bd713          	srli	a4,s7,0x2
    80005c40:	01eb9793          	slli	a5,s7,0x1e
    80005c44:	00e7e733          	or	a4,a5,a4
    80005c48:	00dbd793          	srli	a5,s7,0xd
    80005c4c:	013b9413          	slli	s0,s7,0x13
    80005c50:	00f467b3          	or	a5,s0,a5
    80005c54:	00f74733          	xor	a4,a4,a5
    80005c58:	016bd793          	srli	a5,s7,0x16
    80005c5c:	00ab9413          	slli	s0,s7,0xa
    80005c60:	00f467b3          	or	a5,s0,a5
    80005c64:	00f74733          	xor	a4,a4,a5
    80005c68:	015dc7b3          	xor	a5,s11,s5
    80005c6c:	00fbf7b3          	and	a5,s7,a5
    80005c70:	00c7c633          	xor	a2,a5,a2
    80005c74:	00c70633          	add	a2,a4,a2
    80005c78:	00d60733          	add	a4,a2,a3
    80005c7c:	00568433          	add	s0,a3,t0
    80005c80:	00645613          	srli	a2,s0,0x6
    80005c84:	01a41693          	slli	a3,s0,0x1a
    80005c88:	00c6e633          	or	a2,a3,a2
    80005c8c:	00b45693          	srli	a3,s0,0xb
    80005c90:	01541793          	slli	a5,s0,0x15
    80005c94:	00d7e6b3          	or	a3,a5,a3
    80005c98:	00d64633          	xor	a2,a2,a3
    80005c9c:	01945693          	srli	a3,s0,0x19
    80005ca0:	00741793          	slli	a5,s0,0x7
    80005ca4:	00d7e6b3          	or	a3,a5,a3
    80005ca8:	00d64633          	xor	a2,a2,a3
    80005cac:	0095c6b3          	xor	a3,a1,s1
    80005cb0:	00d476b3          	and	a3,s0,a3
    80005cb4:	0096c6b3          	xor	a3,a3,s1
    80005cb8:	00d906b3          	add	a3,s2,a3
    80005cbc:	00c68633          	add	a2,a3,a2
    80005cc0:	01c12503          	lw	a0,28(sp)
    80005cc4:	00a60633          	add	a2,a2,a0
    80005cc8:	00275693          	srli	a3,a4,0x2
    80005ccc:	01e71793          	slli	a5,a4,0x1e
    80005cd0:	00d7e6b3          	or	a3,a5,a3
    80005cd4:	00d75793          	srli	a5,a4,0xd
    80005cd8:	01371493          	slli	s1,a4,0x13
    80005cdc:	00f4e7b3          	or	a5,s1,a5
    80005ce0:	00f6c6b3          	xor	a3,a3,a5
    80005ce4:	01675793          	srli	a5,a4,0x16
    80005ce8:	00a71493          	slli	s1,a4,0xa
    80005cec:	00f4e7b3          	or	a5,s1,a5
    80005cf0:	00f6c6b3          	xor	a3,a3,a5
    80005cf4:	01777833          	and	a6,a4,s7
    80005cf8:	01b777b3          	and	a5,a4,s11
    80005cfc:	01bbf4b3          	and	s1,s7,s11
    80005d00:	009844b3          	xor	s1,a6,s1
    80005d04:	00f4c7b3          	xor	a5,s1,a5
    80005d08:	00d786b3          	add	a3,a5,a3
    80005d0c:	00c68e33          	add	t3,a3,a2
    80005d10:	01560d33          	add	s10,a2,s5
    80005d14:	006d5613          	srli	a2,s10,0x6
    80005d18:	01ad1693          	slli	a3,s10,0x1a
    80005d1c:	00c6e633          	or	a2,a3,a2
    80005d20:	00bd5693          	srli	a3,s10,0xb
    80005d24:	015d1793          	slli	a5,s10,0x15
    80005d28:	00d7e6b3          	or	a3,a5,a3
    80005d2c:	00d64633          	xor	a2,a2,a3
    80005d30:	019d5693          	srli	a3,s10,0x19
    80005d34:	007d1793          	slli	a5,s10,0x7
    80005d38:	00d7e6b3          	or	a3,a5,a3
    80005d3c:	00d64633          	xor	a2,a2,a3
    80005d40:	00b446b3          	xor	a3,s0,a1
    80005d44:	00dd76b3          	and	a3,s10,a3
    80005d48:	00b6c6b3          	xor	a3,a3,a1
    80005d4c:	00df06b3          	add	a3,t5,a3
    80005d50:	00c68633          	add	a2,a3,a2
    80005d54:	01812503          	lw	a0,24(sp)
    80005d58:	00a606b3          	add	a3,a2,a0
    80005d5c:	002e5613          	srli	a2,t3,0x2
    80005d60:	01ee1793          	slli	a5,t3,0x1e
    80005d64:	00c7e633          	or	a2,a5,a2
    80005d68:	00de5793          	srli	a5,t3,0xd
    80005d6c:	013e1513          	slli	a0,t3,0x13
    80005d70:	00f56533          	or	a0,a0,a5
    80005d74:	00a64533          	xor	a0,a2,a0
    80005d78:	016e5613          	srli	a2,t3,0x16
    80005d7c:	00ae1793          	slli	a5,t3,0xa
    80005d80:	00c7e633          	or	a2,a5,a2
    80005d84:	00c54533          	xor	a0,a0,a2
    80005d88:	01774633          	xor	a2,a4,s7
    80005d8c:	00ce7633          	and	a2,t3,a2
    80005d90:	01064633          	xor	a2,a2,a6
    80005d94:	00c50533          	add	a0,a0,a2
    80005d98:	00d50ab3          	add	s5,a0,a3
    80005d9c:	01b68cb3          	add	s9,a3,s11
    80005da0:	007fd513          	srli	a0,t6,0x7
    80005da4:	019f9793          	slli	a5,t6,0x19
    80005da8:	00a7e833          	or	a6,a5,a0
    80005dac:	12012883          	lw	a7,288(sp)
    80005db0:	0078d793          	srli	a5,a7,0x7
    80005db4:	01989513          	slli	a0,a7,0x19
    80005db8:	00f56f33          	or	t5,a0,a5
    80005dbc:	15412983          	lw	s3,340(sp)
    80005dc0:	0079d793          	srli	a5,s3,0x7
    80005dc4:	01999513          	slli	a0,s3,0x19
    80005dc8:	00f56933          	or	s2,a0,a5
    80005dcc:	14412483          	lw	s1,324(sp)
    80005dd0:	0074d793          	srli	a5,s1,0x7
    80005dd4:	01949513          	slli	a0,s1,0x19
    80005dd8:	00f56a33          	or	s4,a0,a5
    80005ddc:	012fd793          	srli	a5,t6,0x12
    80005de0:	00ef9513          	slli	a0,t6,0xe
    80005de4:	00f56c33          	or	s8,a0,a5
    80005de8:	0128d793          	srli	a5,a7,0x12
    80005dec:	00e89613          	slli	a2,a7,0xe
    80005df0:	00f66633          	or	a2,a2,a5
    80005df4:	0129d793          	srli	a5,s3,0x12
    80005df8:	00e99513          	slli	a0,s3,0xe
    80005dfc:	00f562b3          	or	t0,a0,a5
    80005e00:	0124d793          	srli	a5,s1,0x12
    80005e04:	00e49693          	slli	a3,s1,0xe
    80005e08:	00048513          	mv	a0,s1
    80005e0c:	00f6e6b3          	or	a3,a3,a5
    80005e10:	010c47b3          	xor	a5,s8,a6
    80005e14:	01e64633          	xor	a2,a2,t5
    80005e18:	0122c833          	xor	a6,t0,s2
    80005e1c:	0146c6b3          	xor	a3,a3,s4
    80005e20:	003fd493          	srli	s1,t6,0x3
    80005e24:	0097cf33          	xor	t5,a5,s1
    80005e28:	0038d793          	srli	a5,a7,0x3
    80005e2c:	00f64933          	xor	s2,a2,a5
    80005e30:	0039d613          	srli	a2,s3,0x3
    80005e34:	00c847b3          	xor	a5,a6,a2
    80005e38:	00355613          	srli	a2,a0,0x3
    80005e3c:	00c6c633          	xor	a2,a3,a2
    80005e40:	00a78533          	add	a0,a5,a0
    80005e44:	16812683          	lw	a3,360(sp)
    80005e48:	00d60633          	add	a2,a2,a3
    80005e4c:	01650533          	add	a0,a0,s6
    80005e50:	16012683          	lw	a3,352(sp)
    80005e54:	00d60633          	add	a2,a2,a3
    80005e58:	011ed693          	srli	a3,t4,0x11
    80005e5c:	00fe9793          	slli	a5,t4,0xf
    80005e60:	00d7e6b3          	or	a3,a5,a3
    80005e64:	013ed793          	srli	a5,t4,0x13
    80005e68:	00de9493          	slli	s1,t4,0xd
    80005e6c:	00f4e7b3          	or	a5,s1,a5
    80005e70:	00f6c6b3          	xor	a3,a3,a5
    80005e74:	00aed793          	srli	a5,t4,0xa
    80005e78:	13412e83          	lw	t4,308(sp)
    80005e7c:	00f6c6b3          	xor	a3,a3,a5
    80005e80:	00d60633          	add	a2,a2,a3
    80005e84:	01135693          	srli	a3,t1,0x11
    80005e88:	00f31793          	slli	a5,t1,0xf
    80005e8c:	00d7e6b3          	or	a3,a5,a3
    80005e90:	01335793          	srli	a5,t1,0x13
    80005e94:	00d31493          	slli	s1,t1,0xd
    80005e98:	00f4e7b3          	or	a5,s1,a5
    80005e9c:	00f6c6b3          	xor	a3,a3,a5
    80005ea0:	00a35793          	srli	a5,t1,0xa
    80005ea4:	00f6c6b3          	xor	a3,a3,a5
    80005ea8:	00d50533          	add	a0,a0,a3
    80005eac:	01165693          	srli	a3,a2,0x11
    80005eb0:	00f61793          	slli	a5,a2,0xf
    80005eb4:	00d7e6b3          	or	a3,a5,a3
    80005eb8:	01365793          	srli	a5,a2,0x13
    80005ebc:	00d61493          	slli	s1,a2,0xd
    80005ec0:	00f4e7b3          	or	a5,s1,a5
    80005ec4:	00f6c6b3          	xor	a3,a3,a5
    80005ec8:	00a65793          	srli	a5,a2,0xa
    80005ecc:	00f6c3b3          	xor	t2,a3,a5
    80005ed0:	01155693          	srli	a3,a0,0x11
    80005ed4:	00f51793          	slli	a5,a0,0xf
    80005ed8:	00d7e6b3          	or	a3,a5,a3
    80005edc:	01355793          	srli	a5,a0,0x13
    80005ee0:	00d51493          	slli	s1,a0,0xd
    80005ee4:	00f4e7b3          	or	a5,s1,a5
    80005ee8:	00f6c6b3          	xor	a3,a3,a5
    80005eec:	00a55793          	srli	a5,a0,0xa
    80005ef0:	00f6c2b3          	xor	t0,a3,a5
    80005ef4:	008506b3          	add	a3,a0,s0
    80005ef8:	00b60533          	add	a0,a2,a1
    80005efc:	006cd593          	srli	a1,s9,0x6
    80005f00:	01ac9613          	slli	a2,s9,0x1a
    80005f04:	00b665b3          	or	a1,a2,a1
    80005f08:	00bcd613          	srli	a2,s9,0xb
    80005f0c:	015c9793          	slli	a5,s9,0x15
    80005f10:	00c7e633          	or	a2,a5,a2
    80005f14:	00c5c5b3          	xor	a1,a1,a2
    80005f18:	019cd613          	srli	a2,s9,0x19
    80005f1c:	007c9793          	slli	a5,s9,0x7
    80005f20:	00c7e633          	or	a2,a5,a2
    80005f24:	00c5c5b3          	xor	a1,a1,a2
    80005f28:	008d4633          	xor	a2,s10,s0
    80005f2c:	00ccf633          	and	a2,s9,a2
    80005f30:	00864633          	xor	a2,a2,s0
    80005f34:	00c50533          	add	a0,a0,a2
    80005f38:	00b50533          	add	a0,a0,a1
    80005f3c:	01412583          	lw	a1,20(sp)
    80005f40:	00b50533          	add	a0,a0,a1
    80005f44:	002ad593          	srli	a1,s5,0x2
    80005f48:	01ea9613          	slli	a2,s5,0x1e
    80005f4c:	00b665b3          	or	a1,a2,a1
    80005f50:	00dad613          	srli	a2,s5,0xd
    80005f54:	013a9793          	slli	a5,s5,0x13
    80005f58:	00c7e633          	or	a2,a5,a2
    80005f5c:	00c5c5b3          	xor	a1,a1,a2
    80005f60:	016ad613          	srli	a2,s5,0x16
    80005f64:	00aa9793          	slli	a5,s5,0xa
    80005f68:	00c7e633          	or	a2,a5,a2
    80005f6c:	00c5c5b3          	xor	a1,a1,a2
    80005f70:	01caf633          	and	a2,s5,t3
    80005f74:	00eaf7b3          	and	a5,s5,a4
    80005f78:	00ee74b3          	and	s1,t3,a4
    80005f7c:	009644b3          	xor	s1,a2,s1
    80005f80:	00f4c7b3          	xor	a5,s1,a5
    80005f84:	00b785b3          	add	a1,a5,a1
    80005f88:	00a585b3          	add	a1,a1,a0
    80005f8c:	01750533          	add	a0,a0,s7
    80005f90:	00655793          	srli	a5,a0,0x6
    80005f94:	01a51493          	slli	s1,a0,0x1a
    80005f98:	00f4e7b3          	or	a5,s1,a5
    80005f9c:	00b55493          	srli	s1,a0,0xb
    80005fa0:	01551413          	slli	s0,a0,0x15
    80005fa4:	009464b3          	or	s1,s0,s1
    80005fa8:	0097c7b3          	xor	a5,a5,s1
    80005fac:	01955493          	srli	s1,a0,0x19
    80005fb0:	00751413          	slli	s0,a0,0x7
    80005fb4:	009464b3          	or	s1,s0,s1
    80005fb8:	0097c7b3          	xor	a5,a5,s1
    80005fbc:	01acc4b3          	xor	s1,s9,s10
    80005fc0:	009574b3          	and	s1,a0,s1
    80005fc4:	01a4c4b3          	xor	s1,s1,s10
    80005fc8:	009686b3          	add	a3,a3,s1
    80005fcc:	00f686b3          	add	a3,a3,a5
    80005fd0:	0025d793          	srli	a5,a1,0x2
    80005fd4:	01e59493          	slli	s1,a1,0x1e
    80005fd8:	00f4e7b3          	or	a5,s1,a5
    80005fdc:	00d5d493          	srli	s1,a1,0xd
    80005fe0:	01359413          	slli	s0,a1,0x13
    80005fe4:	009464b3          	or	s1,s0,s1
    80005fe8:	0097c7b3          	xor	a5,a5,s1
    80005fec:	0165d493          	srli	s1,a1,0x16
    80005ff0:	00a59413          	slli	s0,a1,0xa
    80005ff4:	009464b3          	or	s1,s0,s1
    80005ff8:	01012403          	lw	s0,16(sp)
    80005ffc:	008686b3          	add	a3,a3,s0
    80006000:	0097c7b3          	xor	a5,a5,s1
    80006004:	01cac4b3          	xor	s1,s5,t3
    80006008:	0095f4b3          	and	s1,a1,s1
    8000600c:	00c4c633          	xor	a2,s1,a2
    80006010:	00c78633          	add	a2,a5,a2
    80006014:	00d60433          	add	s0,a2,a3
    80006018:	00e68733          	add	a4,a3,a4
    8000601c:	00675613          	srli	a2,a4,0x6
    80006020:	01a71693          	slli	a3,a4,0x1a
    80006024:	00c6e633          	or	a2,a3,a2
    80006028:	00b75693          	srli	a3,a4,0xb
    8000602c:	01571793          	slli	a5,a4,0x15
    80006030:	00d7e6b3          	or	a3,a5,a3
    80006034:	00d64633          	xor	a2,a2,a3
    80006038:	01975693          	srli	a3,a4,0x19
    8000603c:	00771793          	slli	a5,a4,0x7
    80006040:	00d7e6b3          	or	a3,a5,a3
    80006044:	00d64633          	xor	a2,a2,a3
    80006048:	012986b3          	add	a3,s3,s2
    8000604c:	13012903          	lw	s2,304(sp)
    80006050:	16412783          	lw	a5,356(sp)
    80006054:	00f686b3          	add	a3,a3,a5
    80006058:	019547b3          	xor	a5,a0,s9
    8000605c:	00f777b3          	and	a5,a4,a5
    80006060:	0197c7b3          	xor	a5,a5,s9
    80006064:	007686b3          	add	a3,a3,t2
    80006068:	13812383          	lw	t2,312(sp)
    8000606c:	01a686b3          	add	a3,a3,s10
    80006070:	00f686b3          	add	a3,a3,a5
    80006074:	00c68633          	add	a2,a3,a2
    80006078:	00c12683          	lw	a3,12(sp)
    8000607c:	00d60633          	add	a2,a2,a3
    80006080:	00245693          	srli	a3,s0,0x2
    80006084:	01e41793          	slli	a5,s0,0x1e
    80006088:	00d7e6b3          	or	a3,a5,a3
    8000608c:	00d45793          	srli	a5,s0,0xd
    80006090:	01341493          	slli	s1,s0,0x13
    80006094:	00f4e7b3          	or	a5,s1,a5
    80006098:	00f6c6b3          	xor	a3,a3,a5
    8000609c:	01645793          	srli	a5,s0,0x16
    800060a0:	00a41493          	slli	s1,s0,0xa
    800060a4:	00f4e7b3          	or	a5,s1,a5
    800060a8:	00f6c6b3          	xor	a3,a3,a5
    800060ac:	00b47833          	and	a6,s0,a1
    800060b0:	015474b3          	and	s1,s0,s5
    800060b4:	0155f7b3          	and	a5,a1,s5
    800060b8:	00f847b3          	xor	a5,a6,a5
    800060bc:	0097c7b3          	xor	a5,a5,s1
    800060c0:	00d786b3          	add	a3,a5,a3
    800060c4:	00c686b3          	add	a3,a3,a2
    800060c8:	01c60633          	add	a2,a2,t3
    800060cc:	00665793          	srli	a5,a2,0x6
    800060d0:	01a61493          	slli	s1,a2,0x1a
    800060d4:	00f4e333          	or	t1,s1,a5
    800060d8:	00b65493          	srli	s1,a2,0xb
    800060dc:	01561793          	slli	a5,a2,0x15
    800060e0:	0097e7b3          	or	a5,a5,s1
    800060e4:	00f34333          	xor	t1,t1,a5
    800060e8:	01965493          	srli	s1,a2,0x19
    800060ec:	00761793          	slli	a5,a2,0x7
    800060f0:	0097e7b3          	or	a5,a5,s1
    800060f4:	00f34333          	xor	t1,t1,a5
    800060f8:	01e884b3          	add	s1,a7,t5
    800060fc:	001484b3          	add	s1,s1,ra
    80006100:	005484b3          	add	s1,s1,t0
    80006104:	00a747b3          	xor	a5,a4,a0
    80006108:	00f677b3          	and	a5,a2,a5
    8000610c:	00a7c7b3          	xor	a5,a5,a0
    80006110:	019484b3          	add	s1,s1,s9
    80006114:	00f487b3          	add	a5,s1,a5
    80006118:	006788b3          	add	a7,a5,t1
    8000611c:	0026d493          	srli	s1,a3,0x2
    80006120:	01e69793          	slli	a5,a3,0x1e
    80006124:	0097e2b3          	or	t0,a5,s1
    80006128:	00d6d493          	srli	s1,a3,0xd
    8000612c:	01369793          	slli	a5,a3,0x13
    80006130:	0097e7b3          	or	a5,a5,s1
    80006134:	00f2c2b3          	xor	t0,t0,a5
    80006138:	0166d493          	srli	s1,a3,0x16
    8000613c:	00a69793          	slli	a5,a3,0xa
    80006140:	0097e7b3          	or	a5,a5,s1
    80006144:	00f2c2b3          	xor	t0,t0,a5
    80006148:	00b444b3          	xor	s1,s0,a1
    8000614c:	0096f4b3          	and	s1,a3,s1
    80006150:	0104c4b3          	xor	s1,s1,a6
    80006154:	13c12803          	lw	a6,316(sp)
    80006158:	12412783          	lw	a5,292(sp)
    8000615c:	00f484b3          	add	s1,s1,a5
    80006160:	005487b3          	add	a5,s1,t0
    80006164:	01268933          	add	s2,a3,s2
    80006168:	01d40eb3          	add	t4,s0,t4
    8000616c:	007583b3          	add	t2,a1,t2
    80006170:	12812583          	lw	a1,296(sp)
    80006174:	00ba85b3          	add	a1,s5,a1
    80006178:	12c12403          	lw	s0,300(sp)
    8000617c:	00812683          	lw	a3,8(sp)
    80006180:	00d886b3          	add	a3,a7,a3
    80006184:	00d784b3          	add	s1,a5,a3
    80006188:	15812b03          	lw	s6,344(sp)
    8000618c:	00d58ab3          	add	s5,a1,a3
    80006190:	01060833          	add	a6,a2,a6
    80006194:	01670b33          	add	s6,a4,s6
    80006198:	14012a03          	lw	s4,320(sp)
    8000619c:	04040413          	addi	s0,s0,64
    800061a0:	01450a33          	add	s4,a0,s4
    800061a4:	10c12503          	lw	a0,268(sp)
    800061a8:	00a40463          	beq	s0,a0,800061b0 <sha2::sha256::soft::compress+0x4014>
    800061ac:	b8cfc06f          	j	80002538 <sha2::sha256::soft::compress+0x39c>
    800061b0:	00412503          	lw	a0,4(sp)
    800061b4:	00952023          	sw	s1,0(a0)
    800061b8:	01252223          	sw	s2,4(a0)
    800061bc:	01d52423          	sw	t4,8(a0)
    800061c0:	00752623          	sw	t2,12(a0)
    800061c4:	01552823          	sw	s5,16(a0)
    800061c8:	01052a23          	sw	a6,20(a0)
    800061cc:	01652c23          	sw	s6,24(a0)
    800061d0:	01452e23          	sw	s4,28(a0)
    800061d4:	1ac12d83          	lw	s11,428(sp)
    800061d8:	1b012d03          	lw	s10,432(sp)
    800061dc:	1b412c83          	lw	s9,436(sp)
    800061e0:	1b812c03          	lw	s8,440(sp)
    800061e4:	1bc12b83          	lw	s7,444(sp)
    800061e8:	1c012b03          	lw	s6,448(sp)
    800061ec:	1c412a83          	lw	s5,452(sp)
    800061f0:	1c812a03          	lw	s4,456(sp)
    800061f4:	1cc12983          	lw	s3,460(sp)
    800061f8:	1d012903          	lw	s2,464(sp)
    800061fc:	1d412483          	lw	s1,468(sp)
    80006200:	1d812403          	lw	s0,472(sp)
    80006204:	1dc12083          	lw	ra,476(sp)
    80006208:	1e010113          	addi	sp,sp,480
    8000620c:	00008067          	ret
    

    The notable thing about this is how the keys (from K32) are handled. At the moment, the loop starts by copying all of them onto the stack for some reason. This has several disadvantages:

    • Reduced cache locality, since the stack is rather volatile across function calls compared to a block in the RO section.
    • Initial overhead is three instructions for storing, one for reading. Writing the constant directly where it's needed would take only two instructions. Therefore, at least two/three loads are needed to break even (instruction wise). However, as far as I can tell every stack offset is only read once.
    • Memory bus overhead: The data effectively passes three times through the memory bus (instruction -> stack -> register), whereas only once would be needed.

    I'd suggest doing one of the following:

    • Somehow get the code generator to not use the stack for this
    • Somehow get the code generator to put the data in a RO section
    • Write a custom asm implementation targetting RISC-V

    Note that these problem are rather specific to RISC-V 32 bit and Sha256. I have not checked other configurations, but I'm rather certain that the different data sizes will lead to different tradeoffs between the options.

    performance 
    opened by piegamesde 6
Owner
Rust Crypto
Cryptographic algorithms written in pure Rust
Rust Crypto
Fastmurmur3 - Fast non-cryptographic hash, with the benchmarks to prove it.

Fastmurmur3 Murmur3 is a fast, non-cryptographic hash function. fastmurmur3 is, in my testing, the fastest implementation of Murmur3. Usage let bytes:

Kurt Wolf 14 Sep 22, 2022
Dexios-Core is a library used for managing cryptographic functions and headers that adhere to the Dexios format.

What is it? Dexios-Core is a library used for managing cryptographic functions and headers that adhere to the Dexios format. Security Dexios-Core uses

brxken 3 Jul 4, 2022
A (mostly) pure-Rust implementation of various cryptographic algorithms.

Rust-Crypto A (mostly) pure-Rust implementation of various common cryptographic algorithms. Rust-Crypto seeks to create practical, auditable, pure-Rus

null 1.2k Sep 22, 2022
Pure Rust implementation of the RNCryptor cryptographic format by Rob Napier

rncryptor Rust Implementation of the RNCryptor spec This library implements the specification for the RNCryptor encrypted file format by Rob Napier. d

null 7 Jun 29, 2022
Pure-Rust traits and utilities for constant-time cryptographic implementations.

subtle Pure-Rust traits and utilities for constant-time cryptographic implementations. It consists of a Choice type, and a collection of traits using

dalek cryptography 189 Sep 21, 2022
Collection of block cipher algorithms written in pure Rust

RustCrypto: block ciphers Collection of block ciphers and block modes written in pure Rust. Warnings Currently only the aes crate provides constant-ti

Rust Crypto 490 Sep 20, 2022
A rust binding for nodejs to generate md5 hash value

Hasher A rust binding for creating node module to generate md5 hash value This project was bootstrapped by create-neon. Installing hasher Installing h

Md. Al-Amin 0 Nov 7, 2021
Elliptic-curves - Collection of pure Rust elliptic curve implementations (e.g. P-256, P-384, secp256k1)

RustCrypto: Elliptic Curves General purpose Elliptic Curve Cryptography (ECC) support, including types and traits for representing various elliptic cu

Rust Crypto 357 Sep 19, 2022
Highly modular & configurable hash & crypto library

Octavo Highly modular & configurable hash & crypto library written in pure Rust. Installation [dependencies] octavo = { git = "https://github.com/libO

Octavo Developers 137 Aug 27, 2022
Reference implementation for the Poseidon Snark-friendly Hash algorithm.

Dusk-Poseidon Reference implementation for the Poseidon Hashing algorithm. Reference Starkad and Poseidon: New Hash Functions for Zero Knowledge Proof

Dusk Network 81 Sep 9, 2022
paq files to hash.

paq paq files to hash. Hash a single file or all files in directory recursively. Installation Requires cargo. Run cargo install paq. Usage Run paq [sr

gregory langlais 3 Jul 17, 2022
An implementation of Jakobsson's Fractal Hash Sequence Traversal algorithm

fractal-hash-traversal An implementation of Jakobsson's Fractal Hash Sequence Traversal algorithm. There is at least one hash traversal algorithm that

Dan Cline 1 Jan 12, 2022
computed data's hash by webAssembly

wasm-hasher computed data's hash by webAssembly support md5,sha1,sha2-224,sha2-356,sha2-384,sha2-512,sha3-224,sha3-256,sha3-384,sha3-512,china-sm3 typ

fuyoo 2 Jul 27, 2022
Generates a unique hash/identifier for a system given a set of parameters.

uniqueid ?? Generates a unique hash/identifier for a system given a set of parameters. Example usage use uniqueid; pub fn main() { let data = vec

Checksum 2 Aug 19, 2022
Left To My Own Devices - NT hash tools

ntcrack Left To My Own Devices - NT cracker A full writeup of how it works is available at the SensePost blog Invocation ./ntcrack <input hashlist> <w

SensePost 18 Aug 4, 2022
Sodium Oxide: Fast cryptographic library for Rust (bindings to libsodium)

sodiumoxide |Crate|Documentation|Gitter| |:---:|:-----------:|:--------:|:-----:|:------:|:----:| |||| NaCl (pronounced "salt") is a new easy-to-use h

sodiumoxide 639 Sep 23, 2022
Secure storage for cryptographic secrets in Rust

secrets secrets is a library to help Rust programmers safely held cryptographic secrets in memory. It is mostly an ergonomic wrapper around the memory

Stephen Touset 151 Sep 2, 2022
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Sep 21, 2022
Modern Cryptographic Firmware

Trussedยฎ Modern Cryptographic Firmware Status Very much WIP. Actively developed. Unstable APIs.

Trussedยฎ 279 Sep 3, 2022