| 2197 | |
| 2198 | #[cfg_attr(not(target_arch = "riscv64"), allow(unused_mut))] |
| 2199 | let mut env = Env::new(); |
| 2200 | env.main = main; |
| 2201 | env.assumptions = assumptions.into_iter().collect(); |
| 2202 | |
| 2203 | // Section 1: Blobs (hash-verified per entry) |
| 2204 | for (addr, bytes) in read_blob_section(buf, "Env::get")? { |
| 2205 | env.blobs.insert(addr, bytes); |
| 2206 | } |
| 2207 | if verbose { |
| 2208 | eprintln!( |
| 2209 | "[Env::get] section 1/6 blobs: {} entries ({} bytes) in {:.2}s", |
| 2210 | env.blobs.len(), |
| 2211 | sec_bytes - buf.len(), |
| 2212 | sec_start.elapsed().as_secs_f64(), |
| 2213 | ); |
| 2214 | sec_start = std::time::Instant::now(); |
| 2215 | sec_bytes = buf.len(); |
| 2216 | } |
| 2217 | |
| 2218 | // Section 2: Consts (lazy: read length prefix, slice bytes, defer parse) |
| 2219 | let num_consts = get_u64(buf)?; |