diff --git a/docs/book/src/reference/compiler_intrinsics.md b/docs/book/src/reference/compiler_intrinsics.md index 63701601499..2b14c80deb0 100644 --- a/docs/book/src/reference/compiler_intrinsics.md +++ b/docs/book/src/reference/compiler_intrinsics.md @@ -408,3 +408,30 @@ on real nodes and it only increases gas usage. **Constraints:** - `T` must implement Debug + +--- + +```sway +__transmute(src: A) -> B +``` + +**Description:** Reinterprets the bits of a value of one type as another type. + +**Constraints:** A and B must have the exactly same size. + +--- + +```sway +__runtime_mem_id() -> u64 +__encoding_mem_id() -> u64 +``` + +**Description:** Returns an opaque number that identifies the memory representation of a type. No information is conveyed by this number and should only be compared for equality. + +This number is not guaranteed to be stable on different compiler versions. + +`__runtime_mem_id` represents how the type is represented inside the VM. + +`__encoding_mem_id` represents how the type is encoded. It returns 0 when a type does not have encoding representation. + +**Constraints:** None diff --git a/forc-plugins/forc-client/tests/deploy.rs b/forc-plugins/forc-client/tests/deploy.rs index 2df58a39566..6d2f6d66608 100644 --- a/forc-plugins/forc-client/tests/deploy.rs +++ b/forc-plugins/forc-client/tests/deploy.rs @@ -377,7 +377,7 @@ async fn test_simple_deploy() { node.kill().unwrap(); let expected = vec![DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "307a59fbb6888da41942653ca21d9c71e06d72edb58b8d775eea87c7e755ebdb", + "e3e0f5c8c9585a7dc6673775a73104acc847905b5e7ea085db822241444fee7e", ) .unwrap(), proxy: None, @@ -421,7 +421,7 @@ async fn test_deploy_submit_only() { node.kill().unwrap(); let expected = vec![DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "307a59fbb6888da41942653ca21d9c71e06d72edb58b8d775eea87c7e755ebdb", + "e3e0f5c8c9585a7dc6673775a73104acc847905b5e7ea085db822241444fee7e", ) .unwrap(), proxy: None, @@ -468,12 +468,12 @@ async fn test_deploy_fresh_proxy() { node.kill().unwrap(); let impl_contract = DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "307a59fbb6888da41942653ca21d9c71e06d72edb58b8d775eea87c7e755ebdb", + "e3e0f5c8c9585a7dc6673775a73104acc847905b5e7ea085db822241444fee7e", ) .unwrap(), proxy: Some( ContractId::from_str( - "70a447780b00c9725859bbef1cd327a9455cc62fbe607a0524b2c82a5846f5a9", + "92343c25e373958aee4cecfe58ab6533261b5f54de471291c22ee05182d39122", ) .unwrap(), ), diff --git a/forc/tests/cli_integration.rs b/forc/tests/cli_integration.rs index 4355a69ac2a..adc6de09689 100644 --- a/forc/tests/cli_integration.rs +++ b/forc/tests/cli_integration.rs @@ -51,10 +51,10 @@ fn test_forc_test_raw_logs() -> Result<(), rexpect::error::Error> { // Assert that the output is correct process.exp_string(" test test_log_4")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12044,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.exp_string(" test test_log_2")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12044,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.process.exit()?; Ok(()) @@ -77,12 +77,12 @@ fn test_forc_test_both_logs() -> Result<(), rexpect::error::Error> { process.exp_string("decoded log values:")?; process.exp_string("4, log rb: 1515152261580153489")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12044,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.exp_string(" test test_log_2")?; process.exp_string("decoded log values:")?; process.exp_string("2, log rb: 1515152261580153489")?; process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12044,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12312,"ptr":67108856,"ra":0,"rb":1515152261580153489}}]"#)?; process.process.exit()?; Ok(()) } diff --git a/sway-ast/src/intrinsics.rs b/sway-ast/src/intrinsics.rs index a11346e58dc..b76b8957a49 100644 --- a/sway-ast/src/intrinsics.rs +++ b/sway-ast/src/intrinsics.rs @@ -46,6 +46,8 @@ pub enum Intrinsic { ElemAt, // let elem: &T = __elem_at::(item: T, index) Transmute, // let dst: B = __transmute::(src) Dbg, // __dbg(value) + RuntimeMemoryId, // __runtime_mem_id::() -> u64 + EncodingMemoryId, // __encoding_mem_id::() -> u64 } impl fmt::Display for Intrinsic { @@ -94,6 +96,8 @@ impl fmt::Display for Intrinsic { Intrinsic::ElemAt => "elem_at", Intrinsic::Transmute => "transmute", Intrinsic::Dbg => "dbg", + Intrinsic::RuntimeMemoryId => "runtime_mem_id", + Intrinsic::EncodingMemoryId => "encoding_mem_id", }; write!(f, "{s}") } @@ -146,6 +150,8 @@ impl Intrinsic { "__elem_at" => ElemAt, "__transmute" => Transmute, "__dbg" => Dbg, + "__runtime_mem_id" => RuntimeMemoryId, + "__encoding_mem_id" => EncodingMemoryId, _ => return None, }) } diff --git a/sway-core/src/ir_generation/const_eval.rs b/sway-core/src/ir_generation/const_eval.rs index 7676f042824..d3773adfc93 100644 --- a/sway-core/src/ir_generation/const_eval.rs +++ b/sway-core/src/ir_generation/const_eval.rs @@ -1,10 +1,12 @@ use std::{ + hash::{DefaultHasher, Hash}, io::Read, ops::{BitAnd, BitOr, BitXor, Not, Rem}, }; use crate::{ engine_threading::*, + ir_generation::function::{get_encoding_representation, get_memory_id}, language::{ ty::{self, TyConstantDecl, TyIntrinsicFunctionKind}, CallPath, Literal, @@ -1693,6 +1695,50 @@ fn const_eval_intrinsic( Intrinsic::Dbg => { unreachable!("__dbg should not exist in the typed tree") } + Intrinsic::RuntimeMemoryId => { + assert!(intrinsic.type_arguments.len() == 1); + assert!(intrinsic.arguments.is_empty()); + + let t = &intrinsic.type_arguments[0]; + let t = convert_resolved_type_id( + lookup.engines, + lookup.context, + lookup.md_mgr, + lookup.module, + lookup.function_compiler, + t.type_id(), + &t.span(), + ) + .unwrap(); + + let id = get_memory_id(lookup.context, t); + let c = ConstantContent { + ty: Type::get_uint64(lookup.context), + value: ConstantValue::Uint(id), + }; + + Ok(Some(Constant::unique(lookup.context, c))) + } + Intrinsic::EncodingMemoryId => { + assert!(intrinsic.type_arguments.len() == 1); + assert!(intrinsic.arguments.is_empty()); + + let t = intrinsic.type_arguments[0].as_type_argument().unwrap(); + + let r = get_encoding_representation(lookup.engines, t.type_id); + + use std::hash::Hasher; + let mut state = DefaultHasher::default(); + r.hash(&mut state); + let id = state.finish(); + + let c = ConstantContent { + ty: Type::get_uint64(lookup.context), + value: ConstantValue::Uint(id), + }; + + Ok(Some(Constant::unique(lookup.context, c))) + } } } diff --git a/sway-core/src/ir_generation/function.rs b/sway-core/src/ir_generation/function.rs index 443bda9040b..411b740eb4f 100644 --- a/sway-core/src/ir_generation/function.rs +++ b/sway-core/src/ir_generation/function.rs @@ -10,6 +10,7 @@ use super::{ CompiledFunctionCache, }; use crate::{ + decl_engine::DeclEngineGet as _, engine_threading::*, ir_generation::{ const_eval::{compile_constant_expression, compile_constant_expression_to_constant}, @@ -41,8 +42,11 @@ use sway_types::{ Named, }; -use std::collections::HashMap; use std::convert::TryFrom; +use std::{ + collections::HashMap, + hash::{DefaultHasher, Hash as _}, +}; /// The result of compiling an expression can be in memory, or in an (SSA) register. #[derive(Debug, Clone, Copy)] @@ -2416,6 +2420,39 @@ impl<'a> FnCompiler<'a> { Intrinsic::Dbg => { unreachable!("__dbg should not exist in the typed tree") } + Intrinsic::RuntimeMemoryId => { + assert!(type_arguments.len() == 1); + assert!(arguments.is_empty()); + + let arg = type_arguments[0].as_type_argument().unwrap(); + let t = convert_resolved_type_id( + self.engines, + context, + md_mgr, + self.module, + Some(self), + arg.type_id, + &arg.span, + )?; + let id = get_memory_id(context, t); + let val = ConstantContent::get_uint(context, 64, id); + Ok(TerminatorValue::new( + CompiledValue::InRegister(val), + context, + )) + } + Intrinsic::EncodingMemoryId => { + assert!(type_arguments.len() == 1); + assert!(arguments.is_empty()); + + let arg = type_arguments[0].as_type_argument().unwrap(); + let id = get_encoding_id(self.engines, arg.type_id); + let val = ConstantContent::get_uint(context, 64, id); + Ok(TerminatorValue::new( + CompiledValue::InRegister(val), + context, + )) + } } } @@ -5296,3 +5333,272 @@ fn can_mem_clear_be_used(ctx: &mut Context<'_>, elem_type: Type, value: Value) - _ => None, } } + +// Used to check if encoding and runtime have the same memory representation. +// If they do, it is possible to trivially encode/decode some types. + +#[derive(Clone, PartialEq, Eq, Hash)] +pub enum MemoryRepresentation { + Padding { len_in_bytes: u64 }, + Blob { len_in_bytes: u64 }, + And(Vec), + Or(Vec), + Array(Box, u64), +} + +impl std::fmt::Debug for MemoryRepresentation { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Padding { len_in_bytes } => f.write_fmt(format_args!("p{}", len_in_bytes)), + Self::Blob { len_in_bytes } => f.write_fmt(format_args!("b{}", len_in_bytes)), + Self::And(items) => { + f.write_str("{").unwrap(); + let mut first = true; + for item in items { + if !first { + f.write_str(",").unwrap(); + } + first = false; + item.fmt(f).unwrap(); + } + f.write_str("}").unwrap(); + Ok(()) + } + Self::Or(items) => { + f.write_str("(").unwrap(); + let mut first = true; + for item in items { + if !first { + f.write_str("|").unwrap(); + } + first = false; + item.fmt(f).unwrap(); + } + f.write_str(")").unwrap(); + Ok(()) + } + Self::Array(item, len) => { + f.write_str("[").unwrap(); + item.fmt(f).unwrap(); + f.write_fmt(format_args!(";{}]", len)) + } + } + } +} + +impl MemoryRepresentation { + pub fn len_in_bytes(&self) -> u64 { + match self { + MemoryRepresentation::Padding { len_in_bytes } => *len_in_bytes, + MemoryRepresentation::Blob { len_in_bytes } => *len_in_bytes, + MemoryRepresentation::And(items) => items.iter().map(|x| x.len_in_bytes()).sum(), + MemoryRepresentation::Or(items) => items + .iter() + .map(|x| x.len_in_bytes()) + .max() + .unwrap_or_default(), + MemoryRepresentation::Array(item, len) => item.len_in_bytes() * *len, + } + } +} + +pub fn get_memory_representation(ctx: &Context, t: Type) -> MemoryRepresentation { + match t.get_content(ctx) { + TypeContent::Unit => MemoryRepresentation::And(vec![]), + TypeContent::Bool => MemoryRepresentation::Blob { len_in_bytes: 1 }, + TypeContent::Uint(8) => MemoryRepresentation::Blob { len_in_bytes: 1 }, + TypeContent::Uint(64) => MemoryRepresentation::Blob { len_in_bytes: 8 }, + TypeContent::Uint(256) => MemoryRepresentation::Blob { len_in_bytes: 32 }, + TypeContent::B256 => MemoryRepresentation::Blob { len_in_bytes: 32 }, + TypeContent::Struct(fields) => { + let mut items = vec![]; + let mut offset_in_bytes = 0; + + for idx in 0..fields.len() { + let (position_in_bytes, t) = + t.get_struct_field_offset_and_type(ctx, idx as u64).unwrap(); + assert!(offset_in_bytes == position_in_bytes); + + let field_mem_rep = get_memory_representation(ctx, t); + let field_len_in_bytes = field_mem_rep.len_in_bytes(); + + items.push(field_mem_rep); + + offset_in_bytes += field_len_in_bytes; + if !offset_in_bytes.is_multiple_of(8) { + let next = offset_in_bytes.next_multiple_of(8); + items.push(MemoryRepresentation::Padding { + len_in_bytes: next.checked_sub(offset_in_bytes).unwrap(), + }); + offset_in_bytes = next; + } + } + + MemoryRepresentation::And(items) + } + TypeContent::Union(variants) => { + let mut items = variants + .iter() + .map(|variant| get_memory_representation(ctx, *variant)) + .collect::>(); + + let biggest_len_in_bytes = items + .iter() + .map(|x| x.len_in_bytes()) + .max() + .unwrap_or_default() + .max(8); + for item in items.iter_mut() { + let item_len_in_bytes = item.len_in_bytes(); + if item_len_in_bytes == biggest_len_in_bytes { + continue; + } + let padding = MemoryRepresentation::Padding { + len_in_bytes: biggest_len_in_bytes - item_len_in_bytes, + }; + if let MemoryRepresentation::And(old_items) = item { + old_items.push(padding); + } else { + *item = MemoryRepresentation::And(vec![item.clone(), padding]) + } + } + + MemoryRepresentation::Or(items) + } + TypeContent::StringArray(len) => { + let item = MemoryRepresentation::Blob { len_in_bytes: *len }; + let item_len_as_bytes = item.len_in_bytes(); + if !item_len_as_bytes.is_multiple_of(8) { + MemoryRepresentation::And(vec![ + item, + MemoryRepresentation::Padding { + len_in_bytes: item_len_as_bytes.next_multiple_of(8) - item_len_as_bytes, + }, + ]) + } else { + item + } + } + TypeContent::Array(t, len) => { + let item = get_memory_representation(ctx, *t); + let total_len_in_bytes = item.len_in_bytes() * len; + if !total_len_in_bytes.is_multiple_of(8) { + MemoryRepresentation::And(vec![ + MemoryRepresentation::Array(Box::new(item), *len), + MemoryRepresentation::Padding { + len_in_bytes: total_len_in_bytes.next_multiple_of(8) - total_len_in_bytes, + }, + ]) + } else { + MemoryRepresentation::Array(Box::new(item), *len) + } + } + TypeContent::Pointer => MemoryRepresentation::Blob { len_in_bytes: 8 }, + TypeContent::Slice => MemoryRepresentation::Blob { len_in_bytes: 16 }, + TypeContent::TypedSlice(_) => MemoryRepresentation::Blob { len_in_bytes: 16 }, + x => todo!("{x:#?}"), + } +} + +pub fn get_memory_id(ctx: &Context, t: Type) -> u64 { + let r = get_memory_representation(ctx, t); + + use std::hash::Hasher; + let mut state = DefaultHasher::default(); + r.hash(&mut state); + state.finish() +} + +pub fn get_encoding_representation( + engines: &Engines, + type_id: TypeId, +) -> Option { + match &*engines.te().get(type_id) { + TypeInfo::Boolean => Some(MemoryRepresentation::Blob { len_in_bytes: 1 }), + TypeInfo::UnsignedInteger(IntegerBits::Eight) => { + Some(MemoryRepresentation::Blob { len_in_bytes: 1 }) + } + TypeInfo::UnsignedInteger(IntegerBits::Sixteen) => { + Some(MemoryRepresentation::Blob { len_in_bytes: 2 }) + } + TypeInfo::UnsignedInteger(IntegerBits::ThirtyTwo) => { + Some(MemoryRepresentation::Blob { len_in_bytes: 4 }) + } + TypeInfo::UnsignedInteger(IntegerBits::SixtyFour) => { + Some(MemoryRepresentation::Blob { len_in_bytes: 8 }) + } + TypeInfo::UnsignedInteger(IntegerBits::V256) => { + Some(MemoryRepresentation::Blob { len_in_bytes: 32 }) + } + TypeInfo::B256 => Some(MemoryRepresentation::Blob { len_in_bytes: 32 }), + TypeInfo::Tuple(fields) => { + let items = fields + .iter() + .map(|field| get_encoding_representation(engines, field.type_id)) + .collect::>>()?; + Some(MemoryRepresentation::And(items)) + } + TypeInfo::Struct(id) => { + let decl = engines.de().get(id); + + let items = decl + .fields + .iter() + .map(|field| get_encoding_representation(engines, field.type_argument.type_id)) + .collect::>>()?; + + Some(MemoryRepresentation::And(items)) + } + TypeInfo::Enum(id) => { + let decl = engines.de().get(id); + + if decl.variants.is_empty() { + Some(MemoryRepresentation::Blob { len_in_bytes: 8 }) + } else { + let variants = decl + .variants + .iter() + .map(|variant| { + get_encoding_representation(engines, variant.type_argument.type_id) + }) + .collect::>>()?; + + if variants.iter().all(|x| x.len_in_bytes() == 0) { + Some(MemoryRepresentation::And(vec![ + MemoryRepresentation::Blob { len_in_bytes: 8 }, + ])) + } else { + Some(MemoryRepresentation::And(vec![ + MemoryRepresentation::Blob { len_in_bytes: 8 }, + MemoryRepresentation::Or(variants), + ])) + } + } + } + TypeInfo::StringArray(len) => Some(MemoryRepresentation::Blob { + len_in_bytes: len.extract_literal(engines).unwrap(), + }), + TypeInfo::StringSlice => None, + TypeInfo::Array(item, len) => Some(MemoryRepresentation::Array( + Box::new(get_encoding_representation(engines, item.type_id)?), + len.extract_literal(engines).unwrap(), + )), + TypeInfo::RawUntypedPtr => None, + TypeInfo::RawUntypedSlice => None, + TypeInfo::Slice(_) => None, + TypeInfo::Ref { .. } => None, + TypeInfo::Alias { ty, .. } => get_encoding_representation(engines, ty.type_id), + x => todo!("{x:#?}"), + } +} + +pub fn get_encoding_id(engines: &Engines, type_id: TypeId) -> u64 { + use std::hash::Hasher; + if let Some(r) = get_encoding_representation(engines, type_id) { + let mut state = DefaultHasher::default(); + r.hash(&mut state); + state.finish() + } else { + 0 + } +} diff --git a/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs b/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs index 2cd6691101f..8ff53dd15e3 100644 --- a/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs +++ b/sway-core/src/semantic_analysis/ast_node/declaration/auto_impl/abi_encoding.rs @@ -639,21 +639,21 @@ where }; let return_encode = if return_type == "()" { - "asm(s: (0, 0)) { s: raw_slice }".to_string() + "__contract_ret(0, 0)".to_string() } else { - format!("encode::<{return_type}>(_result)") + format!("encode_and_return::<{return_type}>(_result)") }; let code = if args_types == "()" { format!( - "pub fn __entry() -> raw_slice {{ + "pub fn __entry() -> ! {{ let _result: {return_type} = main(); {return_encode} }}" ) } else { format!( - "pub fn __entry() -> raw_slice {{ + "pub fn __entry() -> ! {{ let args: {args_types} = decode_script_data::<{args_types}>(); let _result: {return_type} = main({expanded_args}); {return_encode} diff --git a/sway-core/src/semantic_analysis/ast_node/expression/intrinsic_function.rs b/sway-core/src/semantic_analysis/ast_node/expression/intrinsic_function.rs index 3651d4424e2..1971bd044fd 100644 --- a/sway-core/src/semantic_analysis/ast_node/expression/intrinsic_function.rs +++ b/sway-core/src/semantic_analysis/ast_node/expression/intrinsic_function.rs @@ -113,10 +113,108 @@ impl ty::TyIntrinsicFunctionKind { Intrinsic::Dbg => { unreachable!("__dbg should not exist in the typed tree") } + Intrinsic::RuntimeMemoryId => { + type_check_runtime_memory_id(arguments, handler, kind, type_arguments, span, ctx) + } + Intrinsic::EncodingMemoryId => { + type_check_encoding_memory_id(arguments, handler, kind, type_arguments, span, ctx) + } } } } +fn type_check_encoding_memory_id( + arguments: &[Expression], + handler: &Handler, + kind: Intrinsic, + type_arguments: &[GenericArgument], + span: Span, + ctx: TypeCheckContext, +) -> Result<(TyIntrinsicFunctionKind, TypeId), ErrorEmitted> { + if !arguments.is_empty() { + return Err(handler.emit_err(CompileError::IntrinsicIncorrectNumArgs { + name: kind.to_string(), + expected: 0, + span, + })); + } + + if type_arguments.len() != 1 { + return Err(handler.emit_err(CompileError::IntrinsicIncorrectNumTArgs { + name: kind.to_string(), + expected: 1, + span, + })); + } + + let targ = &type_arguments[0]; + let arg = ctx + .resolve_type( + handler, + targ.type_id(), + &targ.span(), + EnforceTypeArguments::Yes, + None, + ) + .unwrap_or_else(|err| ctx.engines.te().id_of_error_recovery(err)); + let mut final_type_arguments = type_arguments.to_vec(); + *final_type_arguments[0].type_id_mut() = arg; + + let intrinsic_function = ty::TyIntrinsicFunctionKind { + kind, + arguments: vec![], + type_arguments: final_type_arguments, + span: span.clone(), + }; + Ok((intrinsic_function, ctx.engines.te().id_of_u64())) +} + +fn type_check_runtime_memory_id( + arguments: &[Expression], + handler: &Handler, + kind: Intrinsic, + type_arguments: &[GenericArgument], + span: Span, + ctx: TypeCheckContext, +) -> Result<(TyIntrinsicFunctionKind, TypeId), ErrorEmitted> { + if !arguments.is_empty() { + return Err(handler.emit_err(CompileError::IntrinsicIncorrectNumArgs { + name: kind.to_string(), + expected: 0, + span, + })); + } + + if type_arguments.len() != 1 { + return Err(handler.emit_err(CompileError::IntrinsicIncorrectNumTArgs { + name: kind.to_string(), + expected: 1, + span, + })); + } + + let targ = &type_arguments[0]; + let arg = ctx + .resolve_type( + handler, + targ.type_id(), + &targ.span(), + EnforceTypeArguments::Yes, + None, + ) + .unwrap_or_else(|err| ctx.engines.te().id_of_error_recovery(err)); + let mut final_type_arguments = type_arguments.to_vec(); + *final_type_arguments[0].type_id_mut() = arg; + + let intrinsic_function = ty::TyIntrinsicFunctionKind { + kind, + arguments: vec![], + type_arguments: final_type_arguments, + span: span.clone(), + }; + Ok((intrinsic_function, ctx.engines.te().id_of_u64())) +} + fn type_check_transmute( arguments: &[Expression], handler: &Handler, diff --git a/sway-core/src/semantic_analysis/cei_pattern_analysis.rs b/sway-core/src/semantic_analysis/cei_pattern_analysis.rs index 9cc4dc7a736..72d5c2b4565 100644 --- a/sway-core/src/semantic_analysis/cei_pattern_analysis.rs +++ b/sway-core/src/semantic_analysis/cei_pattern_analysis.rs @@ -676,7 +676,9 @@ fn effects_of_intrinsic(intr: &sway_ast::Intrinsic) -> HashSet { | Slice | ElemAt | Transmute - | Dbg => HashSet::new(), + | Dbg + | RuntimeMemoryId + | EncodingMemoryId => HashSet::new(), } } diff --git a/sway-core/src/type_system/ast_elements/length.rs b/sway-core/src/type_system/ast_elements/length.rs index 93502733e90..889345f18d4 100644 --- a/sway-core/src/type_system/ast_elements/length.rs +++ b/sway-core/src/type_system/ast_elements/length.rs @@ -1,3 +1,7 @@ +use crate::{ + ast_elements::type_parameter::ConstGenericExprTyDecl, decl_engine::DeclEngineGet as _, Engines, +}; + use super::type_parameter::ConstGenericExpr; /// Describes a fixed length for types that need it, e.g., [crate::TypeInfo::Array]. @@ -19,4 +23,19 @@ impl Length { pub fn expr(&self) -> &ConstGenericExpr { &self.0 } + + pub fn extract_literal(&self, engines: &Engines) -> Option { + match &self.0 { + ConstGenericExpr::Literal { val, .. } => Some(*val as u64), + ConstGenericExpr::AmbiguousVariableExpression { decl, .. } => match decl.as_ref()? { + ConstGenericExprTyDecl::ConstGenericDecl(decl) => { + let decl = engines.de().get(&decl.decl_id); + let expr = decl.value.as_ref()?; + let expr = expr.expression.as_literal()?; + expr.cast_value_to_u64() + } + ConstGenericExprTyDecl::ConstantDecl(_) => None, + }, + } + } } diff --git a/sway-ir/src/parser.rs b/sway-ir/src/parser.rs index 9311f8178b9..0c0dcd87b35 100644 --- a/sway-ir/src/parser.rs +++ b/sway-ir/src/parser.rs @@ -652,6 +652,7 @@ mod ir_builder { / union_ty() / "__ptr" _ ty:ast_ty() _ { IrAstTy::TypedPtr(Box::new(ty)) } / "ptr" _ { IrAstTy::Ptr } + / "never" _ { IrAstTy::Never } rule array_ty() -> IrAstTy = "[" _ ty:ast_ty() ";" _ c:decimal() "]" _ { @@ -1041,6 +1042,7 @@ mod ir_builder { Struct(Vec), TypedPtr(Box), Ptr, + Never, } impl IrAstTy { @@ -1075,6 +1077,7 @@ mod ir_builder { Type::new_typed_pointer(context, inner_ty) } IrAstTy::Ptr => Type::get_ptr(context), + IrAstTy::Never => Type::get_never(context), } } } diff --git a/sway-lib-std/src/codec.sw b/sway-lib-std/src/codec.sw index f3a0d4a2757..5ef6d2cb2f2 100644 --- a/sway-lib-std/src/codec.sw +++ b/sway-lib-std/src/codec.sw @@ -2667,8 +2667,39 @@ pub fn encode(item: T) -> raw_slice where T: AbiEncode, { - let buffer = item.abi_encode(Buffer::new()); - buffer.as_raw_slice() + let RMI: u64 = __runtime_mem_id::(); + let EMI: u64 = __encoding_mem_id::(); + + if RMI == EMI { + let size = __size_of::(); + let ptr = asm(size: size, src: &item) { + aloc size; + mcp hp src size; + hp: raw_ptr + }; + asm(s: (ptr, size)) { + s: raw_slice + } + } else { + let buffer = item.abi_encode(Buffer::new()); + buffer.as_raw_slice() + } +} + +pub fn encode_and_return(item: T) -> ! +where + T: AbiEncode, +{ + let RMI: u64 = __runtime_mem_id::(); + let EMI: u64 = __encoding_mem_id::(); + + if RMI == EMI { + let size = __size_of::(); + __contract_ret(&item, size); + } else { + let buffer = item.abi_encode(Buffer::new()); + __contract_ret(buffer.buffer.0, buffer.buffer.2); + } } #[inline(never)] diff --git a/test/src/e2e_vm_tests/test_programs/should_fail/language/const_generics/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_fail/language/const_generics/stdout.snap index eaac3c1b8c9..d055fe4f9ca 100644 --- a/test/src/e2e_vm_tests/test_programs/should_fail/language/const_generics/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_fail/language/const_generics/stdout.snap @@ -28,4 +28,4 @@ output: Building test/src/e2e_vm_tests/test_programs/should_fail/language/const_generics Compiling library std (sway-lib-std) Compiling script const_generics (test/src/e2e_vm_tests/test_programs/should_fail/language/const_generics) - Finished debug [unoptimized + fuel] target(s) [112 B] in ??? + Finished debug [unoptimized + fuel] target(s) [80 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/snapshot.toml index e13c9172d33..6bec1306ccd 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/snapshot.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/snapshot.toml @@ -1,4 +1,4 @@ cmds = [ - "forc build --path {root} --experimental const_generics --ir final --asm final --bytecode", - "forc test --path {root} --experimental const_generics --verbose", + "forc build --path {root} --experimental const_generics --ir final --asm final --bytecode --release", + "forc test --path {root} --experimental const_generics --verbose --release", ] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index 15f6e0847a4..95263d45937 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -1,7 +1,7 @@ --- source: test/src/snapshot/mod.rs --- -> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --experimental const_generics --ir final --asm final --bytecode +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --experimental const_generics --ir final --asm final --bytecode --release exit status: 0 output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat @@ -24,31 +24,12 @@ library { Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) // IR: Final script { - global std::error_signals::FAILED_ASSERT_EQ_SIGNAL : u64 = const u64 18446744073709486083 - - pub entry fn __entry() -> __ptr slice, !3 { - local mut slice __aggr_memcpy_0 - local { u64, u64 } __anon_0 - local slice __ret_value - + pub entry fn __entry() -> __ptr never, !3 { entry(): - v0 = get_local __ptr slice, __ret_value - v1 = call main_0(), !6 - v2 = get_local __ptr { u64, u64 }, __anon_0, !7 - v3 = const u64 0 - v4 = get_elem_ptr v2, __ptr u64, v3, !7 - v5 = const u64 0, !8 - store v5 to v4, !7 - v6 = const u64 1 - v7 = get_elem_ptr v2, __ptr u64, v6, !7 - v8 = const u64 0, !9 - store v8 to v7, !7 - v9 = asm(s: v2) -> __ptr slice s { - } - v10 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v10, v9 - mem_copy_val v0, v10 - ret __ptr slice v0 + v0 = call main_0(), !6 + v1 = const u64 0, !7 + v2 = const u64 0, !8 + retd v1 v2, !9 } entry_orig fn main_0() -> (), !13 { @@ -61,7 +42,6 @@ script { local [bool; 5] __ret_val13 local [bool; 25] __ret_val14 local [u8; 262145] __ret_val15 - local [u8; 1] __ret_val16 local [u64; 5] __ret_val2 local [u256; 5] __ret_val3 local [b256; 5] __ret_val4 @@ -71,10 +51,6 @@ script { local [u64; 25] __ret_val8 local [u64; 25] __ret_val9 local [u8; 1] array - local u64 code_ - local bool self_1 - local u8 v1_ - local u8 v2_ entry(): v0 = get_local __ptr [u8; 5], __ret_val @@ -82,9 +58,9 @@ script { v2 = get_local __ptr [u64; 5], __ret_val0 v3 = call array_repeat_zero_small_u16_2(v2) v4 = get_local __ptr [u64; 5], __ret_val1 - v5 = call array_repeat_zero_small_u32_3(v4) + v5 = call array_repeat_zero_small_u16_2(v4) v6 = get_local __ptr [u64; 5], __ret_val2 - v7 = call array_repeat_zero_small_u64_4(v6) + v7 = call array_repeat_zero_small_u16_2(v6) v8 = get_local __ptr [u256; 5], __ret_val3 v9 = call array_repeat_zero_small_u256_5(v8) v10 = get_local __ptr [b256; 5], __ret_val4 @@ -94,11 +70,11 @@ script { v14 = get_local __ptr [u8; 25], __ret_val6 v15 = call array_repeat_zero_big_u8_8(v14) v16 = get_local __ptr [u64; 25], __ret_val7 - v17 = call array_repeat_zero_big_u16_9(v16) + v17 = call array_repeat_zero_big_u32_10(v16) v18 = get_local __ptr [u64; 25], __ret_val8 v19 = call array_repeat_zero_big_u32_10(v18) v20 = get_local __ptr [u64; 25], __ret_val9 - v21 = call array_repeat_zero_big_u64_11(v20) + v21 = call array_repeat_zero_big_u32_10(v20) v22 = get_local __ptr [u256; 25], __ret_val10 v23 = call array_repeat_zero_big_u256_12(v22) v24 = get_local __ptr [b256; 25], __ret_val11 @@ -112,834 +88,356 @@ script { v32 = get_local __ptr [u8; 262145], __ret_val15 v33 = call u8_array_bigger_than_18_bits_17(v32) v34 = call arrays_with_const_length_18(), !16 - v35 = get_local __ptr [u8; 1], __ret_val16 + v35 = get_local __ptr [u8; 1], array v36 = call decode_array_19(v35) v37 = get_local __ptr [u8; 1], array, !17 - mem_copy_val v37, v35 - v38 = get_local __ptr [u8; 1], array, !18 - v39 = const u64 0, !19 - v40 = get_elem_ptr v38, __ptr u8, v39, !20 - v41 = get_local __ptr u8, v1_, !23 - mem_copy_val v41, v40 - v42 = get_local __ptr u8, v2_, !23 - v43 = const u8 255, !24 - store v43 to v42, !23 - v44 = load v40, !31 - v45 = get_local __ptr u8, v2_, !33 - v46 = load v45, !34 - v47 = cmp eq v44 v46, !35 - v48 = get_local __ptr bool, self_1, !38 - store v47 to v48, !39 - v49 = get_local __ptr bool, self_1, !41 - v50 = load v49, !42 - v51 = const bool false, !43 - v52 = cmp eq v50 v51, !44 - cbr v52, assert_eq_38_block0(), assert_eq_38_block1(), !45 + v38 = const u64 0, !18 + v39 = get_elem_ptr v37, __ptr u8, v38, !19 + v40 = load v39 + v41 = const u8 255, !20 + v42 = cmp eq v40 v41, !29 + v43 = const bool false, !30 + v44 = cmp eq v42 v43, !33 + cbr v44, assert_eq_38_block0(), assert_eq_38_block1(), !34 assert_eq_38_block0(): - v53 = get_local __ptr u8, v1_, !47 - v54 = load v53, !23 - v55 = call log_42(v54), !50 - v56 = get_local __ptr u8, v2_, !52 - v57 = load v56, !23 - v58 = call log_42(v57), !55 - v59 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_EQ_SIGNAL, !57 - v60 = get_local __ptr u64, code_, !60 - mem_copy_val v60, v59 - v61 = get_local __ptr u64, code_, !63 - v62 = load v61, !64 - revert v62, !66 + v45 = call log_42(v40), !37 + v46 = call log_42(v41), !40 + v47 = const u64 18446744073709486083 + revert v47, !45 assert_eq_38_block1(): - v63 = const unit () - ret () v63 + v48 = const unit () + ret () v48 } - fn array_repeat_zero_small_u8_1(__ret_value: __ptr [u8; 5]) -> (), !70 { - local [u8; 5] __anon_0 - + fn array_repeat_zero_small_u8_1(__ret_value: __ptr [u8; 5]) -> (), !49 { entry(__ret_value: __ptr [u8; 5]): - v0 = get_local __ptr [u8; 5], __anon_0, !71 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 - } - - fn array_repeat_zero_small_u16_2(__ret_value: __ptr [u64; 5]) -> (), !74 { - local [u64; 5] __anon_0 - - entry(__ret_value: __ptr [u64; 5]): - v0 = get_local __ptr [u64; 5], __anon_0, !75 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 - } - - fn array_repeat_zero_small_u32_3(__ret_value: __ptr [u64; 5]) -> (), !78 { - local [u64; 5] __anon_0 - - entry(__ret_value: __ptr [u64; 5]): - v0 = get_local __ptr [u64; 5], __anon_0, !79 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_small_u64_4(__ret_value: __ptr [u64; 5]) -> (), !82 { - local [u64; 5] __anon_0 - + fn array_repeat_zero_small_u16_2(__ret_value: __ptr [u64; 5]) -> (), !52 { entry(__ret_value: __ptr [u64; 5]): - v0 = get_local __ptr [u64; 5], __anon_0, !83 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_small_u256_5(__ret_value: __ptr [u256; 5]) -> (), !86 { - local [u256; 5] __anon_0 - + fn array_repeat_zero_small_u256_5(__ret_value: __ptr [u256; 5]) -> (), !55 { entry(__ret_value: __ptr [u256; 5]): - v0 = get_local __ptr [u256; 5], __anon_0, !87 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_small_b256_6(__ret_value: __ptr [b256; 5]) -> (), !90 { - local [b256; 5] __anon_0 - + fn array_repeat_zero_small_b256_6(__ret_value: __ptr [b256; 5]) -> (), !58 { entry(__ret_value: __ptr [b256; 5]): - v0 = get_local __ptr [b256; 5], __anon_0, !91 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_small_bool_7(__ret_value: __ptr [bool; 5]) -> (), !94 { - local [bool; 5] __anon_0 - + fn array_repeat_zero_small_bool_7(__ret_value: __ptr [bool; 5]) -> (), !61 { entry(__ret_value: __ptr [bool; 5]): - v0 = get_local __ptr [bool; 5], __anon_0, !95 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_big_u8_8(__ret_value: __ptr [u8; 25]) -> (), !98 { - local [u8; 25] __anon_0 - + fn array_repeat_zero_big_u8_8(__ret_value: __ptr [u8; 25]) -> (), !64 { entry(__ret_value: __ptr [u8; 25]): - v0 = get_local __ptr [u8; 25], __anon_0, !99 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 - } - - fn array_repeat_zero_big_u16_9(__ret_value: __ptr [u64; 25]) -> (), !102 { - local [u64; 25] __anon_0 - - entry(__ret_value: __ptr [u64; 25]): - v0 = get_local __ptr [u64; 25], __anon_0, !103 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_big_u32_10(__ret_value: __ptr [u64; 25]) -> (), !106 { - local [u64; 25] __anon_0 - + fn array_repeat_zero_big_u32_10(__ret_value: __ptr [u64; 25]) -> (), !67 { entry(__ret_value: __ptr [u64; 25]): - v0 = get_local __ptr [u64; 25], __anon_0, !107 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_big_u64_11(__ret_value: __ptr [u64; 25]) -> (), !110 { - local [u64; 25] __anon_0 - - entry(__ret_value: __ptr [u64; 25]): - v0 = get_local __ptr [u64; 25], __anon_0, !111 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 - } - - fn array_repeat_zero_big_u256_12(__ret_value: __ptr [u256; 25]) -> (), !114 { - local [u256; 25] __anon_0 - + fn array_repeat_zero_big_u256_12(__ret_value: __ptr [u256; 25]) -> (), !70 { entry(__ret_value: __ptr [u256; 25]): - v0 = get_local __ptr [u256; 25], __anon_0, !115 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_big_b256_13(__ret_value: __ptr [b256; 25]) -> (), !118 { - local [b256; 25] __anon_0 - + fn array_repeat_zero_big_b256_13(__ret_value: __ptr [b256; 25]) -> (), !73 { entry(__ret_value: __ptr [b256; 25]): - v0 = get_local __ptr [b256; 25], __anon_0, !119 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn array_repeat_zero_big_bool_14(__ret_value: __ptr [bool; 25]) -> (), !122 { - local [bool; 25] __anon_0 - + fn array_repeat_zero_big_bool_14(__ret_value: __ptr [bool; 25]) -> (), !76 { entry(__ret_value: __ptr [bool; 25]): - v0 = get_local __ptr [bool; 25], __anon_0, !123 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn small_array_repeat_15(__ret_value: __ptr [bool; 5]) -> (), !126 { - local [bool; 5] __anon_0 - + fn small_array_repeat_15(__ret_value: __ptr [bool; 5]) -> (), !79 { entry(__ret_value: __ptr [bool; 5]): - v0 = get_local __ptr [bool; 5], __anon_0, !127 - v1 = const u64 0 - v2 = get_elem_ptr v0, __ptr bool, v1 - v3 = const bool true, !128 - store v3 to v2, !127 - v4 = const u64 1 - v5 = get_elem_ptr v0, __ptr bool, v4 - store v3 to v5, !127 - v6 = const u64 2 - v7 = get_elem_ptr v0, __ptr bool, v6 - store v3 to v7, !127 - v8 = const u64 3 - v9 = get_elem_ptr v0, __ptr bool, v8 - store v3 to v9, !127 - v10 = const u64 4 - v11 = get_elem_ptr v0, __ptr bool, v10 - store v3 to v11, !127 - mem_copy_val __ret_value, v0 - v12 = const unit () - ret () v12 + v0 = const u64 0 + v1 = get_elem_ptr __ret_value, __ptr bool, v0 + v2 = const bool true, !80 + store v2 to v1, !81 + v3 = const u64 1 + v4 = get_elem_ptr __ret_value, __ptr bool, v3 + store v2 to v4, !81 + v5 = const u64 2 + v6 = get_elem_ptr __ret_value, __ptr bool, v5 + store v2 to v6, !81 + v7 = const u64 3 + v8 = get_elem_ptr __ret_value, __ptr bool, v7 + store v2 to v8, !81 + v9 = const u64 4 + v10 = get_elem_ptr __ret_value, __ptr bool, v9 + store v2 to v10, !81 + v11 = const unit () + ret () v11 } - fn big_array_repeat_16(__ret_value: __ptr [bool; 25]) -> (), !131 { - local [bool; 25] __anon_0 - + fn big_array_repeat_16(__ret_value: __ptr [bool; 25]) -> (), !84 { entry(__ret_value: __ptr [bool; 25]): - v0 = get_local __ptr [bool; 25], __anon_0, !132 - v1 = const u64 0 - br array_init_loop(v1) + v0 = const u64 0 + br array_init_loop(v0) - array_init_loop(v2: u64): - v3 = get_elem_ptr v0, __ptr bool, v2 - v4 = const bool true, !133 - store v4 to v3, !132 - v5 = const u64 1 - v6 = add v2, v5 - v7 = const u64 25 - v8 = cmp lt v6 v7 - cbr v8, array_init_loop(v6), array_init_exit() + array_init_loop(v1: u64): + v2 = get_elem_ptr __ret_value, __ptr bool, v1 + v3 = const bool true, !85 + store v3 to v2, !86 + v4 = const u64 1 + v5 = add v1, v4 + v6 = const u64 25 + v7 = cmp lt v5 v6 + cbr v7, array_init_loop(v5), array_init_exit() array_init_exit(): - mem_copy_val __ret_value, v0 - v9 = const unit () - ret () v9 + v8 = const unit () + ret () v8 } - fn u8_array_bigger_than_18_bits_17(__ret_value: __ptr [u8; 262145]) -> (), !136 { - local [u8; 262145] __anon_0 - + fn u8_array_bigger_than_18_bits_17(__ret_value: __ptr [u8; 262145]) -> (), !89 { entry(__ret_value: __ptr [u8; 262145]): - v0 = get_local __ptr [u8; 262145], __anon_0, !137 - mem_clear_val v0 - mem_copy_val __ret_value, v0 - v1 = const unit () - ret () v1 + mem_clear_val __ret_value + v0 = const unit () + ret () v0 } - fn arrays_with_const_length_18() -> (), !140 { + fn arrays_with_const_length_18() -> (), !92 { local [u64; 1] __anon_0 local [u64; 1] __anon_1 local [u64; 1] __anon_2 local [u64; 2] __anon_4 entry(): - v0 = get_local __ptr [u64; 1], __anon_0, !141 + v0 = get_local __ptr [u64; 1], __anon_0, !93 mem_clear_val v0 - v1 = get_local __ptr [u64; 1], __anon_1, !142 + v1 = get_local __ptr [u64; 1], __anon_1, !94 mem_clear_val v1 - v2 = get_local __ptr [u64; 1], __anon_2, !143 + v2 = get_local __ptr [u64; 1], __anon_2, !95 mem_clear_val v2 - v3 = get_local __ptr [u64; 2], __anon_4, !144 + v3 = get_local __ptr [u64; 2], __anon_4, !96 mem_clear_val v3 v4 = const unit () ret () v4 } - fn decode_array_19(__ret_value: __ptr [u8; 1]) -> (), !147 { + fn decode_array_19(__ret_value: __ptr [u8; 1]) -> (), !99 { local [u8; 1] __anon_0 - local slice __ret_val local [u8; 1] __ret_val0 local slice s entry(__ret_value: __ptr [u8; 1]): - v0 = get_local __ptr [u8; 1], __anon_0, !148 + v0 = get_local __ptr [u8; 1], __anon_0, !100 v1 = const u64 0 v2 = get_elem_ptr v0, __ptr u8, v1 - v3 = const u8 255, !149 - store v3 to v2, !148 + v3 = const u8 255, !101 + store v3 to v2, !100 v4 = get_local __ptr [u8; 1], __anon_0 - v5 = get_local __ptr slice, __ret_val + v5 = get_local __ptr slice, s v6 = call to_slice_20(v4, v5) - v7 = get_local __ptr slice, s, !150 - mem_copy_val v7, v5 - v8 = get_local __ptr slice, s - v9 = get_local __ptr [u8; 1], __ret_val0 - v10 = call abi_decode_24(v8, v9) - mem_copy_val __ret_value, v9 - v11 = const unit () - ret () v11 + v7 = get_local __ptr slice, s + v8 = get_local __ptr [u8; 1], __ret_val0 + v9 = call abi_decode_24(v7, v8) + mem_copy_val __ret_value, v8 + v10 = const unit () + ret () v10 } - fn to_slice_20(array: __ptr [u8; 1], __ret_value: __ptr slice) -> (), !153 { + fn to_slice_20(array: __ptr [u8; 1], __ret_value: __ptr slice) -> (), !104 { local mut slice __aggr_memcpy_0 - local { ptr, u64 } __anon_0 - local slice __tmp_block_arg - local slice __tmp_block_arg0 local [u8; 1] array_ - local u64 len - local u64 other_ local { ptr, u64 } parts_ - local ptr ptr_ entry(array: __ptr [u8; 1], __ret_value: __ptr slice): v0 = get_local __ptr [u8; 1], array_ mem_copy_val v0, array - v1 = get_local __ptr u64, len, !154 - v2 = const u64 1 - store v2 to v1, !154 - v3 = get_local __ptr [u8; 1], array_, !155 - v4 = cast_ptr v3 to ptr, !156 - v5 = get_local __ptr ptr, ptr_, !159 - store v4 to v5, !159 - v6 = get_local __ptr ptr, ptr_, !162 - v7 = get_local __ptr u64, other_, !165 - v8 = const u64 1 - store v8 to v7, !166 - v9 = get_local __ptr u64, len, !168 - v10 = load v9, !169 - v11 = get_local __ptr u64, other_, !171 - v12 = load v11, !172 - v13 = mul v10, v12, !173 - v14 = get_local __ptr { ptr, u64 }, __anon_0, !175 - v15 = const u64 0 - v16 = get_elem_ptr v14, __ptr ptr, v15, !176 - mem_copy_val v16, v6 - v17 = const u64 1 - v18 = get_elem_ptr v14, __ptr u64, v17, !177 - store v13 to v18, !178 - v19 = get_local __ptr { ptr, u64 }, parts_, !181 - mem_copy_val v19, v14 - v20 = get_local __ptr { ptr, u64 }, parts_, !183 - v21 = asm(ptr: v20) -> __ptr slice ptr { + v1 = get_local __ptr [u8; 1], array_, !105 + v2 = cast_ptr v1 to ptr, !106 + v3 = get_local __ptr { ptr, u64 }, parts_, !112 + v4 = const u64 0 + v5 = get_elem_ptr v3, __ptr ptr, v4 + store v2 to v5 + v6 = const u64 1 + v7 = get_elem_ptr v3, __ptr u64, v6 + v8 = const u64 1, !115 + store v8 to v7 + v9 = get_local __ptr { ptr, u64 }, parts_, !117 + v10 = asm(ptr: v9) -> __ptr slice ptr { } - v22 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v22, v21 - v23 = get_local __ptr slice, __tmp_block_arg - mem_copy_val v23, v22 - v24 = get_local __ptr slice, __tmp_block_arg0 - mem_copy_val v24, v23 - mem_copy_val __ret_value, v24 - v25 = const unit () - ret () v25 + v11 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v11, v10 + mem_copy_val __ret_value, v11 + v12 = const unit () + ret () v12 } - pub fn abi_decode_24(data: __ptr slice, __ret_value: __ptr [u8; 1]) -> (), !187 { - local u64 LENGTH + pub fn abi_decode_24(data: __ptr slice, __ret_value: __ptr [u8; 1]) -> (), !121 { local mut { ptr, u64 } __aggr_memcpy_0 local mut { ptr, u64 } __aggr_memcpy_00 local { ptr, u64 } __anon_0 local { ptr, u64 } __anon_00 local { ptr } __anon_01 local [u8; 1] __anon_02 - local { ptr, u64 } __tmp_block_arg - local { ptr, u64 } __tmp_block_arg0 - local { ptr } __tmp_block_arg1 - local [u8; 1] __tmp_block_arg2 - local u64 _len_ local mut [u8; 1] array - local __ptr [u8; 1] array_ local mut { ptr } buffer - local __ptr { ptr } buffer_ - local __ptr { ptr } buffer_0 local slice data_ - local mut u64 i - local __ptr u8 item - local u64 other_ - local u64 other_0 - local u64 other_00 - local u64 other_1 - local ptr ptr_ local slice self_ local slice self_0 - local u64 self_00 - local __ptr { ptr } self_000 - local u64 self_0000 - local __ptr { ptr } self_01 - local u64 self_1 - local __ptr { ptr } self_10 - local u64 self_2 - local u64 size local slice slice_ local slice slice_0 - local u8 v - local u8 v0 - local u8 v_ entry(data: __ptr slice, __ret_value: __ptr [u8; 1]): v0 = get_local __ptr slice, data_ mem_copy_val v0, data - v1 = get_local __ptr slice, data_, !188 - v2 = get_local __ptr slice, self_, !191 + v1 = get_local __ptr slice, data_, !122 + v2 = get_local __ptr slice, self_, !125 mem_copy_val v2, v1 - v3 = get_local __ptr slice, self_, !193 - v4 = get_local __ptr slice, slice_, !196 + v3 = get_local __ptr slice, self_, !127 + v4 = get_local __ptr slice, slice_, !130 mem_copy_val v4, v3 - v5 = get_local __ptr slice, slice_, !198 + v5 = get_local __ptr slice, slice_, !132 v6 = asm(ptr: v5) -> __ptr { ptr, u64 } ptr { } v7 = get_local __ptr { ptr, u64 }, __aggr_memcpy_0 mem_copy_val v7, v6 - v8 = get_local __ptr { ptr, u64 }, __tmp_block_arg + v8 = get_local __ptr { ptr, u64 }, __anon_0, !125 mem_copy_val v8, v7 - v9 = get_local __ptr { ptr, u64 }, __anon_0, !191 - mem_copy_val v9, v8 - v10 = const u64 0 - v11 = get_elem_ptr v9, __ptr ptr, v10, !200 - v12 = load v11, !191 - v13 = get_local __ptr slice, data_, !201 - v14 = get_local __ptr slice, self_0, !204 + v9 = const u64 0 + v10 = get_elem_ptr v8, __ptr ptr, v9, !134 + v11 = get_local __ptr slice, data_, !135 + v12 = get_local __ptr slice, self_0, !138 + mem_copy_val v12, v11 + v13 = get_local __ptr slice, self_0, !140 + v14 = get_local __ptr slice, slice_0, !143 mem_copy_val v14, v13 - v15 = get_local __ptr slice, self_0, !206 - v16 = get_local __ptr slice, slice_0, !209 - mem_copy_val v16, v15 - v17 = get_local __ptr slice, slice_0, !210 - v18 = asm(ptr: v17) -> __ptr { ptr, u64 } ptr { + v15 = get_local __ptr slice, slice_0, !144 + v16 = asm(ptr: v15) -> __ptr { ptr, u64 } ptr { } - v19 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 - mem_copy_val v19, v18 - v20 = get_local __ptr { ptr, u64 }, __tmp_block_arg0 - mem_copy_val v20, v19 - v21 = get_local __ptr { ptr, u64 }, __anon_00, !204 - mem_copy_val v21, v20 - v22 = const u64 1 - v23 = get_elem_ptr v21, __ptr u64, v22, !212 - v24 = get_local __ptr u64, self_00, !215 - mem_copy_val v24, v23 - v25 = get_local __ptr u64, other_, !216 - v26 = const u64 1 - store v26 to v25, !217 - v27 = get_local __ptr u64, self_00, !219 - v28 = load v27, !220 - v29 = get_local __ptr u64, other_, !222 - v30 = load v29, !223 - v31 = div v28, v30, !224 - v32 = get_local __ptr ptr, ptr_, !227 - store v12 to v32, !227 - v33 = get_local __ptr u64, _len_, !227 - store v31 to v33, !227 - v34 = get_local __ptr ptr, ptr_, !229 - v35 = get_local __ptr { ptr }, __anon_01, !231 - v36 = const u64 0 - v37 = get_elem_ptr v35, __ptr ptr, v36, !227 - mem_copy_val v37, v34 - v38 = get_local __ptr { ptr }, __tmp_block_arg1 - mem_copy_val v38, v35 - v39 = get_local __ptr { ptr }, buffer, !232 - mem_copy_val v39, v38 - v40 = get_local __ptr { ptr }, buffer, !233 - v41 = get_local __ptr __ptr { ptr }, buffer_, !236 - store v40 to v41, !236 - v42 = get_local __ptr u64, LENGTH, !238 - v43 = const u64 1, !239 - store v43 to v42, !240 - v44 = get_local __ptr [u8; 1], __anon_02, !242 - mem_clear_val v44, !236 - v45 = get_local __ptr [u8; 1], array, !244 - mem_copy_val v45, v44 - v46 = get_local __ptr [u8; 1], array, !246 - v47 = cast_ptr v46 to __ptr [u8; 1], !236 - v48 = get_local __ptr __ptr [u8; 1], array_, !248 - store v47 to v48, !249 - v49 = get_local __ptr u64, i, !251 - v50 = const u64 0, !252 - store v50 to v49, !253 - br abi_decode_30_while(), !236 - - abi_decode_30_while(): - v51 = get_local __ptr u64, i, !255 - v52 = get_local __ptr u64, self_1, !258 - mem_copy_val v52, v51 - v53 = get_local __ptr u64, other_0, !259 - v54 = const u64 1 - store v54 to v53, !260 - v55 = get_local __ptr u64, self_1, !262 - v56 = load v55, !263 - v57 = get_local __ptr u64, other_0, !265 - v58 = load v57, !266 - v59 = cmp lt v56 v58, !267 - cbr v59, abi_decode_30_while_body(), abi_decode_30_end_while(), !236 + v17 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 + mem_copy_val v17, v16 + v18 = get_local __ptr { ptr, u64 }, __anon_00, !138 + mem_copy_val v18, v17 + v19 = get_local __ptr { ptr }, __anon_01, !148 + v20 = const u64 0 + v21 = get_elem_ptr v19, __ptr ptr, v20, !149 + mem_copy_val v21, v10 + v22 = get_local __ptr { ptr }, buffer, !150 + mem_copy_val v22, v19 + v23 = get_local __ptr { ptr }, buffer, !151 + v24 = get_local __ptr [u8; 1], __anon_02, !155 + mem_clear_val v24, !156 + v25 = get_local __ptr [u8; 1], array, !158 + mem_copy_val v25, v24 + v26 = get_local __ptr [u8; 1], array, !160 + v27 = cast_ptr v26 to __ptr [u8; 1], !156 + v28 = const u64 0, !161 + br abi_decode_30_while(v28), !156 + + abi_decode_30_while(v29: u64): + v30 = const u64 1 + v31 = cmp lt v29 v30, !164 + cbr v31, abi_decode_30_while_body(), abi_decode_30_end_while(), !156 abi_decode_30_while_body(): - v60 = get_local __ptr __ptr [u8; 1], array_, !269 - v61 = load v60, !236 - v62 = get_local __ptr u64, i, !271 - v63 = load v62, !236 - v64 = const u64 1 - v65 = asm(idx: v63, elem_ir_type_size: v64, ptr: v61, offset_temp, ptr_out) -> __ptr u8 ptr_out, !236 { + v32 = const u64 1 + v33 = asm(idx: v29, elem_ir_type_size: v32, ptr: v27, offset_temp, ptr_out) -> __ptr u8 ptr_out, !156 { mul offset_temp idx elem_ir_type_size add ptr_out ptr offset_temp } - v66 = get_local __ptr __ptr u8, item, !273 - store v65 to v66, !274 - v67 = get_local __ptr __ptr { ptr }, buffer_, !276 - v68 = get_local __ptr __ptr { ptr }, self_01, !279 - mem_copy_val v68, v67 - v69 = get_local __ptr __ptr { ptr }, self_01, !281 - v70 = get_local __ptr __ptr { ptr }, buffer_0, !284 - mem_copy_val v70, v69 - v71 = get_local __ptr __ptr { ptr }, buffer_0, !286 - v72 = get_local __ptr __ptr { ptr }, self_000, !289 - mem_copy_val v72, v71 - v73 = get_local __ptr u64, size, !291 - v74 = const u64 1 - store v74 to v73, !292 - v75 = const bool false - cbr v75, abi_decode_30_decode_32_abi_decode_33_read_34_block0(), abi_decode_30_decode_32_abi_decode_33_read_34_block1(), !294 - - abi_decode_30_decode_32_abi_decode_33_read_34_block0(): - v76 = get_local __ptr __ptr { ptr }, self_000, !296 - v77 = load v76, !297 - v78 = const u64 0 - v79 = get_elem_ptr v77, __ptr ptr, v78, !299 - v80 = load v79, !300 - v81 = asm(ptr: v80) -> u8 ptr, !302 { - } - v82 = get_local __ptr u8, v, !304 - store v81 to v82, !305 - v83 = get_local __ptr __ptr { ptr }, self_000, !307 - v84 = load v83, !308 - v85 = const u64 0 - v86 = get_elem_ptr v84, __ptr ptr, v85, !309 - v87 = load v86, !310 - v88 = get_local __ptr u64, size, !312 - v89 = load v88, !313 - v90 = const u64 1 - v91 = mul v90, v89, !314 - v92 = add v87, v91, !315 - v93 = get_local __ptr __ptr { ptr }, self_000, !317 - v94 = load v93, !318 - v95 = const u64 0 - v96 = get_elem_ptr v94, __ptr ptr, v95, !319 - store v92 to v96, !320 - v97 = get_local __ptr u8, v, !322 - v98 = load v97, !323 - br abi_decode_30_decode_32_abi_decode_33_read_34_block5(v98), !324 - - abi_decode_30_decode_32_abi_decode_33_read_34_block1(): - v99 = get_local __ptr u64, size, !326 - v100 = get_local __ptr u64, self_0000, !329 - mem_copy_val v100, v99 - v101 = get_local __ptr u64, other_00, !330 - v102 = const u64 1, !331 - store v102 to v101, !332 - v103 = get_local __ptr u64, self_0000, !334 - v104 = load v103, !335 - v105 = get_local __ptr u64, other_00, !337 - v106 = load v105, !338 - v107 = cmp eq v104 v106, !339 - cbr v107, abi_decode_30_decode_32_abi_decode_33_read_34_block2(), abi_decode_30_decode_32_abi_decode_33_read_34_block3(), !340 - - abi_decode_30_decode_32_abi_decode_33_read_34_block2(): - v108 = get_local __ptr __ptr { ptr }, self_000, !342 - v109 = load v108, !343 - v110 = const u64 0 - v111 = get_elem_ptr v109, __ptr ptr, v110, !344 - v112 = load v111, !345 - v113 = asm(ptr: v112, val) -> u8 val, !347 { - lb val ptr i0, !348 - } - v114 = get_local __ptr u8, v_, !350 - store v113 to v114, !351 - v115 = get_local __ptr __ptr { ptr }, self_000, !353 - v116 = load v115, !354 - v117 = const u64 0 - v118 = get_elem_ptr v116, __ptr ptr, v117, !355 - v119 = load v118, !356 - v120 = const u64 1 - v121 = const u64 1, !357 - v122 = mul v120, v121, !358 - v123 = add v119, v122, !359 - v124 = get_local __ptr __ptr { ptr }, self_000, !361 - v125 = load v124, !362 - v126 = const u64 0 - v127 = get_elem_ptr v125, __ptr ptr, v126, !363 - store v123 to v127, !364 - v128 = get_local __ptr u8, v_, !366 - v129 = load v128, !367 - br abi_decode_30_decode_32_abi_decode_33_read_34_block4(v129), !368 - - abi_decode_30_decode_32_abi_decode_33_read_34_block3(): - v130 = get_local __ptr __ptr { ptr }, self_000, !370 - v131 = get_local __ptr __ptr { ptr }, self_10, !373 - mem_copy_val v131, v130 - v132 = get_local __ptr __ptr { ptr }, self_10, !375 - v133 = load v132, !376 - v134 = const u64 0 - v135 = get_elem_ptr v133, __ptr ptr, v134, !377 - v136 = load v135, !378 - v137 = asm(ptr: v136, val) -> u8 val, !380 { - lw val ptr i0, !381 + v34 = const u64 0 + v35 = get_elem_ptr v23, __ptr ptr, v34, !172 + v36 = load v35, !173 + v37 = asm(ptr: v36, val) -> u8 val, !175 { + lb val ptr i0, !176 } - v138 = get_local __ptr u8, v0, !383 - store v137 to v138, !384 - v139 = get_local __ptr __ptr { ptr }, self_10, !386 - v140 = load v139, !387 - v141 = const u64 0 - v142 = get_elem_ptr v140, __ptr ptr, v141, !388 - v143 = load v142, !389 - v144 = const u64 1 - v145 = const u64 8, !390 - v146 = mul v144, v145, !391 - v147 = add v143, v146, !392 - v148 = get_local __ptr __ptr { ptr }, self_10, !394 - v149 = load v148, !395 - v150 = const u64 0 - v151 = get_elem_ptr v149, __ptr ptr, v150, !396 - store v147 to v151, !397 - v152 = get_local __ptr u8, v0, !399 - v153 = load v152, !400 - br abi_decode_30_decode_32_abi_decode_33_read_34_block4(v153), !401 - - abi_decode_30_decode_32_abi_decode_33_read_34_block4(v154: u8): - br abi_decode_30_decode_32_abi_decode_33_read_34_block5(v154), !402 - - abi_decode_30_decode_32_abi_decode_33_read_34_block5(v155: u8): - v156 = get_local __ptr __ptr u8, item, !404 - v157 = load v156, !236 - store v155 to v157, !406 - v158 = get_local __ptr u64, i, !408 - v159 = get_local __ptr u64, self_2, !411 - mem_copy_val v159, v158 - v160 = get_local __ptr u64, other_1, !412 - v161 = const u64 1, !413 - store v161 to v160, !414 - v162 = get_local __ptr u64, self_2, !416 - v163 = load v162, !417 - v164 = get_local __ptr u64, other_1, !419 - v165 = load v164, !420 - v166 = add v163, v165, !421 - v167 = get_local __ptr u64, i, !422 - store v166 to v167, !423 - br abi_decode_30_while(), !236 + v38 = load v35, !177 + v39 = const u64 1, !178 + v40 = add v38, v39, !179 + store v40 to v35, !181 + store v37 to v33, !183 + v41 = const u64 1, !184 + v42 = add v29, v41, !187 + br abi_decode_30_while(v42), !156 abi_decode_30_end_while(): - v168 = get_local __ptr __ptr [u8; 1], array_, !425 - v169 = load v168, !236 - v170 = get_local __ptr [u8; 1], __tmp_block_arg2 - mem_copy_val v170, v169 - mem_copy_val __ret_value, v170 - v171 = const unit () - ret () v171 + mem_copy_val __ret_value, v27 + v43 = const unit () + ret () v43 } - pub fn log_42(value !427: u8) -> (), !430 { - local mut { ptr, u64, u64 } __aggr_memcpy_0 - local mut { ptr, u64, u64 } __aggr_memcpy_00 - local mut { ptr, u64, u64 } __aggr_memcpy_01 - local mut { ptr, u64, u64 } __aggr_memcpy_02 - local mut slice __aggr_memcpy_03 - local { ptr, u64, u64 } __anon_0 - local { ptr, u64, u64 } __anon_00 - local { ptr, u64, u64 } __anon_01 - local { { ptr, u64, u64 } } __anon_1 - local { ptr, u64, u64 } __anon_10 - local { ptr, u64 } __anon_11 - local { { ptr, u64, u64 } } __anon_2 + pub fn log_42(value !189: u8) -> (), !192 { + local mut slice __aggr_memcpy_0 + local { ptr, u64 } __anon_0 local slice __log_arg - local { { ptr, u64, u64 } } __tmp_block_arg - local { { ptr, u64, u64 } } __tmp_block_arg0 - local slice __tmp_block_arg1 - local slice __tmp_block_arg2 - local { { ptr, u64, u64 } } buffer - local { { ptr, u64, u64 } } buffer_ local u8 item_ - local u8 self_ - local { { ptr, u64, u64 } } self_0 - local u8 value_ entry(value: u8): - v0 = get_local __ptr u8, value_ - store value to v0 - v1 = get_local __ptr u8, value_, !431 - v2 = get_local __ptr u8, item_, !431 - mem_copy_val v2, v1 - v3 = get_local __ptr u8, item_, !433 - v4 = const u64 1024 - v5 = asm(cap: v4) -> ptr hp, !436 { - aloc cap - } - v6 = get_local __ptr { ptr, u64, u64 }, __anon_0, !437 - v7 = const u64 0 - v8 = get_elem_ptr v6, __ptr ptr, v7, !438 - store v5 to v8, !439 - v9 = const u64 1 - v10 = get_elem_ptr v6, __ptr u64, v9, !440 - store v4 to v10, !441 - v11 = const u64 2 - v12 = get_elem_ptr v6, __ptr u64, v11, !442 - v13 = const u64 0 - store v13 to v12, !443 - v14 = asm(buffer: v6) -> __ptr { ptr, u64, u64 } buffer { - } - v15 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v15, v14 - v16 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !445 - v17 = const u64 0 - v18 = get_elem_ptr v16, __ptr { ptr, u64, u64 }, v17, !446 - mem_copy_val v18, v15 - v19 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v19, v16 - v20 = get_local __ptr u8, self_, !449 - mem_copy_val v20, v3 - v21 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !450 - mem_copy_val v21, v19 - v22 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !452 - v23 = const u64 0 - v24 = get_elem_ptr v22, __ptr { ptr, u64, u64 }, v23, !454 - v25 = asm(buffer: v24) -> __ptr { ptr, u64, u64 } buffer { - } - v26 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v26, v25 - v27 = get_local __ptr { ptr, u64, u64 }, __anon_00, !455 - mem_copy_val v27, v26 - v28 = const u64 0 - v29 = get_elem_ptr v27, __ptr ptr, v28, !456 - v30 = load v29, !457 - v31 = const u64 1 - v32 = get_elem_ptr v27, __ptr u64, v31, !458 - v33 = load v32, !459 - v34 = const u64 2 - v35 = get_elem_ptr v27, __ptr u64, v34, !460 - v36 = load v35, !461 - v37 = get_local __ptr u8, self_, !463 - v38 = load v37, !464 - v39 = const u64 1 - v40 = add v36, v39, !465 - v41 = cmp gt v40 v33, !466 - cbr v41, encode_43_abi_encode_44_block1(), encode_43_abi_encode_44_block0(v30, v33), !467 - - encode_43_abi_encode_44_block0(v42: ptr, v43: u64): - v44 = add v42, v36, !468 - v45 = cast_ptr v44 to __ptr u8, !469 - store v38 to v45, !470 - v46 = const u64 1 - v47 = add v36, v46, !471 - v48 = get_local __ptr { ptr, u64, u64 }, __anon_10, !472 - v49 = const u64 0 - v50 = get_elem_ptr v48, __ptr ptr, v49, !473 - store v42 to v50, !474 - v51 = const u64 1 - v52 = get_elem_ptr v48, __ptr u64, v51, !475 - store v43 to v52, !476 - v53 = const u64 2 - v54 = get_elem_ptr v48, __ptr u64, v53, !477 - store v47 to v54, !478 - v55 = asm(buffer: v48) -> __ptr { ptr, u64, u64 } buffer { - } - v56 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v56, v55 - v57 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !480 - v58 = const u64 0 - v59 = get_elem_ptr v57, __ptr { ptr, u64, u64 }, v58, !481 - mem_copy_val v59, v56 - v60 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg0 - mem_copy_val v60, v57 - v61 = get_local __ptr { { ptr, u64, u64 } }, buffer, !483 - mem_copy_val v61, v60 - v62 = get_local __ptr { { ptr, u64, u64 } }, buffer, !485 - v63 = get_local __ptr { { ptr, u64, u64 } }, self_0, !488 - mem_copy_val v63, v62 - v64 = get_local __ptr { { ptr, u64, u64 } }, self_0, !490 - v65 = const u64 0 - v66 = get_elem_ptr v64, __ptr { ptr, u64, u64 }, v65, !491 - v67 = asm(buffer: v66) -> __ptr { ptr, u64, u64 } buffer { - } - v68 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 - mem_copy_val v68, v67 - v69 = get_local __ptr { ptr, u64, u64 }, __anon_01, !492 - mem_copy_val v69, v68 - v70 = const u64 0 - v71 = get_elem_ptr v69, __ptr ptr, v70, !493 - v72 = const u64 2 - v73 = get_elem_ptr v69, __ptr u64, v72, !494 - v74 = get_local __ptr { ptr, u64 }, __anon_11, !495 - v75 = const u64 0 - v76 = get_elem_ptr v74, __ptr ptr, v75, !496 - mem_copy_val v76, v71 - v77 = const u64 1 - v78 = get_elem_ptr v74, __ptr u64, v77, !497 - mem_copy_val v78, v73 - v79 = asm(s: v74) -> __ptr slice s { + v0 = get_local __ptr u8, item_, !193 + store value to v0, !193 + v1 = get_local __ptr u8, item_, !195 + v2 = const u64 1 + v3 = asm(size: v2, src: v1) -> ptr hp, !197 { + aloc size, !198 + mcp hp src size, !199 } - v80 = get_local __ptr slice, __aggr_memcpy_03 - mem_copy_val v80, v79 - v81 = get_local __ptr slice, __tmp_block_arg1 - mem_copy_val v81, v80 - v82 = get_local __ptr slice, __tmp_block_arg2 - mem_copy_val v82, v81 - v83 = get_local __ptr slice, __log_arg - mem_copy_val v83, v82 - v84 = const u64 14454674236531057292 - log __ptr slice v83, v84 - v85 = const unit () - ret () v85 - - encode_43_abi_encode_44_block1(): - v86 = const u64 2 - v87 = mul v33, v86, !498 - v88 = add v87, v39, !499 - v89 = asm(new_cap: v88, old_ptr: v30, len: v36) -> __ptr u8 hp, !500 { - aloc new_cap - mcp hp old_ptr len + v4 = get_local __ptr { ptr, u64 }, __anon_0, !201 + v5 = const u64 0 + v6 = get_elem_ptr v4, __ptr ptr, v5, !202 + store v3 to v6, !203 + v7 = const u64 1 + v8 = get_elem_ptr v4, __ptr u64, v7, !204 + store v2 to v8, !205 + v9 = asm(s: v4) -> __ptr slice s { } - br encode_43_abi_encode_44_block0(v89, v88), !501 + v10 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v10, v9 + v11 = get_local __ptr slice, __log_arg + mem_copy_val v11, v10 + v12 = const u64 14454674236531057292 + log __ptr slice v11, v12 + v13 = const unit () + ret () v13 } } !0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/src/main..sw" -!1 = span !0 0 135 +!1 = span !0 0 116 !2 = fn_name_span !0 7 14 !3 = (!1 !2) -!4 = span !0 66 72 -!5 = fn_call_path_span !0 66 70 +!4 = span !0 58 64 +!5 = fn_call_path_span !0 58 62 !6 = (!4 !5) -!7 = span !0 97 103 -!8 = span !0 98 99 -!9 = span !0 101 102 +!7 = span !0 97 98 +!8 = span !0 100 101 +!9 = span !0 82 102 !10 = "test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/src/main.sw" !11 = span !10 2198 3051 !12 = fn_name_span !10 2201 2205 @@ -947,491 +445,195 @@ script { !14 = span !10 2928 2954 !15 = fn_call_path_span !10 2928 2952 !16 = (!14 !15) -!17 = span !10 2981 3017 -!18 = span !10 3032 3037 -!19 = span !10 3038 3039 -!20 = span !10 3032 3040 +!17 = span !10 3032 3037 +!18 = span !10 3038 3039 +!19 = span !10 3032 3040 +!20 = span !10 3042 3047 !21 = span !10 3022 3048 !22 = fn_call_path_span !10 3022 3031 -!23 = (!21 !22) -!24 = span !10 3042 3047 -!25 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/assert.sw" -!26 = span !25 1863 1871 -!27 = fn_call_path_span !25 1866 1868 -!28 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/ops.sw" -!29 = span !28 15555 15569 -!30 = fn_call_path_span !28 15560 15562 -!31 = (!21 !22 !26 !27 !29 !30) -!32 = span !28 17195 17200 -!33 = (!21 !22 !26 !27 !29 !30 !32) -!34 = (!21 !22 !26 !27 !29 !30) -!35 = (!21 !22 !26 !27 !29 !30) -!36 = span !28 15554 15576 -!37 = fn_call_path_span !28 15571 15574 -!38 = (!21 !22 !26 !27 !36 !37) -!39 = (!21 !22 !26 !27 !36 !37) -!40 = span !28 12567 12571 -!41 = (!21 !22 !26 !27 !36 !37 !40) -!42 = (!21 !22 !26 !27 !36 !37) -!43 = span !28 12573 12578 -!44 = (!21 !22 !26 !27 !36 !37) -!45 = (!21 !22 !26) -!46 = span !25 1887 1889 -!47 = (!21 !22 !46) -!48 = span !25 1883 1890 -!49 = fn_call_path_span !25 1883 1886 -!50 = (!21 !22 !48 !49) -!51 = span !25 1904 1906 -!52 = (!21 !22 !51) -!53 = span !25 1900 1907 -!54 = fn_call_path_span !25 1900 1903 -!55 = (!21 !22 !53 !54) -!56 = span !25 1924 1947 -!57 = (!21 !22 !56) -!58 = span !25 1917 1948 -!59 = fn_call_path_span !25 1917 1923 -!60 = (!21 !22 !58 !59) -!61 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/revert.sw" -!62 = span !61 766 770 -!63 = (!21 !22 !58 !59 !62) -!64 = (!21 !22 !58 !59) -!65 = span !61 757 771 -!66 = (!21 !22 !58 !59 !65) -!67 = span !10 58 117 -!68 = fn_name_span !10 61 87 -!69 = inline "never" -!70 = (!67 !68 !69) -!71 = span !10 107 115 -!72 = span !10 220 282 -!73 = fn_name_span !10 223 250 -!74 = (!72 !73 !69) -!75 = span !10 271 280 -!76 = span !10 388 450 -!77 = fn_name_span !10 391 418 -!78 = (!76 !77 !69) -!79 = span !10 439 448 -!80 = span !10 556 618 -!81 = fn_name_span !10 559 586 -!82 = (!80 !81 !69) -!83 = span !10 607 616 -!84 = span !10 725 855 -!85 = fn_name_span !10 728 756 -!86 = (!84 !85 !69) -!87 = span !10 778 853 -!88 = span !10 1030 1156 -!89 = fn_name_span !10 1033 1061 -!90 = (!88 !89 !69) -!91 = span !10 1083 1154 -!92 = span !10 1327 1392 -!93 = fn_name_span !10 1330 1358 -!94 = (!92 !93 !69) -!95 = span !10 1380 1390 -!96 = span !10 135 194 -!97 = fn_name_span !10 138 162 -!98 = (!96 !97 !69) -!99 = span !10 183 192 -!100 = span !10 300 362 -!101 = fn_name_span !10 303 328 -!102 = (!100 !101 !69) -!103 = span !10 350 360 -!104 = span !10 468 530 -!105 = fn_name_span !10 471 496 -!106 = (!104 !105 !69) -!107 = span !10 518 528 -!108 = span !10 636 698 -!109 = fn_name_span !10 639 664 -!110 = (!108 !109 !69) -!111 = span !10 686 696 -!112 = span !10 873 1003 -!113 = fn_name_span !10 876 902 -!114 = (!112 !113 !69) -!115 = span !10 925 1001 -!116 = span !10 1174 1300 -!117 = fn_name_span !10 1177 1203 -!118 = (!116 !117 !69) -!119 = span !10 1226 1298 -!120 = span !10 1410 1475 -!121 = fn_name_span !10 1413 1439 -!122 = (!120 !121 !69) -!123 = span !10 1462 1473 -!124 = span !10 1536 1590 -!125 = fn_name_span !10 1539 1557 -!126 = (!124 !125 !69) -!127 = span !10 1579 1588 -!128 = span !10 1580 1584 -!129 = span !10 1633 1687 -!130 = fn_name_span !10 1636 1652 -!131 = (!129 !130 !69) -!132 = span !10 1675 1685 -!133 = span !10 1676 1680 -!134 = span !10 1781 1852 -!135 = fn_name_span !10 1784 1812 -!136 = (!134 !135 !69) -!137 = span !10 1837 1850 -!138 = span !10 1947 2196 -!139 = fn_name_span !10 1950 1974 -!140 = (!138 !139 !69) -!141 = span !10 2030 2039 -!142 = span !10 2063 2072 -!143 = span !10 2086 2102 -!144 = span !10 2148 2157 -!145 = span !10 3070 3173 -!146 = fn_name_span !10 3073 3085 -!147 = (!145 !146 !69) -!148 = span !10 3133 3140 -!149 = span !10 3134 3139 -!150 = span !10 3105 3142 -!151 = span !10 3192 3320 -!152 = fn_name_span !10 3195 3203 -!153 = (!151 !152 !69) -!154 = span !10 3236 3263 -!155 = span !10 3306 3311 -!156 = span !10 3296 3312 -!157 = span !10 3268 3318 -!158 = fn_call_path_span !10 3268 3289 -!159 = (!157 !158) -!160 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/raw_slice.sw" -!161 = span !160 2363 2366 -!162 = (!157 !158 !161) -!163 = span !160 2368 2392 -!164 = fn_call_path_span !160 2374 2375 -!165 = (!157 !158 !163 !164) -!166 = (!157 !158 !163 !164) -!167 = span !28 7076 7080 -!168 = (!157 !158 !163 !164 !167) -!169 = (!157 !158 !163 !164) -!170 = span !28 7082 7087 -!171 = (!157 !158 !163 !164 !170) -!172 = (!157 !158 !163 !164) -!173 = (!157 !158 !163 !164) -!174 = span !160 2362 2393 -!175 = (!157 !158 !174) -!176 = (!157 !158 !174) -!177 = (!157 !158 !174) -!178 = (!157 !158 !174) -!179 = span !160 2351 2394 -!180 = fn_call_path_span !160 2351 2361 -!181 = (!157 !158 !179 !180) -!182 = span !160 1257 1262 -!183 = (!157 !158 !179 !180 !182) -!184 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" -!185 = span !184 70988 71161 -!186 = fn_name_span !184 70995 71005 -!187 = (!185 !186 !69) -!188 = span !184 71103 71107 -!189 = span !184 71103 71113 -!190 = fn_call_path_span !184 71108 71111 -!191 = (!189 !190) -!192 = span !160 2922 2926 -!193 = (!189 !190 !192) -!194 = span !160 2911 2927 -!195 = fn_call_path_span !160 2911 2921 -!196 = (!189 !190 !194 !195) -!197 = span !160 1633 1638 -!198 = (!189 !190 !194 !195 !197) -!199 = span !160 2928 2929 -!200 = (!189 !190 !199) -!201 = span !184 71115 71119 -!202 = span !184 71115 71131 -!203 = fn_call_path_span !184 71120 71123 -!204 = (!202 !203) -!205 = span !160 3420 3424 -!206 = (!202 !203 !205) -!207 = span !160 3409 3425 -!208 = fn_call_path_span !160 3409 3419 -!209 = (!202 !203 !207 !208) -!210 = (!202 !203 !207 !208 !197) -!211 = span !160 3426 3427 -!212 = (!202 !203 !211) -!213 = span !160 3409 3446 -!214 = fn_call_path_span !160 3428 3429 -!215 = (!202 !203 !213 !214) -!216 = (!202 !203 !213 !214) -!217 = (!202 !203 !213 !214) -!218 = span !28 9973 9977 -!219 = (!202 !203 !213 !214 !218) -!220 = (!202 !203 !213 !214) -!221 = span !28 9979 9984 -!222 = (!202 !203 !213 !214 !221) -!223 = (!202 !203 !213 !214) -!224 = (!202 !203 !213 !214) -!225 = span !184 71078 71132 -!226 = fn_call_path_span !184 71078 71102 -!227 = (!225 !226) -!228 = span !184 750 753 -!229 = (!225 !226 !228) -!230 = span !184 735 755 -!231 = (!225 !226 !230) -!232 = span !184 71061 71133 -!233 = span !184 71152 71158 -!234 = span !184 71138 71159 -!235 = fn_call_path_span !184 71138 71151 -!236 = (!234 !235) -!237 = span !184 89814 89854 -!238 = (!234 !235 !237) -!239 = span !184 89834 89854 -!240 = (!234 !235 !237) -!241 = span !184 89880 89893 -!242 = (!234 !235 !241) -!243 = span !184 89864 89894 -!244 = (!234 !235 !243) -!245 = span !184 89979 89984 -!246 = (!234 !235 !245) -!247 = span !184 89903 89986 -!248 = (!234 !235 !247) -!249 = (!234 !235 !247) -!250 = span !184 89996 90010 -!251 = (!234 !235 !250) -!252 = span !184 90008 90009 -!253 = (!234 !235 !250) -!254 = span !184 90026 90027 -!255 = (!234 !235 !254) -!256 = span !184 90026 90031 -!257 = fn_call_path_span !184 90028 90029 -!258 = (!234 !235 !256 !257) -!259 = (!234 !235 !256 !257) -!260 = (!234 !235 !256 !257) -!261 = span !28 21076 21080 -!262 = (!234 !235 !256 !257 !261) -!263 = (!234 !235 !256 !257) -!264 = span !28 21082 21087 -!265 = (!234 !235 !256 !257 !264) -!266 = (!234 !235 !256 !257) -!267 = (!234 !235 !256 !257) -!268 = span !184 90075 90080 -!269 = (!234 !235 !268) -!270 = span !184 90082 90083 -!271 = (!234 !235 !270) -!272 = span !184 90046 90085 -!273 = (!234 !235 !272) -!274 = (!234 !235 !272) -!275 = span !184 90106 90112 -!276 = (!234 !235 !275) -!277 = span !184 90106 90126 -!278 = fn_call_path_span !184 90113 90119 -!279 = (!234 !235 !277 !278) -!280 = span !184 3973 3977 -!281 = (!234 !235 !277 !278 !280) -!282 = span !184 3959 3978 -!283 = fn_call_path_span !184 3959 3972 -!284 = (!234 !235 !277 !278 !282 !283) -!285 = span !184 72778 72784 -!286 = (!234 !235 !277 !278 !282 !283 !285) -!287 = span !184 72778 72797 -!288 = fn_call_path_span !184 72785 72789 -!289 = (!234 !235 !277 !278 !282 !283 !287 !288) -!290 = span !184 3371 3399 -!291 = (!234 !235 !277 !278 !282 !283 !287 !288 !290) -!292 = (!234 !235 !277 !278 !282 !283 !287 !288 !290) -!293 = span !184 3412 3438 -!294 = (!234 !235 !277 !278 !282 !283 !287 !288 !293) -!295 = span !184 3470 3474 -!296 = (!234 !235 !277 !278 !282 !283 !287 !288 !295) -!297 = (!234 !235 !277 !278 !282 !283 !287 !288) -!298 = span !184 625 637 -!299 = (!234 !235 !277 !278 !282 !283 !287 !288 !298) -!300 = (!234 !235 !277 !278 !282 !283 !287 !288) -!301 = span !184 3461 3518 -!302 = (!234 !235 !277 !278 !282 !283 !287 !288 !301) -!303 = span !184 3453 3519 -!304 = (!234 !235 !277 !278 !282 !283 !287 !288 !303) -!305 = (!234 !235 !277 !278 !282 !283 !287 !288 !303) -!306 = span !184 3559 3563 -!307 = (!234 !235 !277 !278 !282 !283 !287 !288 !306) -!308 = (!234 !235 !277 !278 !282 !283 !287 !288) -!309 = (!234 !235 !277 !278 !282 !283 !287 !288 !298) -!310 = (!234 !235 !277 !278 !282 !283 !287 !288) -!311 = span !184 3569 3573 -!312 = (!234 !235 !277 !278 !282 !283 !287 !288 !311) -!313 = (!234 !235 !277 !278 !282 !283 !287 !288) -!314 = (!234 !235 !277 !278 !282 !283 !287 !288) -!315 = (!234 !235 !277 !278 !282 !283 !287 !288) -!316 = span !184 3532 3574 -!317 = (!234 !235 !277 !278 !282 !283 !287 !288 !316) -!318 = (!234 !235 !277 !278 !282 !283 !287 !288) -!319 = (!234 !235 !277 !278 !282 !283 !287 !288 !316) -!320 = (!234 !235 !277 !278 !282 !283 !287 !288 !316) -!321 = span !184 3588 3589 -!322 = (!234 !235 !277 !278 !282 !283 !287 !288 !321) -!323 = (!234 !235 !277 !278 !282 !283 !287 !288) -!324 = (!234 !235 !277 !278 !282 !283 !287 !288) -!325 = span !184 3608 3612 -!326 = (!234 !235 !277 !278 !282 !283 !287 !288 !325) -!327 = span !184 3608 3617 -!328 = fn_call_path_span !184 3613 3615 -!329 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328) -!330 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328) -!331 = span !184 3616 3617 -!332 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328) -!333 = span !28 16833 16837 -!334 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328 !333) -!335 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328) -!336 = span !28 16839 16844 -!337 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328 !336) -!338 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328) -!339 = (!234 !235 !277 !278 !282 !283 !287 !288 !327 !328) -!340 = (!234 !235 !277 !278 !282 !283 !287 !288 !327) -!341 = span !184 3649 3653 -!342 = (!234 !235 !277 !278 !282 !283 !287 !288 !341) -!343 = (!234 !235 !277 !278 !282 !283 !287 !288) -!344 = (!234 !235 !277 !278 !282 !283 !287 !288 !298) -!345 = (!234 !235 !277 !278 !282 !283 !287 !288) -!346 = span !184 3640 3733 -!347 = (!234 !235 !277 !278 !282 !283 !287 !288 !346) -!348 = span !184 3682 3695 -!349 = span !184 3632 3734 -!350 = (!234 !235 !277 !278 !282 !283 !287 !288 !349) -!351 = (!234 !235 !277 !278 !282 !283 !287 !288 !349) -!352 = span !184 3774 3778 -!353 = (!234 !235 !277 !278 !282 !283 !287 !288 !352) -!354 = (!234 !235 !277 !278 !282 !283 !287 !288) -!355 = (!234 !235 !277 !278 !282 !283 !287 !288 !298) -!356 = (!234 !235 !277 !278 !282 !283 !287 !288) -!357 = span !184 3784 3785 -!358 = (!234 !235 !277 !278 !282 !283 !287 !288) -!359 = (!234 !235 !277 !278 !282 !283 !287 !288) -!360 = span !184 3747 3786 -!361 = (!234 !235 !277 !278 !282 !283 !287 !288 !360) -!362 = (!234 !235 !277 !278 !282 !283 !287 !288) -!363 = (!234 !235 !277 !278 !282 !283 !287 !288 !360) -!364 = (!234 !235 !277 !278 !282 !283 !287 !288 !360) -!365 = span !184 3800 3801 -!366 = (!234 !235 !277 !278 !282 !283 !287 !288 !365) -!367 = (!234 !235 !277 !278 !282 !283 !287 !288) -!368 = (!234 !235 !277 !278 !282 !283 !287 !288) -!369 = span !184 3831 3835 -!370 = (!234 !235 !277 !278 !282 !283 !287 !288 !369) -!371 = span !184 3831 3855 -!372 = fn_call_path_span !184 3836 3848 -!373 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!374 = span !184 2775 2779 -!375 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !374) -!376 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!377 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !298) -!378 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!379 = span !184 2766 2847 -!380 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !379) -!381 = span !184 2804 2817 -!382 = span !184 2758 2848 -!383 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !382) -!384 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !382) -!385 = span !184 2884 2888 -!386 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !385) -!387 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!388 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !298) -!389 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!390 = span !184 2894 2895 -!391 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!392 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!393 = span !184 2857 2896 -!394 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !393) -!395 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!396 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !393) -!397 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !393) -!398 = span !184 2906 2907 -!399 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372 !398) -!400 = (!234 !235 !277 !278 !282 !283 !287 !288 !371 !372) -!401 = (!234 !235 !277 !278 !282 !283 !287 !288) -!402 = (!234 !235 !277 !278 !282 !283 !287 !288) -!403 = span !184 90099 90103 -!404 = (!234 !235 !403) -!405 = span !184 90098 90126 -!406 = (!234 !235 !405) -!407 = span !184 90140 90141 -!408 = (!234 !235 !407) -!409 = span !184 90140 90146 -!410 = fn_call_path_span !184 90142 90144 -!411 = (!234 !235 !409 !410) -!412 = (!234 !235 !409 !410) -!413 = span !184 90145 90146 -!414 = (!234 !235 !409 !410) -!415 = span !28 1322 1326 -!416 = (!234 !235 !409 !410 !415) -!417 = (!234 !235 !409 !410) -!418 = span !28 1328 1333 -!419 = (!234 !235 !409 !410 !418) -!420 = (!234 !235 !409 !410) -!421 = (!234 !235 !409 !410) -!422 = (!234 !235 !409) -!423 = (!234 !235 !409) -!424 = span !184 90168 90173 -!425 = (!234 !235 !424) -!426 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" -!427 = span !426 591 596 -!428 = span !426 577 651 -!429 = fn_name_span !426 584 587 -!430 = (!428 !429) -!431 = span !426 642 647 -!432 = span !184 70910 70914 -!433 = (!431 !432) -!434 = span !184 70926 70939 -!435 = fn_call_path_span !184 70926 70937 -!436 = (!431 !434 !435) -!437 = (!431 !434 !435) -!438 = (!431 !434 !435) -!439 = (!431 !434 !435) -!440 = (!431 !434 !435) -!441 = (!431 !434 !435) -!442 = (!431 !434 !435) -!443 = (!431 !434 !435) -!444 = span !184 191 254 -!445 = (!431 !434 !435 !444) -!446 = (!431 !434 !435) -!447 = span !184 70910 70940 -!448 = fn_call_path_span !184 70915 70925 -!449 = (!431 !447 !448) -!450 = (!431 !447 !448) -!451 = span !184 5359 5365 -!452 = (!431 !447 !448 !451) -!453 = span !184 87 114 -!454 = (!431 !447 !448 !453) -!455 = (!431 !447 !448) -!456 = (!431 !447 !448) -!457 = (!431 !447 !448) -!458 = (!431 !447 !448) -!459 = (!431 !447 !448) -!460 = (!431 !447 !448) -!461 = (!431 !447 !448) -!462 = span !184 5374 5378 -!463 = (!431 !447 !448 !462) -!464 = (!431 !447 !448) -!465 = (!431 !447 !448) -!466 = (!431 !447 !448) -!467 = (!431 !447 !448) -!468 = (!431 !447 !448) -!469 = (!431 !447 !448) -!470 = (!431 !447 !448) -!471 = (!431 !447 !448) -!472 = (!431 !447 !448) -!473 = (!431 !447 !448) -!474 = (!431 !447 !448) -!475 = (!431 !447 !448) -!476 = (!431 !447 !448) -!477 = (!431 !447 !448) -!478 = (!431 !447 !448) -!479 = span !184 5307 5390 -!480 = (!431 !447 !448 !479) -!481 = (!431 !447 !448) -!482 = span !184 70897 70941 -!483 = (!431 !482) -!484 = span !184 70946 70952 -!485 = (!431 !484) -!486 = span !184 70946 70967 -!487 = fn_call_path_span !184 70953 70965 -!488 = (!431 !486 !487) -!489 = span !184 573 577 -!490 = (!431 !486 !487 !489) -!491 = (!431 !486 !487 !453) -!492 = (!431 !486 !487) -!493 = (!431 !486 !487) -!494 = (!431 !486 !487) -!495 = (!431 !486 !487) -!496 = (!431 !486 !487) -!497 = (!431 !486 !487) -!498 = (!431 !447 !448) -!499 = (!431 !447 !448) -!500 = (!431 !447 !448) -!501 = (!431 !447 !448) +!23 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/assert.sw" +!24 = span !23 1863 1871 +!25 = fn_call_path_span !23 1866 1868 +!26 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/ops.sw" +!27 = span !26 15555 15569 +!28 = fn_call_path_span !26 15560 15562 +!29 = (!21 !22 !24 !25 !27 !28) +!30 = span !26 12573 12578 +!31 = span !26 15554 15576 +!32 = fn_call_path_span !26 15571 15574 +!33 = (!21 !22 !24 !25 !31 !32) +!34 = (!21 !22 !24) +!35 = span !23 1883 1890 +!36 = fn_call_path_span !23 1883 1886 +!37 = (!21 !22 !35 !36) +!38 = span !23 1900 1907 +!39 = fn_call_path_span !23 1900 1903 +!40 = (!21 !22 !38 !39) +!41 = span !23 1917 1948 +!42 = fn_call_path_span !23 1917 1923 +!43 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/revert.sw" +!44 = span !43 757 771 +!45 = (!21 !22 !41 !42 !44) +!46 = span !10 58 117 +!47 = fn_name_span !10 61 87 +!48 = inline "never" +!49 = (!46 !47 !48) +!50 = span !10 220 282 +!51 = fn_name_span !10 223 250 +!52 = (!50 !51 !48) +!53 = span !10 725 855 +!54 = fn_name_span !10 728 756 +!55 = (!53 !54 !48) +!56 = span !10 1030 1156 +!57 = fn_name_span !10 1033 1061 +!58 = (!56 !57 !48) +!59 = span !10 1327 1392 +!60 = fn_name_span !10 1330 1358 +!61 = (!59 !60 !48) +!62 = span !10 135 194 +!63 = fn_name_span !10 138 162 +!64 = (!62 !63 !48) +!65 = span !10 468 530 +!66 = fn_name_span !10 471 496 +!67 = (!65 !66 !48) +!68 = span !10 873 1003 +!69 = fn_name_span !10 876 902 +!70 = (!68 !69 !48) +!71 = span !10 1174 1300 +!72 = fn_name_span !10 1177 1203 +!73 = (!71 !72 !48) +!74 = span !10 1410 1475 +!75 = fn_name_span !10 1413 1439 +!76 = (!74 !75 !48) +!77 = span !10 1536 1590 +!78 = fn_name_span !10 1539 1557 +!79 = (!77 !78 !48) +!80 = span !10 1580 1584 +!81 = span !10 1579 1588 +!82 = span !10 1633 1687 +!83 = fn_name_span !10 1636 1652 +!84 = (!82 !83 !48) +!85 = span !10 1676 1680 +!86 = span !10 1675 1685 +!87 = span !10 1781 1852 +!88 = fn_name_span !10 1784 1812 +!89 = (!87 !88 !48) +!90 = span !10 1947 2196 +!91 = fn_name_span !10 1950 1974 +!92 = (!90 !91 !48) +!93 = span !10 2030 2039 +!94 = span !10 2063 2072 +!95 = span !10 2086 2102 +!96 = span !10 2148 2157 +!97 = span !10 3070 3173 +!98 = fn_name_span !10 3073 3085 +!99 = (!97 !98 !48) +!100 = span !10 3133 3140 +!101 = span !10 3134 3139 +!102 = span !10 3192 3320 +!103 = fn_name_span !10 3195 3203 +!104 = (!102 !103 !48) +!105 = span !10 3306 3311 +!106 = span !10 3296 3312 +!107 = span !10 3268 3318 +!108 = fn_call_path_span !10 3268 3289 +!109 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/raw_slice.sw" +!110 = span !109 2351 2394 +!111 = fn_call_path_span !109 2351 2361 +!112 = (!107 !108 !110 !111) +!113 = span !109 2368 2392 +!114 = fn_call_path_span !109 2374 2375 +!115 = (!107 !108 !113 !114) +!116 = span !109 1257 1262 +!117 = (!107 !108 !110 !111 !116) +!118 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" +!119 = span !118 71747 71920 +!120 = fn_name_span !118 71754 71764 +!121 = (!119 !120 !48) +!122 = span !118 71862 71866 +!123 = span !118 71862 71872 +!124 = fn_call_path_span !118 71867 71870 +!125 = (!123 !124) +!126 = span !109 2922 2926 +!127 = (!123 !124 !126) +!128 = span !109 2911 2927 +!129 = fn_call_path_span !109 2911 2921 +!130 = (!123 !124 !128 !129) +!131 = span !109 1633 1638 +!132 = (!123 !124 !128 !129 !131) +!133 = span !109 2928 2929 +!134 = (!123 !124 !133) +!135 = span !118 71874 71878 +!136 = span !118 71874 71890 +!137 = fn_call_path_span !118 71879 71882 +!138 = (!136 !137) +!139 = span !109 3420 3424 +!140 = (!136 !137 !139) +!141 = span !109 3409 3425 +!142 = fn_call_path_span !109 3409 3419 +!143 = (!136 !137 !141 !142) +!144 = (!136 !137 !141 !142 !131) +!145 = span !118 71837 71891 +!146 = fn_call_path_span !118 71837 71861 +!147 = span !118 735 755 +!148 = (!145 !146 !147) +!149 = (!145 !146) +!150 = span !118 71820 71892 +!151 = span !118 71911 71917 +!152 = span !118 71897 71918 +!153 = fn_call_path_span !118 71897 71910 +!154 = span !118 90639 90652 +!155 = (!152 !153 !154) +!156 = (!152 !153) +!157 = span !118 90623 90653 +!158 = (!152 !153 !157) +!159 = span !118 90738 90743 +!160 = (!152 !153 !159) +!161 = span !118 90767 90768 +!162 = span !118 90785 90790 +!163 = fn_call_path_span !118 90787 90788 +!164 = (!152 !153 !162 !163) +!165 = span !118 90865 90885 +!166 = fn_call_path_span !118 90872 90878 +!167 = span !118 3959 3978 +!168 = fn_call_path_span !118 3959 3972 +!169 = span !118 73537 73556 +!170 = fn_call_path_span !118 73544 73548 +!171 = span !118 625 637 +!172 = (!152 !153 !165 !166 !167 !168 !169 !170 !171) +!173 = (!152 !153 !165 !166 !167 !168 !169 !170) +!174 = span !118 3640 3733 +!175 = (!152 !153 !165 !166 !167 !168 !169 !170 !174) +!176 = span !118 3682 3695 +!177 = (!152 !153 !165 !166 !167 !168 !169 !170) +!178 = (!152 !153 !165 !166 !167 !168 !169 !170) +!179 = (!152 !153 !165 !166 !167 !168 !169 !170) +!180 = span !118 3747 3786 +!181 = (!152 !153 !165 !166 !167 !168 !169 !170 !180) +!182 = span !118 90857 90885 +!183 = (!152 !153 !182) +!184 = span !118 90904 90905 +!185 = span !118 90899 90905 +!186 = fn_call_path_span !118 90901 90903 +!187 = (!152 !153 !185 !186) +!188 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" +!189 = span !188 591 596 +!190 = span !188 577 651 +!191 = fn_name_span !188 584 587 +!192 = (!190 !191) +!193 = span !188 642 647 +!194 = span !118 71080 71084 +!195 = (!193 !194) +!196 = span !118 71058 71173 +!197 = (!193 !196) +!198 = span !118 71100 71109 +!199 = span !118 71123 71138 +!200 = span !118 71190 71201 +!201 = (!193 !200) +!202 = (!193 !200) +!203 = (!193 !200) +!204 = (!193 !200) +!205 = (!193 !200) ;; ASM: Final program ;; Program kind: Script @@ -1446,364 +648,221 @@ lw $$ds $$tmp i1 add $$ds $$ds $$tmp cfei i0 ; allocate stack space for globals move $$locbase $sp ; save locals base register for function __entry -cfei i48 ; allocate 48 bytes for locals and 0 slots for call arguments -addi $r0 $$locbase i32 ; get offset to local __ptr slice -jal $$reta $pc i9 ; [call]: call main_0 -addi $r1 $$locbase i16 ; get offset to local __ptr { u64, u64 } -sw $$locbase $zero i2 ; store word -sw $$locbase $zero i3 ; store word -mcpi $$locbase $r1 i16 ; copy memory -mcpi $r0 $$locbase i16 ; copy memory -lw $r1 $r0 i1 ; load size of returned slice -lw $r0 $r0 i0 ; load pointer to returned slice -retd $r0 $r1 -pshl i15 ; save registers 16..40 +jal $$reta $pc i2 ; [call]: call main_0 +retd $zero $zero +pshl i7 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function main_0 -cfei i264960 ; allocate 264960 bytes for locals and 0 slots for call arguments -move $r3 $$reta ; save return address +cfei i264920 ; allocate 264920 bytes for locals and 0 slots for call arguments +move $r1 $$reta ; save return address move $$arg0 $$locbase ; [call]: pass argument 0 -jal $$reta $pc i134 ; [call]: call array_repeat_zero_small_u8_1 +jal $$reta $pc i94 ; [call]: call array_repeat_zero_small_u8_1 addi $r0 $$locbase i8 ; get offset to local __ptr [u64; 5] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i144 ; [call]: call array_repeat_zero_small_u16_2 +jal $$reta $pc i100 ; [call]: call array_repeat_zero_small_u16_2 addi $r0 $$locbase i48 ; get offset to local __ptr [u64; 5] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i154 ; [call]: call array_repeat_zero_small_u32_3 -movi $r0 i32990 ; get word offset to local from base +jal $$reta $pc i97 ; [call]: call array_repeat_zero_small_u16_2 +movi $r0 i32989 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i162 ; [call]: call array_repeat_zero_small_u64_4 -movi $r0 i32995 ; get word offset to local from base +jal $$reta $pc i92 ; [call]: call array_repeat_zero_small_u16_2 +movi $r0 i32994 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i170 ; [call]: call array_repeat_zero_small_u256_5 -movi $r0 i33015 ; get word offset to local from base +jal $$reta $pc i96 ; [call]: call array_repeat_zero_small_u256_5 +movi $r0 i33014 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i178 ; [call]: call array_repeat_zero_small_b256_6 -movi $r0 i33035 ; get word offset to local from base +jal $$reta $pc i100 ; [call]: call array_repeat_zero_small_b256_6 +movi $r0 i33034 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i186 ; [call]: call array_repeat_zero_small_bool_7 -movi $r0 i33036 ; get word offset to local from base +jal $$reta $pc i104 ; [call]: call array_repeat_zero_small_bool_7 +movi $r0 i33035 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i194 ; [call]: call array_repeat_zero_big_u8_8 -movi $r0 i33040 ; get word offset to local from base +jal $$reta $pc i108 ; [call]: call array_repeat_zero_big_u8_8 +movi $r0 i33039 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i202 ; [call]: call array_repeat_zero_big_u16_9 -movi $r0 i33065 ; get word offset to local from base +jal $$reta $pc i112 ; [call]: call array_repeat_zero_big_u32_10 +movi $r0 i33064 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i210 ; [call]: call array_repeat_zero_big_u32_10 -movi $r0 i33090 ; get word offset to local from base +jal $$reta $pc i107 ; [call]: call array_repeat_zero_big_u32_10 +movi $r0 i33089 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i218 ; [call]: call array_repeat_zero_big_u64_11 +jal $$reta $pc i102 ; [call]: call array_repeat_zero_big_u32_10 addi $r0 $$locbase i88 ; get offset to local __ptr [u256; 25] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i228 ; [call]: call array_repeat_zero_big_u256_12 +jal $$reta $pc i108 ; [call]: call array_repeat_zero_big_u256_12 addi $r0 $$locbase i888 ; get offset to local __ptr [b256; 25] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i238 ; [call]: call array_repeat_zero_big_b256_13 +jal $$reta $pc i114 ; [call]: call array_repeat_zero_big_b256_13 addi $r0 $$locbase i1688 ; get offset to local __ptr [bool; 25] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i248 ; [call]: call array_repeat_zero_big_bool_14 +jal $$reta $pc i120 ; [call]: call array_repeat_zero_big_bool_14 addi $r0 $$locbase i1720 ; get offset to local __ptr [bool; 5] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i258 ; [call]: call small_array_repeat_15 +jal $$reta $pc i126 ; [call]: call small_array_repeat_15 addi $r0 $$locbase i1728 ; get offset to local __ptr [bool; 25] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i285 ; [call]: call big_array_repeat_16 +jal $$reta $pc i150 ; [call]: call big_array_repeat_16 addi $r0 $$locbase i1760 ; get offset to local __ptr [u8; 262145] move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i302 ; [call]: call u8_array_bigger_than_18_bits_17 -jal $$reta $pc i316 ; [call]: call arrays_with_const_length_18 -movi $r0 i32989 ; get word offset to local from base +jal $$reta $pc i164 ; [call]: call u8_array_bigger_than_18_bits_17 +jal $$reta $pc i174 ; [call]: call arrays_with_const_length_18 +movi $r0 i33114 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i328 ; [call]: call decode_array_19 -movi $r1 i33115 ; get word offset to local from base -muli $r1 $r1 i8 ; get byte offset to local from base -add $r1 $$locbase $r1 ; get absolute byte offset to local -mcpi $r1 $r0 i1 ; copy memory -movi $r0 i33115 ; get word offset to local from base -muli $r0 $r0 i8 ; get byte offset to local from base -add $r0 $$locbase $r0 ; get absolute byte offset to local -mul $r1 $zero $one ; get offset to array element -add $r1 $r0 $r1 ; add array element offset to array base -movi $r0 i33118 ; get word offset to local from base -muli $r0 $r0 i8 ; get byte offset to local from base -add $r0 $$locbase $r0 ; get absolute byte offset to local -mcpi $r0 $r1 i1 ; copy memory -movi $r0 i33119 ; get word offset to local from base +jal $$reta $pc i186 ; [call]: call decode_array_19 +movi $r0 i33114 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local +mul $r2 $zero $one ; get offset to array element +add $r2 $r0 $r2 ; add array element offset to array base +lb $r0 $r2 i0 ; load byte movi $r2 i255 ; initialize constant into register -sb $r0 $r2 i0 ; store byte -lb $r0 $r1 i0 ; load byte -movi $r1 i33119 ; get word offset to local from base -muli $r1 $r1 i8 ; get byte offset to local from base -add $r1 $$locbase $r1 ; get absolute byte offset to local -lb $r1 $r1 i0 ; load byte -eq $r0 $r0 $r1 -movi $r1 i33117 ; get word offset to local from base -muli $r1 $r1 i8 ; get byte offset to local from base -add $r1 $$locbase $r1 ; get absolute byte offset to local -sb $r1 $r0 i0 ; store byte -movi $r0 i33117 ; get word offset to local from base -muli $r0 $r0 i8 ; get byte offset to local from base -add $r0 $$locbase $r0 ; get absolute byte offset to local -lb $r0 $r0 i0 ; load byte -eq $r0 $r0 $zero -jnzf $r0 $zero i1 -jmpf $zero i23 -movi $r0 i33118 ; get word offset to local from base -muli $r0 $r0 i8 ; get byte offset to local from base -add $r0 $$locbase $r0 ; get absolute byte offset to local -lb $r0 $r0 i0 ; load byte +eq $r2 $r0 $r2 +eq $r2 $r2 $zero +jnzf $r2 $zero i1 +jmpf $zero i7 move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i491 ; [call]: call log_42 -movi $r0 i33119 ; get word offset to local from base -muli $r0 $r0 i8 ; get byte offset to local from base -add $r0 $$locbase $r0 ; get absolute byte offset to local -lb $r0 $r0 i0 ; load byte +jal $$reta $pc i276 ; [call]: call log_42 +movi $r0 i255 ; initialize constant into register move $$arg0 $r0 ; [call]: pass argument 0 -jal $$reta $pc i485 ; [call]: call log_42 -addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_EQ_SIGNAL's address in data section -movi $r1 i33116 ; get word offset to local from base -muli $r1 $r1 i8 ; get byte offset to local from base -add $r1 $$locbase $r1 ; get absolute byte offset to local -mcpi $r1 $r0 i8 ; copy memory -movi $r0 i33116 ; get word offset to local from base -muli $r0 $r0 i8 ; get byte offset to local from base -add $r0 $$locbase $r0 ; get absolute byte offset to local -lw $r0 $r0 i0 ; load word +jal $$reta $pc i273 ; [call]: call log_42 +load $r0 data_NonConfigurable_0; load constant from data section rvrt $r0 -cfsi i264960 ; free 264960 bytes for locals and 0 slots for extra call arguments -move $$reta $r3 ; restore return address +cfsi i264920 ; free 264920 bytes for locals and 0 slots for extra call arguments +move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 -popl i15 ; restore registers 16..40 +popl i7 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_small_u8_1 -cfei i8 ; allocate 8 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i5 ; clear memory [u8; 5], 5 bytes -mcpi $r0 $$locbase i5 ; copy memory -cfsi i8 ; free 8 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i5 ; clear memory [u8; 5], 5 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_small_u16_2 -cfei i40 ; allocate 40 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i40 ; clear memory [u64; 5], 40 bytes -mcpi $r0 $$locbase i40 ; copy memory -cfsi i40 ; free 40 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address -poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 -jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 -pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function array_repeat_zero_small_u32_3 -cfei i40 ; allocate 40 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i40 ; clear memory [u64; 5], 40 bytes -mcpi $r0 $$locbase i40 ; copy memory -cfsi i40 ; free 40 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address -poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 -jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 -pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function array_repeat_zero_small_u64_4 -cfei i40 ; allocate 40 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i40 ; clear memory [u64; 5], 40 bytes -mcpi $r0 $$locbase i40 ; copy memory -cfsi i40 ; free 40 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i40 ; clear memory [u64; 5], 40 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_small_u256_5 -cfei i160 ; allocate 160 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i160 ; clear memory [u256; 5], 160 bytes -mcpi $r0 $$locbase i160 ; copy memory -cfsi i160 ; free 160 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i160 ; clear memory [u256; 5], 160 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_small_b256_6 -cfei i160 ; allocate 160 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i160 ; clear memory [b256; 5], 160 bytes -mcpi $r0 $$locbase i160 ; copy memory -cfsi i160 ; free 160 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i160 ; clear memory [b256; 5], 160 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_small_bool_7 -cfei i8 ; allocate 8 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i5 ; clear memory [bool; 5], 5 bytes -mcpi $r0 $$locbase i5 ; copy memory -cfsi i8 ; free 8 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i5 ; clear memory [bool; 5], 5 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_big_u8_8 -cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i25 ; clear memory [u8; 25], 25 bytes -mcpi $r0 $$locbase i25 ; copy memory -cfsi i32 ; free 32 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address -poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 -jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 -pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function array_repeat_zero_big_u16_9 -cfei i200 ; allocate 200 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i200 ; clear memory [u64; 25], 200 bytes -mcpi $r0 $$locbase i200 ; copy memory -cfsi i200 ; free 200 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i25 ; clear memory [u8; 25], 25 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_big_u32_10 -cfei i200 ; allocate 200 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i200 ; clear memory [u64; 25], 200 bytes -mcpi $r0 $$locbase i200 ; copy memory -cfsi i200 ; free 200 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address -poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 -jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 -pshh i524288 ; save registers 40..64 -move $$locbase $sp ; save locals base register for function array_repeat_zero_big_u64_11 -cfei i200 ; allocate 200 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i200 ; clear memory [u64; 25], 200 bytes -mcpi $r0 $$locbase i200 ; copy memory -cfsi i200 ; free 200 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i200 ; clear memory [u64; 25], 200 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_big_u256_12 -cfei i800 ; allocate 800 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i800 ; clear memory [u256; 25], 800 bytes -mcpi $r0 $$locbase i800 ; copy memory -cfsi i800 ; free 800 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i800 ; clear memory [u256; 25], 800 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_big_b256_13 -cfei i800 ; allocate 800 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i800 ; clear memory [b256; 25], 800 bytes -mcpi $r0 $$locbase i800 ; copy memory -cfsi i800 ; free 800 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i800 ; clear memory [b256; 25], 800 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i3 ; save registers 16..40 +pshl i1 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function array_repeat_zero_big_bool_14 -cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -mcli $$locbase i25 ; clear memory [bool; 25], 25 bytes -mcpi $r0 $$locbase i25 ; copy memory -cfsi i32 ; free 32 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r0 $$reta ; save return address +mcli $$arg0 i25 ; clear memory [bool; 25], 25 bytes +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 +popl i1 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i7 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function small_array_repeat_15 -cfei i8 ; allocate 8 bytes for locals and 0 slots for call arguments move $r0 $$arg0 ; save argument 0 (__ret_value) move $r1 $$reta ; save return address mul $r2 $zero $one ; get offset to array element -add $r2 $$locbase $r2 ; add array element offset to array base +add $r2 $$arg0 $r2 ; add array element offset to array base sb $r2 $one i0 ; store byte mul $r2 $one $one ; get offset to array element -add $r2 $$locbase $r2 ; add array element offset to array base +add $r2 $r0 $r2 ; add array element offset to array base sb $r2 $one i0 ; store byte movi $r2 i2 ; initialize constant into register mul $r2 $r2 $one ; get offset to array element -add $r2 $$locbase $r2 ; add array element offset to array base +add $r2 $r0 $r2 ; add array element offset to array base sb $r2 $one i0 ; store byte movi $r2 i3 ; initialize constant into register mul $r2 $r2 $one ; get offset to array element -add $r2 $$locbase $r2 ; add array element offset to array base +add $r2 $r0 $r2 ; add array element offset to array base sb $r2 $one i0 ; store byte movi $r2 i4 ; initialize constant into register mul $r2 $r2 $one ; get offset to array element -add $r2 $$locbase $r2 ; add array element offset to array base +add $r2 $r0 $r2 ; add array element offset to array base sb $r2 $one i0 ; store byte -mcpi $r0 $$locbase i5 ; copy memory -cfsi i8 ; free 8 bytes for locals and 0 slots for extra call arguments move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 popl i7 ; restore registers 16..40 @@ -1811,34 +870,27 @@ jal $zero $$reta i0 ; return from call pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function big_array_repeat_16 -cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments -move $r0 $$arg0 ; save argument 0 (__ret_value) -move $r1 $$reta ; save return address -move $r3 $zero ; move parameter from branch to block argument -mul $r2 $r3 $one ; get offset to array element -add $r2 $$locbase $r2 ; add array element offset to array base -sb $r2 $one i0 ; store byte -add $r3 $r3 $one -movi $r2 i25 ; initialize constant into register -lt $r2 $r3 $r2 -jnzb $r2 $zero i5 -mcpi $r0 $$locbase i25 ; copy memory -cfsi i32 ; free 32 bytes for locals and 0 slots for extra call arguments -move $$reta $r1 ; restore return address +move $r2 $$arg0 ; save argument 0 (__ret_value) +move $r3 $$reta ; save return address +move $r1 $zero ; move parameter from branch to block argument +mul $r0 $r1 $one ; get offset to array element +add $r0 $r2 $r0 ; add array element offset to array base +sb $r0 $one i0 ; store byte +add $r1 $r1 $one +movi $r0 i25 ; initialize constant into register +lt $r0 $r1 $r0 +jnzb $r0 $zero i5 +move $$reta $r3 ; restore return address poph i524288 ; restore registers 40..64 popl i15 ; restore registers 16..40 jal $zero $$reta i0 ; return from call pshl i3 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function u8_array_bigger_than_18_bits_17 -cfei i262152 ; allocate 262152 bytes for locals and 0 slots for call arguments move $r0 $$arg0 ; save argument 0 (__ret_value) move $r1 $$reta ; save return address load $$tmp data_NonConfigurable_1; loading clear size in bytes -mcl $$locbase $$tmp ; clear memory [u8; 262145] -load $$tmp data_NonConfigurable_1; loading copy size in bytes -mcp $r0 $$locbase $$tmp ; copy memory -cfsi i262152 ; free 262152 bytes for locals and 0 slots for extra call arguments +mcl $r0 $$tmp ; clear memory [u8; 262145] move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 popl i3 ; restore registers 16..40 @@ -1863,298 +915,131 @@ jal $zero $$reta i0 ; return from call pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function decode_array_19 -cfei i48 ; allocate 48 bytes for locals and 0 slots for call arguments +cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments move $r0 $$arg0 ; save argument 0 (__ret_value) move $r1 $$reta ; save return address mul $r2 $zero $one ; get offset to array element add $r2 $$locbase $r2 ; add array element offset to array base movi $r3 i255 ; initialize constant into register sb $r2 $r3 i0 ; store byte -addi $r2 $$locbase i8 ; get offset to local __ptr slice +addi $r2 $$locbase i16 ; get offset to local __ptr slice move $$arg0 $$locbase ; [call]: pass argument 0 move $$arg1 $r2 ; [call]: pass argument 1 -jal $$reta $pc i14 ; [call]: call to_slice_20 -addi $r3 $$locbase i32 ; get offset to local __ptr slice -mcpi $r3 $r2 i16 ; copy memory -addi $r2 $$locbase i32 ; get offset to local __ptr slice -addi $r3 $$locbase i24 ; get offset to local __ptr [u8; 1] +jal $$reta $pc i12 ; [call]: call to_slice_20 +addi $r2 $$locbase i16 ; get offset to local __ptr slice +addi $r3 $$locbase i8 ; get offset to local __ptr [u8; 1] move $$arg0 $r2 ; [call]: pass argument 0 move $$arg1 $r3 ; [call]: pass argument 1 -jal $$reta $pc i40 ; [call]: call abi_decode_24 +jal $$reta $pc i26 ; [call]: call abi_decode_24 mcpi $r0 $r3 i1 ; copy memory -cfsi i48 ; free 48 bytes for locals and 0 slots for extra call arguments +cfsi i32 ; free 32 bytes for locals and 0 slots for extra call arguments move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 popl i15 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i31 ; save registers 16..40 +pshl i7 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function to_slice_20 -cfei i112 ; allocate 112 bytes for locals and 0 slots for call arguments +cfei i40 ; allocate 40 bytes for locals and 0 slots for call arguments move $r0 $$arg1 ; save argument 1 (__ret_value) move $r1 $$reta ; save return address -addi $r2 $$locbase i64 ; get offset to local __ptr [u8; 1] +addi $r2 $$locbase i16 ; get offset to local __ptr [u8; 1] mcpi $r2 $$arg0 i1 ; copy memory -sw $$locbase $one i9 ; store word -addi $r2 $$locbase i64 ; get offset to local __ptr [u8; 1] -sw $$locbase $r2 i13 ; store word -addi $r2 $$locbase i104 ; get offset to local __ptr ptr -sw $$locbase $one i10 ; store word -lw $r3 $$locbase i9 ; load word -lw $r4 $$locbase i10 ; load word -mul $r3 $r3 $r4 -addi $r4 $$locbase i16 ; get offset to local __ptr { ptr, u64 } -mcpi $r4 $r2 i8 ; copy memory -sw $$locbase $r3 i3 ; store word -addi $r2 $$locbase i88 ; get offset to local __ptr { ptr, u64 } -mcpi $r2 $r4 i16 ; copy memory -addi $r2 $$locbase i88 ; get offset to local __ptr { ptr, u64 } +addi $r2 $$locbase i16 ; get offset to local __ptr [u8; 1] +sw $$locbase $r2 i3 ; store word +sw $$locbase $one i4 ; store word +addi $r2 $$locbase i24 ; get offset to local __ptr { ptr, u64 } mcpi $$locbase $r2 i16 ; copy memory -addi $r2 $$locbase i32 ; get offset to local __ptr slice -mcpi $r2 $$locbase i16 ; copy memory -addi $r3 $$locbase i48 ; get offset to local __ptr slice -mcpi $r3 $r2 i16 ; copy memory -mcpi $r0 $r3 i16 ; copy memory -cfsi i112 ; free 112 bytes for locals and 0 slots for extra call arguments +mcpi $r0 $$locbase i16 ; copy memory +cfsi i40 ; free 40 bytes for locals and 0 slots for extra call arguments move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 -popl i31 ; restore registers 16..40 +popl i7 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i31 ; save registers 16..40 +pshl i255 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function abi_decode_24 -cfei i408 ; allocate 408 bytes for locals and 0 slots for call arguments -move $r4 $$arg1 ; save argument 1 (__ret_value) -move $r3 $$reta ; save return address -addi $r0 $$locbase i184 ; get offset to local __ptr slice -mcpi $r0 $$arg0 i16 ; copy memory -addi $r0 $$locbase i184 ; get offset to local __ptr slice -addi $r1 $$locbase i256 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -addi $r0 $$locbase i256 ; get offset to local __ptr slice -addi $r1 $$locbase i352 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -addi $r0 $$locbase i352 ; get offset to local __ptr slice -addi $r1 $$locbase i8 ; get offset to local __ptr { ptr, u64 } -mcpi $r1 $r0 i16 ; copy memory -addi $r0 $$locbase i88 ; get offset to local __ptr { ptr, u64 } -mcpi $r0 $r1 i16 ; copy memory -addi $r1 $$locbase i40 ; get offset to local __ptr { ptr, u64 } -mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i5 ; load word -addi $r1 $$locbase i184 ; get offset to local __ptr slice -addi $r2 $$locbase i272 ; get offset to local __ptr slice -mcpi $r2 $r1 i16 ; copy memory -addi $r1 $$locbase i272 ; get offset to local __ptr slice -addi $r2 $$locbase i368 ; get offset to local __ptr slice -mcpi $r2 $r1 i16 ; copy memory -addi $r1 $$locbase i368 ; get offset to local __ptr slice -addi $r2 $$locbase i24 ; get offset to local __ptr { ptr, u64 } -mcpi $r2 $r1 i16 ; copy memory -addi $r1 $$locbase i104 ; get offset to local __ptr { ptr, u64 } -mcpi $r1 $r2 i16 ; copy memory -addi $r2 $$locbase i56 ; get offset to local __ptr { ptr, u64 } -mcpi $r2 $r1 i16 ; copy memory -addi $r1 $r2 i8 ; get offset to aggregate element -addi $r2 $$locbase i288 ; get offset to local __ptr u64 -mcpi $r2 $r1 i8 ; copy memory -sw $$locbase $one i27 ; store word -lw $r1 $$locbase i36 ; load word -lw $r2 $$locbase i27 ; load word -div $r1 $r1 $r2 -sw $$locbase $r0 i31 ; store word -sw $$locbase $r1 i17 ; store word -addi $r0 $$locbase i248 ; get offset to local __ptr ptr -addi $r1 $$locbase i72 ; get offset to local __ptr { ptr } -mcpi $r1 $r0 i8 ; copy memory -addi $r0 $$locbase i120 ; get offset to local __ptr { ptr } -mcpi $r0 $r1 i8 ; copy memory -addi $r1 $$locbase i160 ; get offset to local __ptr { ptr } -mcpi $r1 $r0 i8 ; copy memory -addi $r0 $$locbase i160 ; get offset to local __ptr { ptr } -sw $$locbase $r0 i21 ; store word -sw $$locbase $one i0 ; store word -addi $r0 $$locbase i80 ; get offset to local __ptr [u8; 1] -mcli $r0 i1 ; clear memory [u8; 1], 1 bytes -addi $r1 $$locbase i144 ; get offset to local __ptr [u8; 1] -mcpi $r1 $r0 i1 ; copy memory -addi $r0 $$locbase i144 ; get offset to local __ptr [u8; 1] -sw $$locbase $r0 i19 ; store word -sw $$locbase $zero i25 ; store word -addi $r0 $$locbase i200 ; get offset to local __ptr u64 -addi $r1 $$locbase i320 ; get offset to local __ptr u64 -mcpi $r1 $r0 i8 ; copy memory -sw $$locbase $one i28 ; store word -lw $r0 $$locbase i40 ; load word -lw $r1 $$locbase i28 ; load word -lt $r0 $r0 $r1 -jnzf $r0 $zero i5 -lw $r0 $$locbase i19 ; load word -addi $r1 $$locbase i128 ; get offset to local __ptr [u8; 1] -mcpi $r1 $r0 i1 ; copy memory -mcpi $r4 $r1 i1 ; copy memory -jmpf $zero i65 -lw $r0 $$locbase i19 ; load word -lw $r1 $$locbase i25 ; load word -mul $r1 $r1 $one -add $r0 $r0 $r1 -sw $$locbase $r0 i26 ; store word -addi $r0 $$locbase i168 ; get offset to local __ptr __ptr { ptr } -addi $r1 $$locbase i312 ; get offset to local __ptr __ptr { ptr } -mcpi $r1 $r0 i8 ; copy memory -addi $r0 $$locbase i312 ; get offset to local __ptr __ptr { ptr } -addi $r1 $$locbase i176 ; get offset to local __ptr __ptr { ptr } -mcpi $r1 $r0 i8 ; copy memory -addi $r0 $$locbase i176 ; get offset to local __ptr __ptr { ptr } -addi $r1 $$locbase i296 ; get offset to local __ptr __ptr { ptr } -mcpi $r1 $r0 i8 ; copy memory -sw $$locbase $one i43 ; store word -addi $r0 $$locbase i344 ; get offset to local __ptr u64 -addi $r1 $$locbase i304 ; get offset to local __ptr u64 -mcpi $r1 $r0 i8 ; copy memory -sw $$locbase $one i29 ; store word -lw $r0 $$locbase i38 ; load word -lw $r1 $$locbase i29 ; load word -eq $r0 $r0 $r1 -jnzf $r0 $zero i18 -addi $r0 $$locbase i296 ; get offset to local __ptr __ptr { ptr } -addi $r1 $$locbase i328 ; get offset to local __ptr __ptr { ptr } -mcpi $r1 $r0 i8 ; copy memory -lw $r0 $$locbase i41 ; load word -lw $r0 $r0 i0 ; load word -lw $r0 $r0 i0 ; lw val ptr i0 -addi $r1 $$locbase i392 ; get offset to local __ptr u8 -sb $r1 $r0 i0 ; store byte -lw $r0 $$locbase i41 ; load word -lw $r0 $r0 i0 ; load word -movi $r1 i8 ; initialize constant into register -mul $r1 $one $r1 -add $r0 $r0 $r1 -lw $r1 $$locbase i41 ; load word -sw $r1 $r0 i0 ; store word -addi $r0 $$locbase i392 ; get offset to local __ptr u8 -lb $r0 $r0 i0 ; load byte -jmpf $zero i13 -lw $r0 $$locbase i37 ; load word -lw $r0 $r0 i0 ; load word -lb $r0 $r0 i0 ; lb val ptr i0 -addi $r1 $$locbase i400 ; get offset to local __ptr u8 -sb $r1 $r0 i0 ; store byte -lw $r0 $$locbase i37 ; load word -lw $r0 $r0 i0 ; load word -mul $r1 $one $one -add $r0 $r0 $r1 -lw $r1 $$locbase i37 ; load word -sw $r1 $r0 i0 ; store word -addi $r0 $$locbase i400 ; get offset to local __ptr u8 -lb $r0 $r0 i0 ; load byte -lw $r1 $$locbase i26 ; load word -sb $r1 $r0 i0 ; store byte -addi $r0 $$locbase i200 ; get offset to local __ptr u64 -addi $r1 $$locbase i336 ; get offset to local __ptr u64 -mcpi $r1 $r0 i8 ; copy memory -sw $$locbase $one i30 ; store word -lw $r0 $$locbase i42 ; load word -lw $r1 $$locbase i30 ; load word -add $r0 $r0 $r1 -sw $$locbase $r0 i25 ; store word -jmpb $zero i76 -cfsi i408 ; free 408 bytes for locals and 0 slots for extra call arguments -move $$reta $r3 ; restore return address +cfei i176 ; allocate 176 bytes for locals and 0 slots for call arguments +move $r0 $$arg1 ; save argument 1 (__ret_value) +move $r1 $$reta ; save return address +addi $r2 $$locbase i96 ; get offset to local __ptr slice +mcpi $r2 $$arg0 i16 ; copy memory +addi $r2 $$locbase i96 ; get offset to local __ptr slice +addi $r3 $$locbase i112 ; get offset to local __ptr slice +mcpi $r3 $r2 i16 ; copy memory +addi $r2 $$locbase i112 ; get offset to local __ptr slice +addi $r3 $$locbase i144 ; get offset to local __ptr slice +mcpi $r3 $r2 i16 ; copy memory +addi $r2 $$locbase i144 ; get offset to local __ptr slice +mcpi $$locbase $r2 i16 ; copy memory +addi $r2 $$locbase i32 ; get offset to local __ptr { ptr, u64 } +mcpi $r2 $$locbase i16 ; copy memory +addi $r3 $$locbase i96 ; get offset to local __ptr slice +addi $r4 $$locbase i128 ; get offset to local __ptr slice +mcpi $r4 $r3 i16 ; copy memory +addi $r3 $$locbase i128 ; get offset to local __ptr slice +addi $r4 $$locbase i160 ; get offset to local __ptr slice +mcpi $r4 $r3 i16 ; copy memory +addi $r3 $$locbase i160 ; get offset to local __ptr slice +addi $r4 $$locbase i16 ; get offset to local __ptr { ptr, u64 } +mcpi $r4 $r3 i16 ; copy memory +addi $r3 $$locbase i48 ; get offset to local __ptr { ptr, u64 } +mcpi $r3 $r4 i16 ; copy memory +addi $r3 $$locbase i64 ; get offset to local __ptr { ptr } +mcpi $r3 $r2 i8 ; copy memory +addi $r2 $$locbase i88 ; get offset to local __ptr { ptr } +mcpi $r2 $r3 i8 ; copy memory +addi $r2 $$locbase i88 ; get offset to local __ptr { ptr } +addi $r3 $$locbase i72 ; get offset to local __ptr [u8; 1] +mcli $r3 i1 ; clear memory [u8; 1], 1 bytes +addi $r4 $$locbase i80 ; get offset to local __ptr [u8; 1] +mcpi $r4 $r3 i1 ; copy memory +addi $r3 $$locbase i80 ; get offset to local __ptr [u8; 1] +move $r7 $zero ; move parameter from branch to block argument +lt $r4 $r7 $one +jnzf $r4 $zero i2 +mcpi $r0 $r3 i1 ; copy memory +jmpf $zero i10 +mul $r4 $r7 $one +add $r4 $r3 $r4 +lw $r5 $r2 i0 ; load word +lb $r5 $r5 i0 ; lb val ptr i0 +lw $r6 $r2 i0 ; load word +add $r6 $r6 $one +sw $r2 $r6 i0 ; store word +sb $r4 $r5 i0 ; store byte +add $r7 $r7 $one +jmpb $zero i12 +cfsi i176 ; free 176 bytes for locals and 0 slots for extra call arguments +move $$reta $r1 ; restore return address poph i524288 ; restore registers 40..64 -popl i31 ; restore registers 16..40 +popl i255 ; restore registers 16..40 jal $zero $$reta i0 ; return from call -pshl i63 ; save registers 16..40 +pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function log_42 -cfei i464 ; allocate 464 bytes for locals and 0 slots for call arguments -move $r5 $$reta ; save return address -addi $r0 $$locbase i456 ; get offset to local __ptr u8 -sb $r0 $$arg0 i0 ; store byte -addi $r0 $$locbase i456 ; get offset to local __ptr u8 -addi $r1 $$locbase i416 ; get offset to local __ptr u8 -mcpi $r1 $r0 i1 ; copy memory -addi $r0 $$locbase i416 ; get offset to local __ptr u8 -movi $r1 i1024 ; initialize constant into register -aloc $r1 -addi $r1 $$locbase i112 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $hp i14 ; store word -movi $r2 i1024 ; initialize constant into register -sw $$locbase $r2 i15 ; store word -sw $$locbase $zero i16 ; store word -mcpi $$locbase $r1 i24 ; copy memory -addi $r1 $$locbase i184 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $$locbase i24 ; copy memory -addi $r2 $$locbase i288 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i424 ; get offset to local __ptr u8 -mcpi $r1 $r0 i1 ; copy memory -addi $r0 $$locbase i392 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r2 i24 ; copy memory -addi $r0 $$locbase i392 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i136 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r0 $r1 i24 ; copy memory -lw $r0 $$locbase i17 ; load word -lw $r4 $$locbase i18 ; load word -lw $r1 $$locbase i19 ; load word -addi $r2 $$locbase i424 ; get offset to local __ptr u8 -lb $r2 $r2 i0 ; load byte -add $r3 $r1 $one -gt $r3 $r3 $r4 -jnzf $r3 $zero i1 -jmpf $zero i6 -movi $r3 i2 ; initialize constant into register -mul $r3 $r4 $r3 -add $r4 $r3 $one -aloc $r4 -mcp $hp $r0 $r1 -move $r0 $hp ; move parameter from branch to block argument -add $r3 $r0 $r1 -sb $r3 $r2 i0 ; store byte -add $r1 $r1 $one -addi $r2 $$locbase i208 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $r0 i26 ; store word -sw $$locbase $r4 i27 ; store word -sw $$locbase $r1 i28 ; store word -addi $r0 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r0 $r2 i24 ; copy memory -addi $r1 $$locbase i248 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i312 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r1 $$locbase i368 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i368 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i432 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i432 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i72 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i160 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r0 $r1 i24 ; copy memory -addi $r1 $r0 i16 ; get offset to aggregate element -addi $r2 $$locbase i232 ; get offset to local __ptr { ptr, u64 } -mcpi $r2 $r0 i8 ; copy memory -addi $r0 $r2 i8 ; get offset to aggregate element -mcpi $r0 $r1 i8 ; copy memory -addi $r0 $$locbase i96 ; get offset to local __ptr slice -mcpi $r0 $r2 i16 ; copy memory -addi $r1 $$locbase i336 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -addi $r0 $$locbase i352 ; get offset to local __ptr slice -mcpi $r0 $r1 i16 ; copy memory -addi $r1 $$locbase i272 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -load $r0 data_NonConfigurable_2; load constant from data section -lw $r1 $$locbase i34 ; load slice pointer for logging data -lw $r2 $$locbase i35 ; load slice size for logging data -logd $zero $r0 $r1 $r2 ; log slice -cfsi i464 ; free 464 bytes for locals and 0 slots for extra call arguments -move $$reta $r5 ; restore return address +cfei i56 ; allocate 56 bytes for locals and 0 slots for call arguments +move $r0 $$reta ; save return address +addi $r1 $$locbase i48 ; get offset to local __ptr u8 +sb $r1 $$arg0 i0 ; store byte +addi $r1 $$locbase i48 ; get offset to local __ptr u8 +move $r2 $one ; copy ASM block argument's constant initial value to register +aloc $one ; aloc size +mcp $hp $r1 $r2 ; mcp hp src size +addi $r1 $$locbase i16 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $hp i2 ; store word +sw $$locbase $one i3 ; store word +mcpi $$locbase $r1 i16 ; copy memory +addi $r1 $$locbase i32 ; get offset to local __ptr slice +mcpi $r1 $$locbase i16 ; copy memory +load $r1 data_NonConfigurable_2; load constant from data section +lw $r2 $$locbase i4 ; load slice pointer for logging data +lw $r3 $$locbase i5 ; load slice size for logging data +logd $zero $r1 $r2 $r3 ; log slice +cfsi i56 ; free 56 bytes for locals and 0 slots for extra call arguments +move $$reta $r0 ; restore return address poph i524288 ; restore registers 40..64 -popl i63 ; restore registers 16..40 +popl i15 ; restore registers 16..40 jal $zero $$reta i0 ; return from call .data: data_NonConfigurable_0 .word 18446744073709486083 @@ -2166,726 +1051,408 @@ data_NonConfigurable_2 .word 14454674236531057292 0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] 0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] -0x00000008 ;; [0, 0, 0, 0, 0, 0, 11, 64] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 6, 72] 0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] 0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] 0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] 0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000024 CFEI 0x30 ;; [145, 0, 0, 48] -0x00000028 ADDI $writable R59 0x20 ;; [80, 67, 176, 32] -0x0000002c JAL R62 $pc 0x9 ;; [153, 248, 48, 9] -0x00000030 ADDI R17 R59 0x10 ;; [80, 71, 176, 16] -0x00000034 SW R59 $zero 0x2 ;; [95, 236, 0, 2] -0x00000038 SW R59 $zero 0x3 ;; [95, 236, 0, 3] -0x0000003c MCPI R59 R17 0x10 ;; [96, 237, 16, 16] -0x00000040 MCPI $writable R59 0x10 ;; [96, 67, 176, 16] -0x00000044 LW R17 $writable 0x1 ;; [93, 69, 0, 1] -0x00000048 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x0000004c RETD $writable R17 ;; [37, 65, 16, 0] -0x00000050 PSHL 0xf ;; [149, 0, 0, 15] -0x00000054 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000058 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000005c CFEI 0x40b00 ;; [145, 4, 11, 0] -0x00000060 MOVE R19 R62 ;; [26, 79, 224, 0] -0x00000064 MOVE R58 R59 ;; [26, 235, 176, 0] -0x00000068 JAL R62 $pc 0x86 ;; [153, 248, 48, 134] -0x0000006c ADDI $writable R59 0x8 ;; [80, 67, 176, 8] -0x00000070 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000074 JAL R62 $pc 0x90 ;; [153, 248, 48, 144] -0x00000078 ADDI $writable R59 0x30 ;; [80, 67, 176, 48] -0x0000007c MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000080 JAL R62 $pc 0x9a ;; [153, 248, 48, 154] -0x00000084 MOVI $writable 0x80de ;; [114, 64, 128, 222] -0x00000088 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x0000008c ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x00000090 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000094 JAL R62 $pc 0xa2 ;; [153, 248, 48, 162] -0x00000098 MOVI $writable 0x80e3 ;; [114, 64, 128, 227] -0x0000009c MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000000a0 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000000a4 MOVE R58 $writable ;; [26, 233, 0, 0] -0x000000a8 JAL R62 $pc 0xaa ;; [153, 248, 48, 170] -0x000000ac MOVI $writable 0x80f7 ;; [114, 64, 128, 247] -0x000000b0 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000000b4 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000000b8 MOVE R58 $writable ;; [26, 233, 0, 0] -0x000000bc JAL R62 $pc 0xb2 ;; [153, 248, 48, 178] -0x000000c0 MOVI $writable 0x810b ;; [114, 64, 129, 11] -0x000000c4 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000000c8 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000000cc MOVE R58 $writable ;; [26, 233, 0, 0] -0x000000d0 JAL R62 $pc 0xba ;; [153, 248, 48, 186] -0x000000d4 MOVI $writable 0x810c ;; [114, 64, 129, 12] -0x000000d8 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000000dc ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000000e0 MOVE R58 $writable ;; [26, 233, 0, 0] -0x000000e4 JAL R62 $pc 0xc2 ;; [153, 248, 48, 194] -0x000000e8 MOVI $writable 0x8110 ;; [114, 64, 129, 16] -0x000000ec MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000000f0 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000000f4 MOVE R58 $writable ;; [26, 233, 0, 0] -0x000000f8 JAL R62 $pc 0xca ;; [153, 248, 48, 202] -0x000000fc MOVI $writable 0x8129 ;; [114, 64, 129, 41] -0x00000100 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x00000104 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x00000108 MOVE R58 $writable ;; [26, 233, 0, 0] -0x0000010c JAL R62 $pc 0xd2 ;; [153, 248, 48, 210] -0x00000110 MOVI $writable 0x8142 ;; [114, 64, 129, 66] -0x00000114 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x00000118 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x00000024 JAL R62 $pc 0x2 ;; [153, 248, 48, 2] +0x00000028 RETD $zero $zero ;; [37, 0, 0, 0] +0x0000002c PSHL 0x7 ;; [149, 0, 0, 7] +0x00000030 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000034 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000038 CFEI 0x40ad8 ;; [145, 4, 10, 216] +0x0000003c MOVE R17 R62 ;; [26, 71, 224, 0] +0x00000040 MOVE R58 R59 ;; [26, 235, 176, 0] +0x00000044 JAL R62 $pc 0x5e ;; [153, 248, 48, 94] +0x00000048 ADDI $writable R59 0x8 ;; [80, 67, 176, 8] +0x0000004c MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000050 JAL R62 $pc 0x64 ;; [153, 248, 48, 100] +0x00000054 ADDI $writable R59 0x30 ;; [80, 67, 176, 48] +0x00000058 MOVE R58 $writable ;; [26, 233, 0, 0] +0x0000005c JAL R62 $pc 0x61 ;; [153, 248, 48, 97] +0x00000060 MOVI $writable 0x80dd ;; [114, 64, 128, 221] +0x00000064 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x00000068 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x0000006c MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000070 JAL R62 $pc 0x5c ;; [153, 248, 48, 92] +0x00000074 MOVI $writable 0x80e2 ;; [114, 64, 128, 226] +0x00000078 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x0000007c ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x00000080 MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000084 JAL R62 $pc 0x60 ;; [153, 248, 48, 96] +0x00000088 MOVI $writable 0x80f6 ;; [114, 64, 128, 246] +0x0000008c MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x00000090 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x00000094 MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000098 JAL R62 $pc 0x64 ;; [153, 248, 48, 100] +0x0000009c MOVI $writable 0x810a ;; [114, 64, 129, 10] +0x000000a0 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x000000a4 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x000000a8 MOVE R58 $writable ;; [26, 233, 0, 0] +0x000000ac JAL R62 $pc 0x68 ;; [153, 248, 48, 104] +0x000000b0 MOVI $writable 0x810b ;; [114, 64, 129, 11] +0x000000b4 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x000000b8 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x000000bc MOVE R58 $writable ;; [26, 233, 0, 0] +0x000000c0 JAL R62 $pc 0x6c ;; [153, 248, 48, 108] +0x000000c4 MOVI $writable 0x810f ;; [114, 64, 129, 15] +0x000000c8 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x000000cc ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x000000d0 MOVE R58 $writable ;; [26, 233, 0, 0] +0x000000d4 JAL R62 $pc 0x70 ;; [153, 248, 48, 112] +0x000000d8 MOVI $writable 0x8128 ;; [114, 64, 129, 40] +0x000000dc MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x000000e0 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x000000e4 MOVE R58 $writable ;; [26, 233, 0, 0] +0x000000e8 JAL R62 $pc 0x6b ;; [153, 248, 48, 107] +0x000000ec MOVI $writable 0x8141 ;; [114, 64, 129, 65] +0x000000f0 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x000000f4 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x000000f8 MOVE R58 $writable ;; [26, 233, 0, 0] +0x000000fc JAL R62 $pc 0x66 ;; [153, 248, 48, 102] +0x00000100 ADDI $writable R59 0x58 ;; [80, 67, 176, 88] +0x00000104 MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000108 JAL R62 $pc 0x6c ;; [153, 248, 48, 108] +0x0000010c ADDI $writable R59 0x378 ;; [80, 67, 179, 120] +0x00000110 MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000114 JAL R62 $pc 0x72 ;; [153, 248, 48, 114] +0x00000118 ADDI $writable R59 0x698 ;; [80, 67, 182, 152] 0x0000011c MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000120 JAL R62 $pc 0xda ;; [153, 248, 48, 218] -0x00000124 ADDI $writable R59 0x58 ;; [80, 67, 176, 88] +0x00000120 JAL R62 $pc 0x78 ;; [153, 248, 48, 120] +0x00000124 ADDI $writable R59 0x6b8 ;; [80, 67, 182, 184] 0x00000128 MOVE R58 $writable ;; [26, 233, 0, 0] -0x0000012c JAL R62 $pc 0xe4 ;; [153, 248, 48, 228] -0x00000130 ADDI $writable R59 0x378 ;; [80, 67, 179, 120] +0x0000012c JAL R62 $pc 0x7e ;; [153, 248, 48, 126] +0x00000130 ADDI $writable R59 0x6c0 ;; [80, 67, 182, 192] 0x00000134 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000138 JAL R62 $pc 0xee ;; [153, 248, 48, 238] -0x0000013c ADDI $writable R59 0x698 ;; [80, 67, 182, 152] +0x00000138 JAL R62 $pc 0x96 ;; [153, 248, 48, 150] +0x0000013c ADDI $writable R59 0x6e0 ;; [80, 67, 182, 224] 0x00000140 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000144 JAL R62 $pc 0xf8 ;; [153, 248, 48, 248] -0x00000148 ADDI $writable R59 0x6b8 ;; [80, 67, 182, 184] -0x0000014c MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000150 JAL R62 $pc 0x102 ;; [153, 248, 49, 2] -0x00000154 ADDI $writable R59 0x6c0 ;; [80, 67, 182, 192] +0x00000144 JAL R62 $pc 0xa4 ;; [153, 248, 48, 164] +0x00000148 JAL R62 $pc 0xae ;; [153, 248, 48, 174] +0x0000014c MOVI $writable 0x815a ;; [114, 64, 129, 90] +0x00000150 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x00000154 ADD $writable R59 $writable ;; [16, 67, 180, 0] 0x00000158 MOVE R58 $writable ;; [26, 233, 0, 0] -0x0000015c JAL R62 $pc 0x11d ;; [153, 248, 49, 29] -0x00000160 ADDI $writable R59 0x6e0 ;; [80, 67, 182, 224] -0x00000164 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000168 JAL R62 $pc 0x12e ;; [153, 248, 49, 46] -0x0000016c JAL R62 $pc 0x13c ;; [153, 248, 49, 60] -0x00000170 MOVI $writable 0x80dd ;; [114, 64, 128, 221] -0x00000174 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x00000178 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x0000017c MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000180 JAL R62 $pc 0x148 ;; [153, 248, 49, 72] -0x00000184 MOVI R17 0x815b ;; [114, 68, 129, 91] -0x00000188 MULI R17 R17 0x8 ;; [85, 69, 16, 8] -0x0000018c ADD R17 R59 R17 ;; [16, 71, 180, 64] -0x00000190 MCPI R17 $writable 0x1 ;; [96, 69, 0, 1] -0x00000194 MOVI $writable 0x815b ;; [114, 64, 129, 91] -0x00000198 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x0000019c ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000001a0 MUL R17 $zero $one ;; [27, 68, 0, 64] -0x000001a4 ADD R17 $writable R17 ;; [16, 69, 4, 64] -0x000001a8 MOVI $writable 0x815e ;; [114, 64, 129, 94] -0x000001ac MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000001b0 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000001b4 MCPI $writable R17 0x1 ;; [96, 65, 16, 1] -0x000001b8 MOVI $writable 0x815f ;; [114, 64, 129, 95] -0x000001bc MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000001c0 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x000001c4 MOVI R18 0xff ;; [114, 72, 0, 255] -0x000001c8 SB $writable R18 0x0 ;; [94, 65, 32, 0] -0x000001cc LB $writable R17 0x0 ;; [92, 65, 16, 0] -0x000001d0 MOVI R17 0x815f ;; [114, 68, 129, 95] -0x000001d4 MULI R17 R17 0x8 ;; [85, 69, 16, 8] -0x000001d8 ADD R17 R59 R17 ;; [16, 71, 180, 64] -0x000001dc LB R17 R17 0x0 ;; [92, 69, 16, 0] -0x000001e0 EQ $writable $writable R17 ;; [19, 65, 4, 64] -0x000001e4 MOVI R17 0x815d ;; [114, 68, 129, 93] -0x000001e8 MULI R17 R17 0x8 ;; [85, 69, 16, 8] -0x000001ec ADD R17 R59 R17 ;; [16, 71, 180, 64] -0x000001f0 SB R17 $writable 0x0 ;; [94, 69, 0, 0] -0x000001f4 MOVI $writable 0x815d ;; [114, 64, 129, 93] -0x000001f8 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x000001fc ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x00000200 LB $writable $writable 0x0 ;; [92, 65, 0, 0] -0x00000204 EQ $writable $writable $zero ;; [19, 65, 0, 0] -0x00000208 JNZF $writable $zero 0x1 ;; [118, 64, 0, 1] -0x0000020c JMPF $zero 0x17 ;; [116, 0, 0, 23] -0x00000210 MOVI $writable 0x815e ;; [114, 64, 129, 94] -0x00000214 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x00000218 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x0000021c LB $writable $writable 0x0 ;; [92, 65, 0, 0] -0x00000220 MOVE R58 $writable ;; [26, 233, 0, 0] -0x00000224 JAL R62 $pc 0x1eb ;; [153, 248, 49, 235] -0x00000228 MOVI $writable 0x815f ;; [114, 64, 129, 95] -0x0000022c MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x00000230 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x00000234 LB $writable $writable 0x0 ;; [92, 65, 0, 0] -0x00000238 MOVE R58 $writable ;; [26, 233, 0, 0] -0x0000023c JAL R62 $pc 0x1e5 ;; [153, 248, 49, 229] -0x00000240 MOVI $writable 0x0 ;; [114, 64, 0, 0] -0x00000244 ADD $writable $writable R63 ;; [16, 65, 15, 192] -0x00000248 MOVI R17 0x815c ;; [114, 68, 129, 92] -0x0000024c MULI R17 R17 0x8 ;; [85, 69, 16, 8] -0x00000250 ADD R17 R59 R17 ;; [16, 71, 180, 64] -0x00000254 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x00000258 MOVI $writable 0x815c ;; [114, 64, 129, 92] -0x0000025c MULI $writable $writable 0x8 ;; [85, 65, 0, 8] -0x00000260 ADD $writable R59 $writable ;; [16, 67, 180, 0] -0x00000264 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x00000268 RVRT $writable ;; [54, 64, 0, 0] -0x0000026c CFSI 0x40b00 ;; [146, 4, 11, 0] -0x00000270 MOVE R62 R19 ;; [26, 249, 48, 0] -0x00000274 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000278 POPL 0xf ;; [151, 0, 0, 15] -0x0000027c JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000280 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000284 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000288 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000028c CFEI 0x8 ;; [145, 0, 0, 8] -0x00000290 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000294 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000298 MCLI R59 0x5 ;; [112, 236, 0, 5] -0x0000029c MCPI $writable R59 0x5 ;; [96, 67, 176, 5] -0x000002a0 CFSI 0x8 ;; [146, 0, 0, 8] -0x000002a4 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000002a8 POPH 0x80000 ;; [152, 8, 0, 0] -0x000002ac POPL 0x3 ;; [151, 0, 0, 3] -0x000002b0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000002b4 PSHL 0x3 ;; [149, 0, 0, 3] -0x000002b8 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000002bc MOVE R59 $sp ;; [26, 236, 80, 0] -0x000002c0 CFEI 0x28 ;; [145, 0, 0, 40] -0x000002c4 MOVE $writable R58 ;; [26, 67, 160, 0] -0x000002c8 MOVE R17 R62 ;; [26, 71, 224, 0] -0x000002cc MCLI R59 0x28 ;; [112, 236, 0, 40] -0x000002d0 MCPI $writable R59 0x28 ;; [96, 67, 176, 40] -0x000002d4 CFSI 0x28 ;; [146, 0, 0, 40] -0x000002d8 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000002dc POPH 0x80000 ;; [152, 8, 0, 0] -0x000002e0 POPL 0x3 ;; [151, 0, 0, 3] -0x000002e4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000002e8 PSHL 0x3 ;; [149, 0, 0, 3] -0x000002ec PSHH 0x80000 ;; [150, 8, 0, 0] -0x000002f0 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000002f4 CFEI 0x28 ;; [145, 0, 0, 40] -0x000002f8 MOVE $writable R58 ;; [26, 67, 160, 0] -0x000002fc MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000300 MCLI R59 0x28 ;; [112, 236, 0, 40] -0x00000304 MCPI $writable R59 0x28 ;; [96, 67, 176, 40] -0x00000308 CFSI 0x28 ;; [146, 0, 0, 40] -0x0000030c MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000310 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000314 POPL 0x3 ;; [151, 0, 0, 3] -0x00000318 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000031c PSHL 0x3 ;; [149, 0, 0, 3] -0x00000320 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000324 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000328 CFEI 0x28 ;; [145, 0, 0, 40] -0x0000032c MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000330 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000334 MCLI R59 0x28 ;; [112, 236, 0, 40] -0x00000338 MCPI $writable R59 0x28 ;; [96, 67, 176, 40] -0x0000033c CFSI 0x28 ;; [146, 0, 0, 40] -0x00000340 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000344 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000348 POPL 0x3 ;; [151, 0, 0, 3] -0x0000034c JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000350 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000354 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000358 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000035c CFEI 0xa0 ;; [145, 0, 0, 160] -0x00000360 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000364 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000368 MCLI R59 0xa0 ;; [112, 236, 0, 160] -0x0000036c MCPI $writable R59 0xa0 ;; [96, 67, 176, 160] -0x00000370 CFSI 0xa0 ;; [146, 0, 0, 160] -0x00000374 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000378 POPH 0x80000 ;; [152, 8, 0, 0] -0x0000037c POPL 0x3 ;; [151, 0, 0, 3] -0x00000380 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000384 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000388 PSHH 0x80000 ;; [150, 8, 0, 0] -0x0000038c MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000390 CFEI 0xa0 ;; [145, 0, 0, 160] -0x00000394 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000398 MOVE R17 R62 ;; [26, 71, 224, 0] -0x0000039c MCLI R59 0xa0 ;; [112, 236, 0, 160] -0x000003a0 MCPI $writable R59 0xa0 ;; [96, 67, 176, 160] -0x000003a4 CFSI 0xa0 ;; [146, 0, 0, 160] -0x000003a8 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000003ac POPH 0x80000 ;; [152, 8, 0, 0] -0x000003b0 POPL 0x3 ;; [151, 0, 0, 3] -0x000003b4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000003b8 PSHL 0x3 ;; [149, 0, 0, 3] -0x000003bc PSHH 0x80000 ;; [150, 8, 0, 0] -0x000003c0 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000003c4 CFEI 0x8 ;; [145, 0, 0, 8] -0x000003c8 MOVE $writable R58 ;; [26, 67, 160, 0] -0x000003cc MOVE R17 R62 ;; [26, 71, 224, 0] -0x000003d0 MCLI R59 0x5 ;; [112, 236, 0, 5] -0x000003d4 MCPI $writable R59 0x5 ;; [96, 67, 176, 5] -0x000003d8 CFSI 0x8 ;; [146, 0, 0, 8] -0x000003dc MOVE R62 R17 ;; [26, 249, 16, 0] -0x000003e0 POPH 0x80000 ;; [152, 8, 0, 0] -0x000003e4 POPL 0x3 ;; [151, 0, 0, 3] -0x000003e8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000003ec PSHL 0x3 ;; [149, 0, 0, 3] -0x000003f0 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000003f4 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000003f8 CFEI 0x20 ;; [145, 0, 0, 32] -0x000003fc MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000400 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000404 MCLI R59 0x19 ;; [112, 236, 0, 25] -0x00000408 MCPI $writable R59 0x19 ;; [96, 67, 176, 25] -0x0000040c CFSI 0x20 ;; [146, 0, 0, 32] -0x00000410 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000414 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000418 POPL 0x3 ;; [151, 0, 0, 3] -0x0000041c JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000420 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000424 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000428 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000042c CFEI 0xc8 ;; [145, 0, 0, 200] -0x00000430 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000434 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000438 MCLI R59 0xc8 ;; [112, 236, 0, 200] -0x0000043c MCPI $writable R59 0xc8 ;; [96, 67, 176, 200] -0x00000440 CFSI 0xc8 ;; [146, 0, 0, 200] -0x00000444 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000448 POPH 0x80000 ;; [152, 8, 0, 0] -0x0000044c POPL 0x3 ;; [151, 0, 0, 3] -0x00000450 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000454 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000458 PSHH 0x80000 ;; [150, 8, 0, 0] -0x0000045c MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000460 CFEI 0xc8 ;; [145, 0, 0, 200] -0x00000464 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000468 MOVE R17 R62 ;; [26, 71, 224, 0] -0x0000046c MCLI R59 0xc8 ;; [112, 236, 0, 200] -0x00000470 MCPI $writable R59 0xc8 ;; [96, 67, 176, 200] -0x00000474 CFSI 0xc8 ;; [146, 0, 0, 200] -0x00000478 MOVE R62 R17 ;; [26, 249, 16, 0] -0x0000047c POPH 0x80000 ;; [152, 8, 0, 0] -0x00000480 POPL 0x3 ;; [151, 0, 0, 3] -0x00000484 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000488 PSHL 0x3 ;; [149, 0, 0, 3] -0x0000048c PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000490 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000494 CFEI 0xc8 ;; [145, 0, 0, 200] -0x00000498 MOVE $writable R58 ;; [26, 67, 160, 0] -0x0000049c MOVE R17 R62 ;; [26, 71, 224, 0] -0x000004a0 MCLI R59 0xc8 ;; [112, 236, 0, 200] -0x000004a4 MCPI $writable R59 0xc8 ;; [96, 67, 176, 200] -0x000004a8 CFSI 0xc8 ;; [146, 0, 0, 200] -0x000004ac MOVE R62 R17 ;; [26, 249, 16, 0] -0x000004b0 POPH 0x80000 ;; [152, 8, 0, 0] -0x000004b4 POPL 0x3 ;; [151, 0, 0, 3] -0x000004b8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000004bc PSHL 0x3 ;; [149, 0, 0, 3] -0x000004c0 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000004c4 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000004c8 CFEI 0x320 ;; [145, 0, 3, 32] -0x000004cc MOVE $writable R58 ;; [26, 67, 160, 0] -0x000004d0 MOVE R17 R62 ;; [26, 71, 224, 0] -0x000004d4 MCLI R59 0x320 ;; [112, 236, 3, 32] -0x000004d8 MCPI $writable R59 0x320 ;; [96, 67, 179, 32] -0x000004dc CFSI 0x320 ;; [146, 0, 3, 32] -0x000004e0 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000004e4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000004e8 POPL 0x3 ;; [151, 0, 0, 3] -0x000004ec JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000004f0 PSHL 0x3 ;; [149, 0, 0, 3] -0x000004f4 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000004f8 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000004fc CFEI 0x320 ;; [145, 0, 3, 32] -0x00000500 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000504 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000508 MCLI R59 0x320 ;; [112, 236, 3, 32] -0x0000050c MCPI $writable R59 0x320 ;; [96, 67, 179, 32] -0x00000510 CFSI 0x320 ;; [146, 0, 3, 32] -0x00000514 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000518 POPH 0x80000 ;; [152, 8, 0, 0] -0x0000051c POPL 0x3 ;; [151, 0, 0, 3] -0x00000520 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000524 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000528 PSHH 0x80000 ;; [150, 8, 0, 0] -0x0000052c MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000530 CFEI 0x20 ;; [145, 0, 0, 32] -0x00000534 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000538 MOVE R17 R62 ;; [26, 71, 224, 0] -0x0000053c MCLI R59 0x19 ;; [112, 236, 0, 25] -0x00000540 MCPI $writable R59 0x19 ;; [96, 67, 176, 25] -0x00000544 CFSI 0x20 ;; [146, 0, 0, 32] -0x00000548 MOVE R62 R17 ;; [26, 249, 16, 0] -0x0000054c POPH 0x80000 ;; [152, 8, 0, 0] -0x00000550 POPL 0x3 ;; [151, 0, 0, 3] -0x00000554 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000558 PSHL 0x7 ;; [149, 0, 0, 7] -0x0000055c PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000560 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000564 CFEI 0x8 ;; [145, 0, 0, 8] -0x00000568 MOVE $writable R58 ;; [26, 67, 160, 0] -0x0000056c MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000570 MUL R18 $zero $one ;; [27, 72, 0, 64] -0x00000574 ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x00000578 SB R18 $one 0x0 ;; [94, 72, 16, 0] -0x0000057c MUL R18 $one $one ;; [27, 72, 16, 64] -0x00000580 ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x00000584 SB R18 $one 0x0 ;; [94, 72, 16, 0] -0x00000588 MOVI R18 0x2 ;; [114, 72, 0, 2] -0x0000058c MUL R18 R18 $one ;; [27, 73, 32, 64] -0x00000590 ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x00000594 SB R18 $one 0x0 ;; [94, 72, 16, 0] -0x00000598 MOVI R18 0x3 ;; [114, 72, 0, 3] -0x0000059c MUL R18 R18 $one ;; [27, 73, 32, 64] -0x000005a0 ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x000005a4 SB R18 $one 0x0 ;; [94, 72, 16, 0] -0x000005a8 MOVI R18 0x4 ;; [114, 72, 0, 4] -0x000005ac MUL R18 R18 $one ;; [27, 73, 32, 64] -0x000005b0 ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x000005b4 SB R18 $one 0x0 ;; [94, 72, 16, 0] -0x000005b8 MCPI $writable R59 0x5 ;; [96, 67, 176, 5] -0x000005bc CFSI 0x8 ;; [146, 0, 0, 8] -0x000005c0 MOVE R62 R17 ;; [26, 249, 16, 0] -0x000005c4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000005c8 POPL 0x7 ;; [151, 0, 0, 7] -0x000005cc JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000005d0 PSHL 0xf ;; [149, 0, 0, 15] -0x000005d4 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000005d8 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000005dc CFEI 0x20 ;; [145, 0, 0, 32] -0x000005e0 MOVE $writable R58 ;; [26, 67, 160, 0] -0x000005e4 MOVE R17 R62 ;; [26, 71, 224, 0] -0x000005e8 MOVE R19 $zero ;; [26, 76, 0, 0] -0x000005ec MUL R18 R19 $one ;; [27, 73, 48, 64] -0x000005f0 ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x000005f4 SB R18 $one 0x0 ;; [94, 72, 16, 0] -0x000005f8 ADD R19 R19 $one ;; [16, 77, 48, 64] -0x000005fc MOVI R18 0x19 ;; [114, 72, 0, 25] -0x00000600 LT R18 R19 R18 ;; [22, 73, 52, 128] -0x00000604 JNZB R18 $zero 0x5 ;; [119, 72, 0, 5] -0x00000608 MCPI $writable R59 0x19 ;; [96, 67, 176, 25] -0x0000060c CFSI 0x20 ;; [146, 0, 0, 32] -0x00000610 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000614 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000618 POPL 0xf ;; [151, 0, 0, 15] -0x0000061c JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000620 PSHL 0x3 ;; [149, 0, 0, 3] -0x00000624 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000628 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000062c CFEI 0x40008 ;; [145, 4, 0, 8] -0x00000630 MOVE $writable R58 ;; [26, 67, 160, 0] -0x00000634 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000638 LW R60 R63 0x1 ;; [93, 243, 240, 1] -0x0000063c MCL R59 R60 ;; [39, 239, 192, 0] -0x00000640 LW R60 R63 0x1 ;; [93, 243, 240, 1] -0x00000644 MCP $writable R59 R60 ;; [40, 67, 191, 0] -0x00000648 CFSI 0x40008 ;; [146, 4, 0, 8] -0x0000064c MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000650 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000654 POPL 0x3 ;; [151, 0, 0, 3] -0x00000658 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000065c PSHL 0x3 ;; [149, 0, 0, 3] -0x00000660 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000664 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000668 CFEI 0x28 ;; [145, 0, 0, 40] -0x0000066c MOVE $writable R62 ;; [26, 67, 224, 0] -0x00000670 MCLI R59 0x8 ;; [112, 236, 0, 8] -0x00000674 ADDI R17 R59 0x8 ;; [80, 71, 176, 8] -0x00000678 MCLI R17 0x8 ;; [112, 68, 0, 8] -0x0000067c ADDI R17 R59 0x10 ;; [80, 71, 176, 16] -0x00000680 MCLI R17 0x8 ;; [112, 68, 0, 8] -0x00000684 ADDI R17 R59 0x18 ;; [80, 71, 176, 24] -0x00000688 MCLI R17 0x10 ;; [112, 68, 0, 16] -0x0000068c CFSI 0x28 ;; [146, 0, 0, 40] -0x00000690 MOVE R62 $writable ;; [26, 249, 0, 0] -0x00000694 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000698 POPL 0x3 ;; [151, 0, 0, 3] -0x0000069c JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000006a0 PSHL 0xf ;; [149, 0, 0, 15] -0x000006a4 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000006a8 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000006ac CFEI 0x30 ;; [145, 0, 0, 48] -0x000006b0 MOVE $writable R58 ;; [26, 67, 160, 0] -0x000006b4 MOVE R17 R62 ;; [26, 71, 224, 0] -0x000006b8 MUL R18 $zero $one ;; [27, 72, 0, 64] -0x000006bc ADD R18 R59 R18 ;; [16, 75, 180, 128] -0x000006c0 MOVI R19 0xff ;; [114, 76, 0, 255] -0x000006c4 SB R18 R19 0x0 ;; [94, 73, 48, 0] -0x000006c8 ADDI R18 R59 0x8 ;; [80, 75, 176, 8] -0x000006cc MOVE R58 R59 ;; [26, 235, 176, 0] -0x000006d0 MOVE R57 R18 ;; [26, 229, 32, 0] -0x000006d4 JAL R62 $pc 0xe ;; [153, 248, 48, 14] -0x000006d8 ADDI R19 R59 0x20 ;; [80, 79, 176, 32] -0x000006dc MCPI R19 R18 0x10 ;; [96, 77, 32, 16] -0x000006e0 ADDI R18 R59 0x20 ;; [80, 75, 176, 32] -0x000006e4 ADDI R19 R59 0x18 ;; [80, 79, 176, 24] -0x000006e8 MOVE R58 R18 ;; [26, 233, 32, 0] -0x000006ec MOVE R57 R19 ;; [26, 229, 48, 0] -0x000006f0 JAL R62 $pc 0x28 ;; [153, 248, 48, 40] -0x000006f4 MCPI $writable R19 0x1 ;; [96, 65, 48, 1] -0x000006f8 CFSI 0x30 ;; [146, 0, 0, 48] -0x000006fc MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000700 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000704 POPL 0xf ;; [151, 0, 0, 15] -0x00000708 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000070c PSHL 0x1f ;; [149, 0, 0, 31] -0x00000710 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000714 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000718 CFEI 0x70 ;; [145, 0, 0, 112] -0x0000071c MOVE $writable R57 ;; [26, 67, 144, 0] -0x00000720 MOVE R17 R62 ;; [26, 71, 224, 0] -0x00000724 ADDI R18 R59 0x40 ;; [80, 75, 176, 64] -0x00000728 MCPI R18 R58 0x1 ;; [96, 75, 160, 1] -0x0000072c SW R59 $one 0x9 ;; [95, 236, 16, 9] -0x00000730 ADDI R18 R59 0x40 ;; [80, 75, 176, 64] -0x00000734 SW R59 R18 0xd ;; [95, 237, 32, 13] -0x00000738 ADDI R18 R59 0x68 ;; [80, 75, 176, 104] -0x0000073c SW R59 $one 0xa ;; [95, 236, 16, 10] -0x00000740 LW R19 R59 0x9 ;; [93, 79, 176, 9] -0x00000744 LW R20 R59 0xa ;; [93, 83, 176, 10] -0x00000748 MUL R19 R19 R20 ;; [27, 77, 53, 0] -0x0000074c ADDI R20 R59 0x10 ;; [80, 83, 176, 16] -0x00000750 MCPI R20 R18 0x8 ;; [96, 81, 32, 8] -0x00000754 SW R59 R19 0x3 ;; [95, 237, 48, 3] -0x00000758 ADDI R18 R59 0x58 ;; [80, 75, 176, 88] -0x0000075c MCPI R18 R20 0x10 ;; [96, 73, 64, 16] -0x00000760 ADDI R18 R59 0x58 ;; [80, 75, 176, 88] -0x00000764 MCPI R59 R18 0x10 ;; [96, 237, 32, 16] -0x00000768 ADDI R18 R59 0x20 ;; [80, 75, 176, 32] -0x0000076c MCPI R18 R59 0x10 ;; [96, 75, 176, 16] -0x00000770 ADDI R19 R59 0x30 ;; [80, 79, 176, 48] -0x00000774 MCPI R19 R18 0x10 ;; [96, 77, 32, 16] -0x00000778 MCPI $writable R19 0x10 ;; [96, 65, 48, 16] -0x0000077c CFSI 0x70 ;; [146, 0, 0, 112] -0x00000780 MOVE R62 R17 ;; [26, 249, 16, 0] -0x00000784 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000788 POPL 0x1f ;; [151, 0, 0, 31] -0x0000078c JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000790 PSHL 0x1f ;; [149, 0, 0, 31] -0x00000794 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000798 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000079c CFEI 0x198 ;; [145, 0, 1, 152] -0x000007a0 MOVE R20 R57 ;; [26, 83, 144, 0] -0x000007a4 MOVE R19 R62 ;; [26, 79, 224, 0] -0x000007a8 ADDI $writable R59 0xb8 ;; [80, 67, 176, 184] -0x000007ac MCPI $writable R58 0x10 ;; [96, 67, 160, 16] -0x000007b0 ADDI $writable R59 0xb8 ;; [80, 67, 176, 184] -0x000007b4 ADDI R17 R59 0x100 ;; [80, 71, 177, 0] -0x000007b8 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000007bc ADDI $writable R59 0x100 ;; [80, 67, 177, 0] -0x000007c0 ADDI R17 R59 0x160 ;; [80, 71, 177, 96] -0x000007c4 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000007c8 ADDI $writable R59 0x160 ;; [80, 67, 177, 96] -0x000007cc ADDI R17 R59 0x8 ;; [80, 71, 176, 8] -0x000007d0 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000007d4 ADDI $writable R59 0x58 ;; [80, 67, 176, 88] -0x000007d8 MCPI $writable R17 0x10 ;; [96, 65, 16, 16] -0x000007dc ADDI R17 R59 0x28 ;; [80, 71, 176, 40] -0x000007e0 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x000007e4 LW $writable R59 0x5 ;; [93, 67, 176, 5] -0x000007e8 ADDI R17 R59 0xb8 ;; [80, 71, 176, 184] -0x000007ec ADDI R18 R59 0x110 ;; [80, 75, 177, 16] -0x000007f0 MCPI R18 R17 0x10 ;; [96, 73, 16, 16] -0x000007f4 ADDI R17 R59 0x110 ;; [80, 71, 177, 16] -0x000007f8 ADDI R18 R59 0x170 ;; [80, 75, 177, 112] -0x000007fc MCPI R18 R17 0x10 ;; [96, 73, 16, 16] -0x00000800 ADDI R17 R59 0x170 ;; [80, 71, 177, 112] -0x00000804 ADDI R18 R59 0x18 ;; [80, 75, 176, 24] -0x00000808 MCPI R18 R17 0x10 ;; [96, 73, 16, 16] -0x0000080c ADDI R17 R59 0x68 ;; [80, 71, 176, 104] -0x00000810 MCPI R17 R18 0x10 ;; [96, 69, 32, 16] -0x00000814 ADDI R18 R59 0x38 ;; [80, 75, 176, 56] -0x00000818 MCPI R18 R17 0x10 ;; [96, 73, 16, 16] -0x0000081c ADDI R17 R18 0x8 ;; [80, 69, 32, 8] -0x00000820 ADDI R18 R59 0x120 ;; [80, 75, 177, 32] -0x00000824 MCPI R18 R17 0x8 ;; [96, 73, 16, 8] -0x00000828 SW R59 $one 0x1b ;; [95, 236, 16, 27] -0x0000082c LW R17 R59 0x24 ;; [93, 71, 176, 36] -0x00000830 LW R18 R59 0x1b ;; [93, 75, 176, 27] -0x00000834 DIV R17 R17 R18 ;; [18, 69, 20, 128] -0x00000838 SW R59 $writable 0x1f ;; [95, 237, 0, 31] -0x0000083c SW R59 R17 0x11 ;; [95, 237, 16, 17] -0x00000840 ADDI $writable R59 0xf8 ;; [80, 67, 176, 248] -0x00000844 ADDI R17 R59 0x48 ;; [80, 71, 176, 72] -0x00000848 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x0000084c ADDI $writable R59 0x78 ;; [80, 67, 176, 120] -0x00000850 MCPI $writable R17 0x8 ;; [96, 65, 16, 8] -0x00000854 ADDI R17 R59 0xa0 ;; [80, 71, 176, 160] -0x00000858 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x0000085c ADDI $writable R59 0xa0 ;; [80, 67, 176, 160] -0x00000860 SW R59 $writable 0x15 ;; [95, 237, 0, 21] -0x00000864 SW R59 $one 0x0 ;; [95, 236, 16, 0] -0x00000868 ADDI $writable R59 0x50 ;; [80, 67, 176, 80] -0x0000086c MCLI $writable 0x1 ;; [112, 64, 0, 1] -0x00000870 ADDI R17 R59 0x90 ;; [80, 71, 176, 144] -0x00000874 MCPI R17 $writable 0x1 ;; [96, 69, 0, 1] -0x00000878 ADDI $writable R59 0x90 ;; [80, 67, 176, 144] -0x0000087c SW R59 $writable 0x13 ;; [95, 237, 0, 19] -0x00000880 SW R59 $zero 0x19 ;; [95, 236, 0, 25] -0x00000884 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] -0x00000888 ADDI R17 R59 0x140 ;; [80, 71, 177, 64] -0x0000088c MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x00000890 SW R59 $one 0x1c ;; [95, 236, 16, 28] -0x00000894 LW $writable R59 0x28 ;; [93, 67, 176, 40] -0x00000898 LW R17 R59 0x1c ;; [93, 71, 176, 28] -0x0000089c LT $writable $writable R17 ;; [22, 65, 4, 64] -0x000008a0 JNZF $writable $zero 0x5 ;; [118, 64, 0, 5] -0x000008a4 LW $writable R59 0x13 ;; [93, 67, 176, 19] -0x000008a8 ADDI R17 R59 0x80 ;; [80, 71, 176, 128] -0x000008ac MCPI R17 $writable 0x1 ;; [96, 69, 0, 1] -0x000008b0 MCPI R20 R17 0x1 ;; [96, 81, 16, 1] -0x000008b4 JMPF $zero 0x41 ;; [116, 0, 0, 65] -0x000008b8 LW $writable R59 0x13 ;; [93, 67, 176, 19] -0x000008bc LW R17 R59 0x19 ;; [93, 71, 176, 25] -0x000008c0 MUL R17 R17 $one ;; [27, 69, 16, 64] -0x000008c4 ADD $writable $writable R17 ;; [16, 65, 4, 64] -0x000008c8 SW R59 $writable 0x1a ;; [95, 237, 0, 26] -0x000008cc ADDI $writable R59 0xa8 ;; [80, 67, 176, 168] -0x000008d0 ADDI R17 R59 0x138 ;; [80, 71, 177, 56] -0x000008d4 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x000008d8 ADDI $writable R59 0x138 ;; [80, 67, 177, 56] -0x000008dc ADDI R17 R59 0xb0 ;; [80, 71, 176, 176] -0x000008e0 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x000008e4 ADDI $writable R59 0xb0 ;; [80, 67, 176, 176] -0x000008e8 ADDI R17 R59 0x128 ;; [80, 71, 177, 40] -0x000008ec MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x000008f0 SW R59 $one 0x2b ;; [95, 236, 16, 43] -0x000008f4 ADDI $writable R59 0x158 ;; [80, 67, 177, 88] -0x000008f8 ADDI R17 R59 0x130 ;; [80, 71, 177, 48] -0x000008fc MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x00000900 SW R59 $one 0x1d ;; [95, 236, 16, 29] -0x00000904 LW $writable R59 0x26 ;; [93, 67, 176, 38] -0x00000908 LW R17 R59 0x1d ;; [93, 71, 176, 29] -0x0000090c EQ $writable $writable R17 ;; [19, 65, 4, 64] -0x00000910 JNZF $writable $zero 0x12 ;; [118, 64, 0, 18] -0x00000914 ADDI $writable R59 0x128 ;; [80, 67, 177, 40] -0x00000918 ADDI R17 R59 0x148 ;; [80, 71, 177, 72] -0x0000091c MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x00000920 LW $writable R59 0x29 ;; [93, 67, 176, 41] -0x00000924 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x00000928 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x0000092c ADDI R17 R59 0x188 ;; [80, 71, 177, 136] -0x00000930 SB R17 $writable 0x0 ;; [94, 69, 0, 0] -0x00000934 LW $writable R59 0x29 ;; [93, 67, 176, 41] -0x00000938 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x0000093c MOVI R17 0x8 ;; [114, 68, 0, 8] -0x00000940 MUL R17 $one R17 ;; [27, 68, 20, 64] -0x00000944 ADD $writable $writable R17 ;; [16, 65, 4, 64] -0x00000948 LW R17 R59 0x29 ;; [93, 71, 176, 41] -0x0000094c SW R17 $writable 0x0 ;; [95, 69, 0, 0] -0x00000950 ADDI $writable R59 0x188 ;; [80, 67, 177, 136] -0x00000954 LB $writable $writable 0x0 ;; [92, 65, 0, 0] -0x00000958 JMPF $zero 0xd ;; [116, 0, 0, 13] -0x0000095c LW $writable R59 0x25 ;; [93, 67, 176, 37] -0x00000960 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x00000964 LB $writable $writable 0x0 ;; [92, 65, 0, 0] -0x00000968 ADDI R17 R59 0x190 ;; [80, 71, 177, 144] -0x0000096c SB R17 $writable 0x0 ;; [94, 69, 0, 0] -0x00000970 LW $writable R59 0x25 ;; [93, 67, 176, 37] -0x00000974 LW $writable $writable 0x0 ;; [93, 65, 0, 0] -0x00000978 MUL R17 $one $one ;; [27, 68, 16, 64] -0x0000097c ADD $writable $writable R17 ;; [16, 65, 4, 64] -0x00000980 LW R17 R59 0x25 ;; [93, 71, 176, 37] -0x00000984 SW R17 $writable 0x0 ;; [95, 69, 0, 0] -0x00000988 ADDI $writable R59 0x190 ;; [80, 67, 177, 144] -0x0000098c LB $writable $writable 0x0 ;; [92, 65, 0, 0] -0x00000990 LW R17 R59 0x1a ;; [93, 71, 176, 26] -0x00000994 SB R17 $writable 0x0 ;; [94, 69, 0, 0] -0x00000998 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] -0x0000099c ADDI R17 R59 0x150 ;; [80, 71, 177, 80] -0x000009a0 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] -0x000009a4 SW R59 $one 0x1e ;; [95, 236, 16, 30] -0x000009a8 LW $writable R59 0x2a ;; [93, 67, 176, 42] -0x000009ac LW R17 R59 0x1e ;; [93, 71, 176, 30] -0x000009b0 ADD $writable $writable R17 ;; [16, 65, 4, 64] -0x000009b4 SW R59 $writable 0x19 ;; [95, 237, 0, 25] -0x000009b8 JMPB $zero 0x4c ;; [117, 0, 0, 76] -0x000009bc CFSI 0x198 ;; [146, 0, 1, 152] -0x000009c0 MOVE R62 R19 ;; [26, 249, 48, 0] -0x000009c4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000009c8 POPL 0x1f ;; [151, 0, 0, 31] -0x000009cc JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000009d0 PSHL 0x3f ;; [149, 0, 0, 63] -0x000009d4 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000009d8 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000009dc CFEI 0x1d0 ;; [145, 0, 1, 208] -0x000009e0 MOVE R21 R62 ;; [26, 87, 224, 0] -0x000009e4 ADDI $writable R59 0x1c8 ;; [80, 67, 177, 200] -0x000009e8 SB $writable R58 0x0 ;; [94, 67, 160, 0] -0x000009ec ADDI $writable R59 0x1c8 ;; [80, 67, 177, 200] -0x000009f0 ADDI R17 R59 0x1a0 ;; [80, 71, 177, 160] -0x000009f4 MCPI R17 $writable 0x1 ;; [96, 69, 0, 1] -0x000009f8 ADDI $writable R59 0x1a0 ;; [80, 67, 177, 160] -0x000009fc MOVI R17 0x400 ;; [114, 68, 4, 0] -0x00000a00 ALOC R17 ;; [38, 68, 0, 0] -0x00000a04 ADDI R17 R59 0x70 ;; [80, 71, 176, 112] -0x00000a08 SW R59 $hp 0xe ;; [95, 236, 112, 14] -0x00000a0c MOVI R18 0x400 ;; [114, 72, 4, 0] -0x00000a10 SW R59 R18 0xf ;; [95, 237, 32, 15] -0x00000a14 SW R59 $zero 0x10 ;; [95, 236, 0, 16] -0x00000a18 MCPI R59 R17 0x18 ;; [96, 237, 16, 24] -0x00000a1c ADDI R17 R59 0xb8 ;; [80, 71, 176, 184] -0x00000a20 MCPI R17 R59 0x18 ;; [96, 71, 176, 24] -0x00000a24 ADDI R18 R59 0x120 ;; [80, 75, 177, 32] -0x00000a28 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] -0x00000a2c ADDI R17 R59 0x1a8 ;; [80, 71, 177, 168] -0x00000a30 MCPI R17 $writable 0x1 ;; [96, 69, 0, 1] -0x00000a34 ADDI $writable R59 0x188 ;; [80, 67, 177, 136] -0x00000a38 MCPI $writable R18 0x18 ;; [96, 65, 32, 24] -0x00000a3c ADDI $writable R59 0x188 ;; [80, 67, 177, 136] -0x00000a40 ADDI R17 R59 0x18 ;; [80, 71, 176, 24] -0x00000a44 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000a48 ADDI $writable R59 0x88 ;; [80, 67, 176, 136] -0x00000a4c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000a50 LW $writable R59 0x11 ;; [93, 67, 176, 17] -0x00000a54 LW R20 R59 0x12 ;; [93, 83, 176, 18] -0x00000a58 LW R17 R59 0x13 ;; [93, 71, 176, 19] -0x00000a5c ADDI R18 R59 0x1a8 ;; [80, 75, 177, 168] -0x00000a60 LB R18 R18 0x0 ;; [92, 73, 32, 0] -0x00000a64 ADD R19 R17 $one ;; [16, 77, 16, 64] -0x00000a68 GT R19 R19 R20 ;; [21, 77, 53, 0] -0x00000a6c JNZF R19 $zero 0x1 ;; [118, 76, 0, 1] -0x00000a70 JMPF $zero 0x6 ;; [116, 0, 0, 6] -0x00000a74 MOVI R19 0x2 ;; [114, 76, 0, 2] -0x00000a78 MUL R19 R20 R19 ;; [27, 77, 68, 192] -0x00000a7c ADD R20 R19 $one ;; [16, 81, 48, 64] -0x00000a80 ALOC R20 ;; [38, 80, 0, 0] -0x00000a84 MCP $hp $writable R17 ;; [40, 29, 4, 64] -0x00000a88 MOVE $writable $hp ;; [26, 64, 112, 0] -0x00000a8c ADD R19 $writable R17 ;; [16, 77, 4, 64] -0x00000a90 SB R19 R18 0x0 ;; [94, 77, 32, 0] -0x00000a94 ADD R17 R17 $one ;; [16, 69, 16, 64] -0x00000a98 ADDI R18 R59 0xd0 ;; [80, 75, 176, 208] -0x00000a9c SW R59 $writable 0x1a ;; [95, 237, 0, 26] -0x00000aa0 SW R59 R20 0x1b ;; [95, 237, 64, 27] -0x00000aa4 SW R59 R17 0x1c ;; [95, 237, 16, 28] -0x00000aa8 ADDI $writable R59 0x30 ;; [80, 67, 176, 48] -0x00000aac MCPI $writable R18 0x18 ;; [96, 65, 32, 24] -0x00000ab0 ADDI R17 R59 0xf8 ;; [80, 71, 176, 248] -0x00000ab4 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000ab8 ADDI $writable R59 0x138 ;; [80, 67, 177, 56] -0x00000abc MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000ac0 ADDI R17 R59 0x170 ;; [80, 71, 177, 112] -0x00000ac4 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000ac8 ADDI $writable R59 0x170 ;; [80, 67, 177, 112] -0x00000acc ADDI R17 R59 0x1b0 ;; [80, 71, 177, 176] -0x00000ad0 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000ad4 ADDI $writable R59 0x1b0 ;; [80, 67, 177, 176] -0x00000ad8 ADDI R17 R59 0x48 ;; [80, 71, 176, 72] -0x00000adc MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] -0x00000ae0 ADDI $writable R59 0xa0 ;; [80, 67, 176, 160] -0x00000ae4 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] -0x00000ae8 ADDI R17 $writable 0x10 ;; [80, 69, 0, 16] -0x00000aec ADDI R18 R59 0xe8 ;; [80, 75, 176, 232] -0x00000af0 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] -0x00000af4 ADDI $writable R18 0x8 ;; [80, 65, 32, 8] -0x00000af8 MCPI $writable R17 0x8 ;; [96, 65, 16, 8] -0x00000afc ADDI $writable R59 0x60 ;; [80, 67, 176, 96] -0x00000b00 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] -0x00000b04 ADDI R17 R59 0x150 ;; [80, 71, 177, 80] -0x00000b08 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x00000b0c ADDI $writable R59 0x160 ;; [80, 67, 177, 96] -0x00000b10 MCPI $writable R17 0x10 ;; [96, 65, 16, 16] -0x00000b14 ADDI R17 R59 0x110 ;; [80, 71, 177, 16] -0x00000b18 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] -0x00000b1c LW $writable R63 0x2 ;; [93, 67, 240, 2] -0x00000b20 LW R17 R59 0x22 ;; [93, 71, 176, 34] -0x00000b24 LW R18 R59 0x23 ;; [93, 75, 176, 35] -0x00000b28 LOGD $zero $writable R17 R18 ;; [52, 1, 4, 82] -0x00000b2c CFSI 0x1d0 ;; [146, 0, 1, 208] -0x00000b30 MOVE R62 R21 ;; [26, 249, 80, 0] -0x00000b34 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000b38 POPL 0x3f ;; [151, 0, 0, 63] -0x00000b3c JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000015c JAL R62 $pc 0xba ;; [153, 248, 48, 186] +0x00000160 MOVI $writable 0x815a ;; [114, 64, 129, 90] +0x00000164 MULI $writable $writable 0x8 ;; [85, 65, 0, 8] +0x00000168 ADD $writable R59 $writable ;; [16, 67, 180, 0] +0x0000016c MUL R18 $zero $one ;; [27, 72, 0, 64] +0x00000170 ADD R18 $writable R18 ;; [16, 73, 4, 128] +0x00000174 LB $writable R18 0x0 ;; [92, 65, 32, 0] +0x00000178 MOVI R18 0xff ;; [114, 72, 0, 255] +0x0000017c EQ R18 $writable R18 ;; [19, 73, 4, 128] +0x00000180 EQ R18 R18 $zero ;; [19, 73, 32, 0] +0x00000184 JNZF R18 $zero 0x1 ;; [118, 72, 0, 1] +0x00000188 JMPF $zero 0x7 ;; [116, 0, 0, 7] +0x0000018c MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000190 JAL R62 $pc 0x114 ;; [153, 248, 49, 20] +0x00000194 MOVI $writable 0xff ;; [114, 64, 0, 255] +0x00000198 MOVE R58 $writable ;; [26, 233, 0, 0] +0x0000019c JAL R62 $pc 0x111 ;; [153, 248, 49, 17] +0x000001a0 LW $writable R63 0x0 ;; [93, 67, 240, 0] +0x000001a4 RVRT $writable ;; [54, 64, 0, 0] +0x000001a8 CFSI 0x40ad8 ;; [146, 4, 10, 216] +0x000001ac MOVE R62 R17 ;; [26, 249, 16, 0] +0x000001b0 POPH 0x80000 ;; [152, 8, 0, 0] +0x000001b4 POPL 0x7 ;; [151, 0, 0, 7] +0x000001b8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000001bc PSHL 0x1 ;; [149, 0, 0, 1] +0x000001c0 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000001c4 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000001c8 MOVE $writable R62 ;; [26, 67, 224, 0] +0x000001cc MCLI R58 0x5 ;; [112, 232, 0, 5] +0x000001d0 MOVE R62 $writable ;; [26, 249, 0, 0] +0x000001d4 POPH 0x80000 ;; [152, 8, 0, 0] +0x000001d8 POPL 0x1 ;; [151, 0, 0, 1] +0x000001dc JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000001e0 PSHL 0x1 ;; [149, 0, 0, 1] +0x000001e4 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000001e8 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000001ec MOVE $writable R62 ;; [26, 67, 224, 0] +0x000001f0 MCLI R58 0x28 ;; [112, 232, 0, 40] +0x000001f4 MOVE R62 $writable ;; [26, 249, 0, 0] +0x000001f8 POPH 0x80000 ;; [152, 8, 0, 0] +0x000001fc POPL 0x1 ;; [151, 0, 0, 1] +0x00000200 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000204 PSHL 0x1 ;; [149, 0, 0, 1] +0x00000208 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000020c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000210 MOVE $writable R62 ;; [26, 67, 224, 0] +0x00000214 MCLI R58 0xa0 ;; [112, 232, 0, 160] +0x00000218 MOVE R62 $writable ;; [26, 249, 0, 0] +0x0000021c POPH 0x80000 ;; [152, 8, 0, 0] +0x00000220 POPL 0x1 ;; [151, 0, 0, 1] +0x00000224 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000228 PSHL 0x1 ;; [149, 0, 0, 1] +0x0000022c PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000230 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000234 MOVE $writable R62 ;; [26, 67, 224, 0] +0x00000238 MCLI R58 0xa0 ;; [112, 232, 0, 160] +0x0000023c MOVE R62 $writable ;; [26, 249, 0, 0] +0x00000240 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000244 POPL 0x1 ;; [151, 0, 0, 1] +0x00000248 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000024c PSHL 0x1 ;; [149, 0, 0, 1] +0x00000250 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000254 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000258 MOVE $writable R62 ;; [26, 67, 224, 0] +0x0000025c MCLI R58 0x5 ;; [112, 232, 0, 5] +0x00000260 MOVE R62 $writable ;; [26, 249, 0, 0] +0x00000264 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000268 POPL 0x1 ;; [151, 0, 0, 1] +0x0000026c JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000270 PSHL 0x1 ;; [149, 0, 0, 1] +0x00000274 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000278 MOVE R59 $sp ;; [26, 236, 80, 0] +0x0000027c MOVE $writable R62 ;; [26, 67, 224, 0] +0x00000280 MCLI R58 0x19 ;; [112, 232, 0, 25] +0x00000284 MOVE R62 $writable ;; [26, 249, 0, 0] +0x00000288 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000028c POPL 0x1 ;; [151, 0, 0, 1] +0x00000290 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000294 PSHL 0x1 ;; [149, 0, 0, 1] +0x00000298 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000029c MOVE R59 $sp ;; [26, 236, 80, 0] +0x000002a0 MOVE $writable R62 ;; [26, 67, 224, 0] +0x000002a4 MCLI R58 0xc8 ;; [112, 232, 0, 200] +0x000002a8 MOVE R62 $writable ;; [26, 249, 0, 0] +0x000002ac POPH 0x80000 ;; [152, 8, 0, 0] +0x000002b0 POPL 0x1 ;; [151, 0, 0, 1] +0x000002b4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000002b8 PSHL 0x1 ;; [149, 0, 0, 1] +0x000002bc PSHH 0x80000 ;; [150, 8, 0, 0] +0x000002c0 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000002c4 MOVE $writable R62 ;; [26, 67, 224, 0] +0x000002c8 MCLI R58 0x320 ;; [112, 232, 3, 32] +0x000002cc MOVE R62 $writable ;; [26, 249, 0, 0] +0x000002d0 POPH 0x80000 ;; [152, 8, 0, 0] +0x000002d4 POPL 0x1 ;; [151, 0, 0, 1] +0x000002d8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000002dc PSHL 0x1 ;; [149, 0, 0, 1] +0x000002e0 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000002e4 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000002e8 MOVE $writable R62 ;; [26, 67, 224, 0] +0x000002ec MCLI R58 0x320 ;; [112, 232, 3, 32] +0x000002f0 MOVE R62 $writable ;; [26, 249, 0, 0] +0x000002f4 POPH 0x80000 ;; [152, 8, 0, 0] +0x000002f8 POPL 0x1 ;; [151, 0, 0, 1] +0x000002fc JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000300 PSHL 0x1 ;; [149, 0, 0, 1] +0x00000304 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000308 MOVE R59 $sp ;; [26, 236, 80, 0] +0x0000030c MOVE $writable R62 ;; [26, 67, 224, 0] +0x00000310 MCLI R58 0x19 ;; [112, 232, 0, 25] +0x00000314 MOVE R62 $writable ;; [26, 249, 0, 0] +0x00000318 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000031c POPL 0x1 ;; [151, 0, 0, 1] +0x00000320 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000324 PSHL 0x7 ;; [149, 0, 0, 7] +0x00000328 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000032c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000330 MOVE $writable R58 ;; [26, 67, 160, 0] +0x00000334 MOVE R17 R62 ;; [26, 71, 224, 0] +0x00000338 MUL R18 $zero $one ;; [27, 72, 0, 64] +0x0000033c ADD R18 R58 R18 ;; [16, 75, 164, 128] +0x00000340 SB R18 $one 0x0 ;; [94, 72, 16, 0] +0x00000344 MUL R18 $one $one ;; [27, 72, 16, 64] +0x00000348 ADD R18 $writable R18 ;; [16, 73, 4, 128] +0x0000034c SB R18 $one 0x0 ;; [94, 72, 16, 0] +0x00000350 MOVI R18 0x2 ;; [114, 72, 0, 2] +0x00000354 MUL R18 R18 $one ;; [27, 73, 32, 64] +0x00000358 ADD R18 $writable R18 ;; [16, 73, 4, 128] +0x0000035c SB R18 $one 0x0 ;; [94, 72, 16, 0] +0x00000360 MOVI R18 0x3 ;; [114, 72, 0, 3] +0x00000364 MUL R18 R18 $one ;; [27, 73, 32, 64] +0x00000368 ADD R18 $writable R18 ;; [16, 73, 4, 128] +0x0000036c SB R18 $one 0x0 ;; [94, 72, 16, 0] +0x00000370 MOVI R18 0x4 ;; [114, 72, 0, 4] +0x00000374 MUL R18 R18 $one ;; [27, 73, 32, 64] +0x00000378 ADD R18 $writable R18 ;; [16, 73, 4, 128] +0x0000037c SB R18 $one 0x0 ;; [94, 72, 16, 0] +0x00000380 MOVE R62 R17 ;; [26, 249, 16, 0] +0x00000384 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000388 POPL 0x7 ;; [151, 0, 0, 7] +0x0000038c JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000390 PSHL 0xf ;; [149, 0, 0, 15] +0x00000394 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000398 MOVE R59 $sp ;; [26, 236, 80, 0] +0x0000039c MOVE R18 R58 ;; [26, 75, 160, 0] +0x000003a0 MOVE R19 R62 ;; [26, 79, 224, 0] +0x000003a4 MOVE R17 $zero ;; [26, 68, 0, 0] +0x000003a8 MUL $writable R17 $one ;; [27, 65, 16, 64] +0x000003ac ADD $writable R18 $writable ;; [16, 65, 36, 0] +0x000003b0 SB $writable $one 0x0 ;; [94, 64, 16, 0] +0x000003b4 ADD R17 R17 $one ;; [16, 69, 16, 64] +0x000003b8 MOVI $writable 0x19 ;; [114, 64, 0, 25] +0x000003bc LT $writable R17 $writable ;; [22, 65, 20, 0] +0x000003c0 JNZB $writable $zero 0x5 ;; [119, 64, 0, 5] +0x000003c4 MOVE R62 R19 ;; [26, 249, 48, 0] +0x000003c8 POPH 0x80000 ;; [152, 8, 0, 0] +0x000003cc POPL 0xf ;; [151, 0, 0, 15] +0x000003d0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000003d4 PSHL 0x3 ;; [149, 0, 0, 3] +0x000003d8 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000003dc MOVE R59 $sp ;; [26, 236, 80, 0] +0x000003e0 MOVE $writable R58 ;; [26, 67, 160, 0] +0x000003e4 MOVE R17 R62 ;; [26, 71, 224, 0] +0x000003e8 LW R60 R63 0x1 ;; [93, 243, 240, 1] +0x000003ec MCL $writable R60 ;; [39, 67, 192, 0] +0x000003f0 MOVE R62 R17 ;; [26, 249, 16, 0] +0x000003f4 POPH 0x80000 ;; [152, 8, 0, 0] +0x000003f8 POPL 0x3 ;; [151, 0, 0, 3] +0x000003fc JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000400 PSHL 0x3 ;; [149, 0, 0, 3] +0x00000404 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000408 MOVE R59 $sp ;; [26, 236, 80, 0] +0x0000040c CFEI 0x28 ;; [145, 0, 0, 40] +0x00000410 MOVE $writable R62 ;; [26, 67, 224, 0] +0x00000414 MCLI R59 0x8 ;; [112, 236, 0, 8] +0x00000418 ADDI R17 R59 0x8 ;; [80, 71, 176, 8] +0x0000041c MCLI R17 0x8 ;; [112, 68, 0, 8] +0x00000420 ADDI R17 R59 0x10 ;; [80, 71, 176, 16] +0x00000424 MCLI R17 0x8 ;; [112, 68, 0, 8] +0x00000428 ADDI R17 R59 0x18 ;; [80, 71, 176, 24] +0x0000042c MCLI R17 0x10 ;; [112, 68, 0, 16] +0x00000430 CFSI 0x28 ;; [146, 0, 0, 40] +0x00000434 MOVE R62 $writable ;; [26, 249, 0, 0] +0x00000438 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000043c POPL 0x3 ;; [151, 0, 0, 3] +0x00000440 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000444 PSHL 0xf ;; [149, 0, 0, 15] +0x00000448 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000044c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000450 CFEI 0x20 ;; [145, 0, 0, 32] +0x00000454 MOVE $writable R58 ;; [26, 67, 160, 0] +0x00000458 MOVE R17 R62 ;; [26, 71, 224, 0] +0x0000045c MUL R18 $zero $one ;; [27, 72, 0, 64] +0x00000460 ADD R18 R59 R18 ;; [16, 75, 180, 128] +0x00000464 MOVI R19 0xff ;; [114, 76, 0, 255] +0x00000468 SB R18 R19 0x0 ;; [94, 73, 48, 0] +0x0000046c ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x00000470 MOVE R58 R59 ;; [26, 235, 176, 0] +0x00000474 MOVE R57 R18 ;; [26, 229, 32, 0] +0x00000478 JAL R62 $pc 0xc ;; [153, 248, 48, 12] +0x0000047c ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x00000480 ADDI R19 R59 0x8 ;; [80, 79, 176, 8] +0x00000484 MOVE R58 R18 ;; [26, 233, 32, 0] +0x00000488 MOVE R57 R19 ;; [26, 229, 48, 0] +0x0000048c JAL R62 $pc 0x1a ;; [153, 248, 48, 26] +0x00000490 MCPI $writable R19 0x1 ;; [96, 65, 48, 1] +0x00000494 CFSI 0x20 ;; [146, 0, 0, 32] +0x00000498 MOVE R62 R17 ;; [26, 249, 16, 0] +0x0000049c POPH 0x80000 ;; [152, 8, 0, 0] +0x000004a0 POPL 0xf ;; [151, 0, 0, 15] +0x000004a4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000004a8 PSHL 0x7 ;; [149, 0, 0, 7] +0x000004ac PSHH 0x80000 ;; [150, 8, 0, 0] +0x000004b0 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000004b4 CFEI 0x28 ;; [145, 0, 0, 40] +0x000004b8 MOVE $writable R57 ;; [26, 67, 144, 0] +0x000004bc MOVE R17 R62 ;; [26, 71, 224, 0] +0x000004c0 ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x000004c4 MCPI R18 R58 0x1 ;; [96, 75, 160, 1] +0x000004c8 ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x000004cc SW R59 R18 0x3 ;; [95, 237, 32, 3] +0x000004d0 SW R59 $one 0x4 ;; [95, 236, 16, 4] +0x000004d4 ADDI R18 R59 0x18 ;; [80, 75, 176, 24] +0x000004d8 MCPI R59 R18 0x10 ;; [96, 237, 32, 16] +0x000004dc MCPI $writable R59 0x10 ;; [96, 67, 176, 16] +0x000004e0 CFSI 0x28 ;; [146, 0, 0, 40] +0x000004e4 MOVE R62 R17 ;; [26, 249, 16, 0] +0x000004e8 POPH 0x80000 ;; [152, 8, 0, 0] +0x000004ec POPL 0x7 ;; [151, 0, 0, 7] +0x000004f0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000004f4 PSHL 0xff ;; [149, 0, 0, 255] +0x000004f8 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000004fc MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000500 CFEI 0xb0 ;; [145, 0, 0, 176] +0x00000504 MOVE $writable R57 ;; [26, 67, 144, 0] +0x00000508 MOVE R17 R62 ;; [26, 71, 224, 0] +0x0000050c ADDI R18 R59 0x60 ;; [80, 75, 176, 96] +0x00000510 MCPI R18 R58 0x10 ;; [96, 75, 160, 16] +0x00000514 ADDI R18 R59 0x60 ;; [80, 75, 176, 96] +0x00000518 ADDI R19 R59 0x70 ;; [80, 79, 176, 112] +0x0000051c MCPI R19 R18 0x10 ;; [96, 77, 32, 16] +0x00000520 ADDI R18 R59 0x70 ;; [80, 75, 176, 112] +0x00000524 ADDI R19 R59 0x90 ;; [80, 79, 176, 144] +0x00000528 MCPI R19 R18 0x10 ;; [96, 77, 32, 16] +0x0000052c ADDI R18 R59 0x90 ;; [80, 75, 176, 144] +0x00000530 MCPI R59 R18 0x10 ;; [96, 237, 32, 16] +0x00000534 ADDI R18 R59 0x20 ;; [80, 75, 176, 32] +0x00000538 MCPI R18 R59 0x10 ;; [96, 75, 176, 16] +0x0000053c ADDI R19 R59 0x60 ;; [80, 79, 176, 96] +0x00000540 ADDI R20 R59 0x80 ;; [80, 83, 176, 128] +0x00000544 MCPI R20 R19 0x10 ;; [96, 81, 48, 16] +0x00000548 ADDI R19 R59 0x80 ;; [80, 79, 176, 128] +0x0000054c ADDI R20 R59 0xa0 ;; [80, 83, 176, 160] +0x00000550 MCPI R20 R19 0x10 ;; [96, 81, 48, 16] +0x00000554 ADDI R19 R59 0xa0 ;; [80, 79, 176, 160] +0x00000558 ADDI R20 R59 0x10 ;; [80, 83, 176, 16] +0x0000055c MCPI R20 R19 0x10 ;; [96, 81, 48, 16] +0x00000560 ADDI R19 R59 0x30 ;; [80, 79, 176, 48] +0x00000564 MCPI R19 R20 0x10 ;; [96, 77, 64, 16] +0x00000568 ADDI R19 R59 0x40 ;; [80, 79, 176, 64] +0x0000056c MCPI R19 R18 0x8 ;; [96, 77, 32, 8] +0x00000570 ADDI R18 R59 0x58 ;; [80, 75, 176, 88] +0x00000574 MCPI R18 R19 0x8 ;; [96, 73, 48, 8] +0x00000578 ADDI R18 R59 0x58 ;; [80, 75, 176, 88] +0x0000057c ADDI R19 R59 0x48 ;; [80, 79, 176, 72] +0x00000580 MCLI R19 0x1 ;; [112, 76, 0, 1] +0x00000584 ADDI R20 R59 0x50 ;; [80, 83, 176, 80] +0x00000588 MCPI R20 R19 0x1 ;; [96, 81, 48, 1] +0x0000058c ADDI R19 R59 0x50 ;; [80, 79, 176, 80] +0x00000590 MOVE R23 $zero ;; [26, 92, 0, 0] +0x00000594 LT R20 R23 $one ;; [22, 81, 112, 64] +0x00000598 JNZF R20 $zero 0x2 ;; [118, 80, 0, 2] +0x0000059c MCPI $writable R19 0x1 ;; [96, 65, 48, 1] +0x000005a0 JMPF $zero 0xa ;; [116, 0, 0, 10] +0x000005a4 MUL R20 R23 $one ;; [27, 81, 112, 64] +0x000005a8 ADD R20 R19 R20 ;; [16, 81, 53, 0] +0x000005ac LW R21 R18 0x0 ;; [93, 85, 32, 0] +0x000005b0 LB R21 R21 0x0 ;; [92, 85, 80, 0] +0x000005b4 LW R22 R18 0x0 ;; [93, 89, 32, 0] +0x000005b8 ADD R22 R22 $one ;; [16, 89, 96, 64] +0x000005bc SW R18 R22 0x0 ;; [95, 73, 96, 0] +0x000005c0 SB R20 R21 0x0 ;; [94, 81, 80, 0] +0x000005c4 ADD R23 R23 $one ;; [16, 93, 112, 64] +0x000005c8 JMPB $zero 0xc ;; [117, 0, 0, 12] +0x000005cc CFSI 0xb0 ;; [146, 0, 0, 176] +0x000005d0 MOVE R62 R17 ;; [26, 249, 16, 0] +0x000005d4 POPH 0x80000 ;; [152, 8, 0, 0] +0x000005d8 POPL 0xff ;; [151, 0, 0, 255] +0x000005dc JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000005e0 PSHL 0xf ;; [149, 0, 0, 15] +0x000005e4 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000005e8 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000005ec CFEI 0x38 ;; [145, 0, 0, 56] +0x000005f0 MOVE $writable R62 ;; [26, 67, 224, 0] +0x000005f4 ADDI R17 R59 0x30 ;; [80, 71, 176, 48] +0x000005f8 SB R17 R58 0x0 ;; [94, 71, 160, 0] +0x000005fc ADDI R17 R59 0x30 ;; [80, 71, 176, 48] +0x00000600 MOVE R18 $one ;; [26, 72, 16, 0] +0x00000604 ALOC $one ;; [38, 4, 0, 0] +0x00000608 MCP $hp R17 R18 ;; [40, 29, 20, 128] +0x0000060c ADDI R17 R59 0x10 ;; [80, 71, 176, 16] +0x00000610 SW R59 $hp 0x2 ;; [95, 236, 112, 2] +0x00000614 SW R59 $one 0x3 ;; [95, 236, 16, 3] +0x00000618 MCPI R59 R17 0x10 ;; [96, 237, 16, 16] +0x0000061c ADDI R17 R59 0x20 ;; [80, 71, 176, 32] +0x00000620 MCPI R17 R59 0x10 ;; [96, 71, 176, 16] +0x00000624 LW R17 R63 0x2 ;; [93, 71, 240, 2] +0x00000628 LW R18 R59 0x4 ;; [93, 75, 176, 4] +0x0000062c LW R19 R59 0x5 ;; [93, 79, 176, 5] +0x00000630 LOGD $zero R17 R18 R19 ;; [52, 1, 20, 147] +0x00000634 CFSI 0x38 ;; [146, 0, 0, 56] +0x00000638 MOVE R62 $writable ;; [26, 249, 0, 0] +0x0000063c POPH 0x80000 ;; [152, 8, 0, 0] +0x00000640 POPL 0xf ;; [151, 0, 0, 15] +0x00000644 JAL $zero R62 0x0 ;; [153, 3, 224, 0] .data_section: -0x00000b40 .word i18446744073709486083, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 03]) -0x00000b48 .word i262145, as hex be bytes ([00, 00, 00, 00, 00, 04, 00, 01]) -0x00000b50 .word i14454674236531057292, as hex be bytes ([C8, 99, 51, A2, 4C, 6C, A2, 8C]) +0x00000648 .word i18446744073709486083, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 03]) +0x00000650 .word i262145, as hex be bytes ([00, 00, 00, 00, 00, 04, 00, 01]) +0x00000658 .word i14454674236531057292, as hex be bytes ([C8, 99, 51, A2, 4C, 6C, A2, 8C]) ;; --- END OF TARGET BYTECODE --- warning @@ -2985,23 +1552,23 @@ warning ____ Compiled script "array_repeat" with 8 warnings. - Finished debug [unoptimized + fuel] target(s) [2.904 KB] in ??? + Finished release [optimized + fuel] target(s) [1.632 KB] in ??? -> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --experimental const_generics --verbose +> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --experimental const_generics --verbose --release exit status: 0 output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) - Finished debug [unoptimized + fuel] target(s) [7.064 KB] in ??? + Finished release [optimized + fuel] target(s) [2.864 KB] in ??? script array_repeat - Bytecode size: 7064 bytes (7.064 KB) - Bytecode hash: 0x69ce3ea2c40196fda9c534574731a978c37ff95d2eedacfed5f1c9c8c1611414 + Bytecode size: 2864 bytes (2.864 KB) + Bytecode hash: 0xdc2e29e1f37d24b165bc4b534388fc87ecb1148464b75c6268eb8499f2c9f6df Running 1 test, filtered 0 tests tested -- array_repeat - test test_array_repeat_zero ... ok (???, 43029135 gas) + test test_array_repeat_zero ... ok (???, 6299897 gas) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json index c26998cea62..de41503e97e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json @@ -63,97 +63,97 @@ "concreteTypeId": "b760f44fa5965c2474a3b471467a22c43185152129295af588b022ae50b50903", "indirect": false, "name": "BOOL", - "offset": 4736 + "offset": 4704 }, { "concreteTypeId": "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", "indirect": false, "name": "U8", - "offset": 4928 + "offset": 4896 }, { "concreteTypeId": "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", "indirect": false, "name": "ANOTHER_U8", - "offset": 4664 + "offset": 4632 }, { "concreteTypeId": "29881aad8730c5ab11d275376323d8e4ff4179aae8ccb6c13fe4902137e162ef", "indirect": false, "name": "U16", - "offset": 4872 + "offset": 4840 }, { "concreteTypeId": "d7649d428b9ff33d188ecbf38a7e4d8fd167fa01b2e10fe9a8f9308e52f1d7cc", "indirect": false, "name": "U32", - "offset": 4912 + "offset": 4880 }, { "concreteTypeId": "d7649d428b9ff33d188ecbf38a7e4d8fd167fa01b2e10fe9a8f9308e52f1d7cc", "indirect": false, "name": "U64", - "offset": 4920 + "offset": 4888 }, { "concreteTypeId": "1b5759d94094368cfd443019e7ca5ec4074300e544e5ea993a979f5da627261e", "indirect": false, "name": "U256", - "offset": 4880 + "offset": 4848 }, { "concreteTypeId": "7c5ee1cecf5f8eacd1284feb5f0bf2bdea533a51e2f0c9aabe9236d335989f3b", "indirect": false, "name": "B256", - "offset": 4704 + "offset": 4672 }, { "concreteTypeId": "81fc10c4681a3271cf2d66b2ec6fbc8ed007a442652930844fcf11818c295bff", "indirect": false, "name": "CONFIGURABLE_STRUCT", - "offset": 4824 + "offset": 4792 }, { "concreteTypeId": "a2922861f03be8a650595dd76455b95383a61b46dd418f02607fa2e00dc39d5c", "indirect": false, "name": "CONFIGURABLE_ENUM_A", - "offset": 4744 + "offset": 4712 }, { "concreteTypeId": "a2922861f03be8a650595dd76455b95383a61b46dd418f02607fa2e00dc39d5c", "indirect": false, "name": "CONFIGURABLE_ENUM_B", - "offset": 4784 + "offset": 4752 }, { "concreteTypeId": "4926d35d1a5157936b0a29bc126b8aace6d911209a5c130e9b716b0c73643ea6", "indirect": false, "name": "ARRAY_BOOL", - "offset": 4672 + "offset": 4640 }, { "concreteTypeId": "776fb5a3824169d6736138565fdc20aad684d9111266a5ff6d5c675280b7e199", "indirect": false, "name": "ARRAY_U64", - "offset": 4680 + "offset": 4648 }, { "concreteTypeId": "c998ca9a5f221fe7b5c66ae70c8a9562b86d964408b00d17f883c906bc1fe4be", "indirect": false, "name": "TUPLE_BOOL_U64", - "offset": 4856 + "offset": 4824 }, { "concreteTypeId": "94f0fa95c830be5e4f711963e83259fe7e8bc723278ab6ec34449e791a99b53a", "indirect": false, "name": "STR_4", - "offset": 4848 + "offset": 4816 }, { "concreteTypeId": "c89951a24c6ca28c13fd1cfdc646b2b656d69e61a92b91023be7eb58eb914b6b", "indirect": false, "name": "NOT_USED", - "offset": 4840 + "offset": 4808 } ], "encodingVersion": "1", diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap index 0219f5001ee..6a8b52d8204 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap @@ -1,6 +1,5 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 101 --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode --release --ir final --asm final exit status: 0 @@ -51,151 +50,29 @@ script { ret () v18 } - pub entry fn __entry() -> __ptr slice, !46 { - local mut { ptr, u64, u64 } __aggr_memcpy_0 - local mut { ptr, u64, u64 } __aggr_memcpy_00 - local mut { ptr, u64, u64 } __aggr_memcpy_01 - local mut { ptr, u64, u64 } __aggr_memcpy_02 - local mut slice __aggr_memcpy_03 - local { ptr, u64, u64 } __anon_0 - local { ptr, u64, u64 } __anon_00 - local { ptr, u64, u64 } __anon_01 - local { { ptr, u64, u64 } } __anon_1 - local { ptr, u64, u64 } __anon_10 - local { ptr, u64 } __anon_11 - local { { ptr, u64, u64 } } __anon_2 - local slice __ret_value - local { { ptr, u64, u64 } } buffer - local { { ptr, u64, u64 } } buffer_ - local { { ptr, u64, u64 } } self_0 + pub entry fn __entry() -> __ptr never, !46 { + local u64 item_ entry(): - v0 = get_local __ptr slice, __ret_value - v1 = call main_8(), !49 - v2 = const u64 1024 - v3 = asm(cap: v2) -> ptr hp, !54 { - aloc cap - } - v4 = get_local __ptr { ptr, u64, u64 }, __anon_0, !55 - v5 = const u64 0 - v6 = get_elem_ptr v4, __ptr ptr, v5, !56 - store v3 to v6, !57 - v7 = const u64 1 - v8 = get_elem_ptr v4, __ptr u64, v7, !58 - store v2 to v8, !59 - v9 = const u64 2 - v10 = get_elem_ptr v4, __ptr u64, v9, !60 - v11 = const u64 0 - store v11 to v10, !61 - v12 = asm(buffer: v4) -> __ptr { ptr, u64, u64 } buffer { - } - v13 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v13, v12 - v14 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !63 - v15 = const u64 0 - v16 = get_elem_ptr v14, __ptr { ptr, u64, u64 }, v15, !64 - mem_copy_val v16, v13 - v17 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !67 - mem_copy_val v17, v14 - v18 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !69 - v19 = const u64 0 - v20 = get_elem_ptr v18, __ptr { ptr, u64, u64 }, v19, !71 - v21 = asm(buffer: v20) -> __ptr { ptr, u64, u64 } buffer { - } - v22 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v22, v21 - v23 = get_local __ptr { ptr, u64, u64 }, __anon_00, !72 - mem_copy_val v23, v22 - v24 = const u64 0 - v25 = get_elem_ptr v23, __ptr ptr, v24, !73 - v26 = load v25, !74 - v27 = const u64 1 - v28 = get_elem_ptr v23, __ptr u64, v27, !75 - v29 = load v28, !76 - v30 = const u64 2 - v31 = get_elem_ptr v23, __ptr u64, v30, !77 - v32 = load v31, !78 - v33 = const u64 8 - v34 = add v32, v33, !79 - v35 = cmp gt v34 v29, !80 - cbr v35, encode_10_abi_encode_11_block1(), encode_10_abi_encode_11_block0(v26, v29), !81 - - encode_10_abi_encode_11_block0(v36: ptr, v37: u64): - v38 = add v36, v32, !82 - v39 = cast_ptr v38 to __ptr u64, !83 - store v1 to v39, !84 - v40 = get_local __ptr { ptr, u64, u64 }, __anon_10, !85 - v41 = const u64 0 - v42 = get_elem_ptr v40, __ptr ptr, v41, !86 - store v36 to v42, !87 - v43 = const u64 1 - v44 = get_elem_ptr v40, __ptr u64, v43, !88 - store v37 to v44, !89 - v45 = const u64 2 - v46 = get_elem_ptr v40, __ptr u64, v45, !90 - store v34 to v46, !91 - v47 = asm(buffer: v40) -> __ptr { ptr, u64, u64 } buffer { - } - v48 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v48, v47 - v49 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !93 - v50 = const u64 0 - v51 = get_elem_ptr v49, __ptr { ptr, u64, u64 }, v50, !94 - mem_copy_val v51, v48 - v52 = get_local __ptr { { ptr, u64, u64 } }, buffer, !96 - mem_copy_val v52, v49 - v53 = get_local __ptr { { ptr, u64, u64 } }, buffer, !98 - v54 = get_local __ptr { { ptr, u64, u64 } }, self_0, !101 - mem_copy_val v54, v53 - v55 = get_local __ptr { { ptr, u64, u64 } }, self_0, !103 - v56 = const u64 0 - v57 = get_elem_ptr v55, __ptr { ptr, u64, u64 }, v56, !104 - v58 = asm(buffer: v57) -> __ptr { ptr, u64, u64 } buffer { - } - v59 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 - mem_copy_val v59, v58 - v60 = get_local __ptr { ptr, u64, u64 }, __anon_01, !105 - mem_copy_val v60, v59 - v61 = const u64 0 - v62 = get_elem_ptr v60, __ptr ptr, v61, !106 - v63 = const u64 2 - v64 = get_elem_ptr v60, __ptr u64, v63, !107 - v65 = get_local __ptr { ptr, u64 }, __anon_11, !108 - v66 = const u64 0 - v67 = get_elem_ptr v65, __ptr ptr, v66, !109 - mem_copy_val v67, v62 - v68 = const u64 1 - v69 = get_elem_ptr v65, __ptr u64, v68, !110 - mem_copy_val v69, v64 - v70 = asm(s: v65) -> __ptr slice s { - } - v71 = get_local __ptr slice, __aggr_memcpy_03 - mem_copy_val v71, v70 - mem_copy_val v0, v71 - ret __ptr slice v0 - - encode_10_abi_encode_11_block1(): - v72 = const u64 2 - v73 = mul v29, v72, !111 - v74 = add v73, v33, !112 - v75 = asm(new_cap: v74, old_ptr: v26, len: v32) -> __ptr u8 hp, !113 { - aloc new_cap - mcp hp old_ptr len - } - br encode_10_abi_encode_11_block0(v75, v74), !114 + v0 = call main_8(), !49 + v1 = get_local __ptr u64, item_, !52 + store v0 to v1, !52 + v2 = get_local __ptr u64, item_, !54 + v3 = const u64 8 + retd v2 v3, !56 } - entry_orig fn main_8() -> u64, !117 { + entry_orig fn main_8() -> u64, !59 { entry(): - v0 = get_config __ptr { u64 }, WRAPPED, !118 + v0 = get_config __ptr { u64 }, WRAPPED, !60 v1 = const u64 0 - v2 = get_elem_ptr v0, __ptr u64, v1, !119 + v2 = get_elem_ptr v0, __ptr u64, v1, !61 v3 = load v2 - v4 = get_config __ptr { u64 }, TUPLE, !120 + v4 = get_config __ptr { u64 }, TUPLE, !62 v5 = const u64 0 - v6 = get_elem_ptr v4, __ptr u64, v5, !121 + v6 = get_elem_ptr v4, __ptr u64, v5, !63 v7 = load v6 - v8 = add v3, v7, !124 + v8 = add v3, v7, !66 ret u64 v8 } } @@ -204,26 +81,26 @@ script { !1 = span !0 177 182 !2 = span !0 136 143 !3 = "sway-lib-std/src/codec.sw" -!4 = span !3 71210 71213 -!5 = span !3 71224 71227 -!6 = span !3 71234 71240 -!7 = span !3 71180 71513 -!8 = fn_name_span !3 71187 71206 +!4 = span !3 71969 71972 +!5 = span !3 71983 71986 +!6 = span !3 71993 71999 +!7 = span !3 71939 72272 +!8 = fn_name_span !3 71946 71965 !9 = inline "never" !10 = (!7 !8 !9) -!11 = span !3 71298 71332 -!12 = fn_call_path_span !3 71298 71322 +!11 = span !3 72057 72091 +!12 = fn_call_path_span !3 72057 72081 !13 = span !3 735 755 !14 = (!11 !12 !13) !15 = (!11 !12) !16 = (!11 !12 !13) -!17 = span !3 71363 71369 -!18 = span !3 71349 71370 -!19 = fn_call_path_span !3 71349 71362 -!20 = span !3 115383 115404 -!21 = fn_call_path_span !3 115383 115396 -!22 = span !3 71962 71990 -!23 = fn_call_path_span !3 71969 71981 +!17 = span !3 72122 72128 +!18 = span !3 72108 72129 +!19 = fn_call_path_span !3 72108 72121 +!20 = span !3 116142 116163 +!21 = fn_call_path_span !3 116142 116155 +!22 = span !3 72721 72749 +!23 = fn_call_path_span !3 72728 72740 !24 = span !3 625 637 !25 = (!18 !19 !20 !21 !22 !23 !24) !26 = (!18 !19 !20 !21 !22 !23) @@ -235,96 +112,38 @@ script { !32 = (!18 !19 !20 !21 !22 !23) !33 = span !3 2857 2896 !34 = (!18 !19 !20 !21 !22 !23 !33) -!35 = span !3 115382 115407 +!35 = span !3 116141 116166 !36 = (!18 !19 !35) !37 = (!18 !19 !35) !38 = (!18 !19 !35) -!39 = span !3 71429 71433 -!40 = span !3 71419 71434 -!41 = span !3 71376 71511 -!42 = span !3 71484 71504 +!39 = span !3 72188 72192 +!40 = span !3 72178 72193 +!41 = span !3 72135 72270 +!42 = span !3 72243 72263 !43 = "test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/src/main..sw" -!44 = span !43 0 127 +!44 = span !43 0 130 !45 = fn_name_span !43 7 14 !46 = (!44 !45) -!47 = span !43 67 73 -!48 = fn_call_path_span !43 67 71 +!47 = span !43 59 65 +!48 = fn_call_path_span !43 59 63 !49 = (!47 !48) -!50 = span !43 91 113 -!51 = fn_call_path_span !43 91 97 -!52 = span !3 70926 70939 -!53 = fn_call_path_span !3 70926 70937 -!54 = (!50 !51 !52 !53) -!55 = (!50 !51 !52 !53) -!56 = (!50 !51 !52 !53) -!57 = (!50 !51 !52 !53) -!58 = (!50 !51 !52 !53) -!59 = (!50 !51 !52 !53) -!60 = (!50 !51 !52 !53) -!61 = (!50 !51 !52 !53) -!62 = span !3 191 254 -!63 = (!50 !51 !52 !53 !62) -!64 = (!50 !51 !52 !53) -!65 = span !3 70910 70940 -!66 = fn_call_path_span !3 70915 70925 -!67 = (!50 !51 !65 !66) -!68 = span !3 4826 4832 -!69 = (!50 !51 !65 !66 !68) -!70 = span !3 87 114 -!71 = (!50 !51 !65 !66 !70) -!72 = (!50 !51 !65 !66) -!73 = (!50 !51 !65 !66) -!74 = (!50 !51 !65 !66) -!75 = (!50 !51 !65 !66) -!76 = (!50 !51 !65 !66) -!77 = (!50 !51 !65 !66) -!78 = (!50 !51 !65 !66) -!79 = (!50 !51 !65 !66) -!80 = (!50 !51 !65 !66) -!81 = (!50 !51 !65 !66) -!82 = (!50 !51 !65 !66) -!83 = (!50 !51 !65 !66) -!84 = (!50 !51 !65 !66) -!85 = (!50 !51 !65 !66) -!86 = (!50 !51 !65 !66) -!87 = (!50 !51 !65 !66) -!88 = (!50 !51 !65 !66) -!89 = (!50 !51 !65 !66) -!90 = (!50 !51 !65 !66) -!91 = (!50 !51 !65 !66) -!92 = span !3 4774 4857 -!93 = (!50 !51 !65 !66 !92) -!94 = (!50 !51 !65 !66) -!95 = span !3 70897 70941 -!96 = (!50 !51 !95) -!97 = span !3 70946 70952 -!98 = (!50 !51 !97) -!99 = span !3 70946 70967 -!100 = fn_call_path_span !3 70953 70965 -!101 = (!50 !51 !99 !100) -!102 = span !3 573 577 -!103 = (!50 !51 !99 !100 !102) -!104 = (!50 !51 !99 !100 !70) -!105 = (!50 !51 !99 !100) -!106 = (!50 !51 !99 !100) -!107 = (!50 !51 !99 !100) -!108 = (!50 !51 !99 !100) -!109 = (!50 !51 !99 !100) -!110 = (!50 !51 !99 !100) -!111 = (!50 !51 !65 !66) -!112 = (!50 !51 !65 !66) -!113 = (!50 !51 !65 !66) -!114 = (!50 !51 !65 !66) -!115 = span !0 202 246 -!116 = fn_name_span !0 205 209 -!117 = (!115 !116) -!118 = span !0 225 232 -!119 = span !0 30 36 -!120 = span !0 237 242 -!121 = span !0 243 244 -!122 = span !0 225 244 -!123 = fn_call_path_span !0 235 236 -!124 = (!122 !123) +!50 = span !43 83 116 +!51 = fn_call_path_span !43 83 100 +!52 = (!50 !51) +!53 = span !3 71584 71588 +!54 = (!50 !51 !53) +!55 = span !3 71568 71595 +!56 = (!50 !51 !55) +!57 = span !0 202 246 +!58 = fn_name_span !0 205 209 +!59 = (!57 !58) +!60 = span !0 225 232 +!61 = span !0 30 36 +!62 = span !0 237 242 +!63 = span !0 243 244 +!64 = span !0 225 244 +!65 = fn_call_path_span !0 235 236 +!66 = (!64 !65) ;; ASM: Final program ;; Program kind: Script @@ -341,79 +160,17 @@ cfei i16 ; allocate stack space for globals addr $$arg0 data_Configurable_0; get pointer to configurable TUPLE default value addi $$arg1 $zero i8 ; get length of configurable TUPLE default value addi $$arg2 $ssp i0 ; get pointer to configurable TUPLE stack address -jal $$reta $pc i74 ; decode configurable TUPLE +jal $$reta $pc i12 ; decode configurable TUPLE addr $$arg0 data_Configurable_1; get pointer to configurable WRAPPED default value addi $$arg1 $zero i8 ; get length of configurable WRAPPED default value addi $$arg2 $ssp i8 ; get pointer to configurable WRAPPED stack address -jal $$reta $pc i69 ; decode configurable WRAPPED +jal $$reta $pc i7 ; decode configurable WRAPPED move $$locbase $sp ; save locals base register for function __entry -cfei i360 ; allocate 360 bytes for locals and 0 slots for call arguments -addi $r0 $$locbase i272 ; get offset to local __ptr slice -jal $$reta $pc i87 ; [call]: call main_8 -move $r1 $$retv ; [call]: copy the return value -movi $r2 i1024 ; initialize constant into register -aloc $r2 -addi $r2 $$locbase i112 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $hp i14 ; store word -movi $r3 i1024 ; initialize constant into register -sw $$locbase $r3 i15 ; store word -sw $$locbase $zero i16 ; store word -mcpi $$locbase $r2 i24 ; copy memory -addi $r2 $$locbase i184 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $$locbase i24 ; copy memory -addi $r3 $$locbase i312 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r3 $r2 i24 ; copy memory -addi $r2 $$locbase i312 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r3 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r3 $r2 i24 ; copy memory -addi $r2 $$locbase i136 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r2 $r3 i24 ; copy memory -lw $r2 $$locbase i17 ; load word -lw $r6 $$locbase i18 ; load word -lw $r3 $$locbase i19 ; load word -movi $r4 i8 ; initialize constant into register -add $r4 $r3 $r4 -gt $r5 $r4 $r6 -jnzf $r5 $zero i1 -jmpf $zero i7 -movi $r5 i2 ; initialize constant into register -mul $r5 $r6 $r5 -movi $r6 i8 ; initialize constant into register -add $r6 $r5 $r6 -aloc $r6 -mcp $hp $r2 $r3 -move $r2 $hp ; move parameter from branch to block argument -add $r3 $r2 $r3 -sw $r3 $r1 i0 ; store word -addi $r1 $$locbase i208 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $r2 i26 ; store word -sw $$locbase $r6 i27 ; store word -sw $$locbase $r4 i28 ; store word -addi $r2 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i248 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r2 i24 ; copy memory -addi $r2 $$locbase i288 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i288 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i336 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i336 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i72 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i160 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r1 $r2 i24 ; copy memory -addi $r2 $r1 i16 ; get offset to aggregate element -addi $r3 $$locbase i232 ; get offset to local __ptr { ptr, u64 } -mcpi $r3 $r1 i8 ; copy memory -addi $r1 $r3 i8 ; get offset to aggregate element -mcpi $r1 $r2 i8 ; copy memory -addi $r1 $$locbase i96 ; get offset to local __ptr slice -mcpi $r1 $r3 i16 ; copy memory -mcpi $r0 $r1 i16 ; copy memory -lw $r1 $r0 i1 ; load size of returned slice -lw $r0 $r0 i0 ; load pointer to returned slice -retd $r0 $r1 +cfei i8 ; allocate 8 bytes for locals and 0 slots for call arguments +jal $$reta $pc i26 ; [call]: call main_8 +sw $$locbase $$retv i0 ; store word +movi $r0 i8 ; initialize constant into register +retd $$locbase $r0 pshl i31 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function abi_decode_in_place_0 @@ -451,4 +208,4 @@ data__0 .bytes[8] 00 00 00 00 00 00 00 02 ........ data__1 .bytes[8] 00 00 00 00 00 00 00 01 ........ - Finished release [optimized + fuel] target(s) [496 B] in ??? + Finished release [optimized + fuel] target(s) [248 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/snapshot.toml index 4e3485ebcad..394f853f4d9 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/snapshot.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/snapshot.toml @@ -1,4 +1,4 @@ cmds = [ "forc build --path {root} --release", - "forc test --path {root} --experimental const_generics --test-threads 1 --dbgs --reverts", + "forc test --path {root} --experimental const_generics --test-threads 1 --dbgs --reverts --release", ] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap index 67808a72a6c..76a47eb6e59 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap @@ -376,7 +376,7 @@ ____ Aborting due to 31 errors. error: Failed to compile const_generics -> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics --experimental const_generics --test-threads 1 --dbgs --reverts +> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics --experimental const_generics --test-threads 1 --dbgs --reverts --release exit status: 0 output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics @@ -410,29 +410,12 @@ warning ____ Compiled script "const_generics" with 2 warnings. - Finished debug [unoptimized + fuel] target(s) [8.992 KB] in ??? + Finished release [optimized + fuel] target(s) [888 B] in ??? Running 1 test, filtered 0 tests tested -- const_generics - test run_main ... ok (???, 34686 gas) - debug output: -[src/main.sw:111:13] a = [1, 2] -[src/main.sw:115:13] [C {}].len() = 1 -[src/main.sw:120:13] [C {}, C {}].len() = 2 -[src/main.sw:124:13] s.len_xxx() = 3 -[src/main.sw:130:13] e = OneVariant([1, 2, 3]) -[src/main.sw:135:13] e = Nothing -[src/main.sw:153:13] return_n::<3>() = 3 -[src/main.sw:155:13] return_n::<5>() = 5 -[src/main.sw:161:13] a.len() = 3 -[src/main.sw:162:13] a = "ABC" -[src/main.sw:166:13] a.len() = 5 -[src/main.sw:167:13] a = "ABCDE" -[src/main.sw:171:13] a.len() = 70 -[src/main.sw:172:13] a = "1234567890123456789012345678901234567890123456789012345678901234567890" -[src/main.sw:107:13] A = 2 -[src/main.sw:107:13] A = 6 + test run_main ... ok (???, 474 gas) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index c25729eaec8..22425c3c9a7 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -1,6 +1,5 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 162 --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release --asm final | sub ecal ecal $r1 $r0 $zero $zero ; ecal id fd zero zero @@ -19,12 +18,12 @@ ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r4 $r0 $r1 $r3 ; ecal id fd buf count > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release --release --asm final | sub ecal -ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count +ecal $r2 $r5 $r0 $r1 ; ecal id fd buf count ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count +ecal $r2 $r4 $r0 $r1 ; ecal id fd buf count ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.debug.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.debug.json index 68c4b46877a..926ee537d64 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.debug.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.debug.json @@ -39,6 +39,10 @@ } ], "loggedTypes": [ + { + "concreteTypeId": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", + "logId": "1515152261580153489" + }, { "concreteTypeId": "3f8dc98862e8f3a9b179125e425353ebec6c0f5fc639afce8ed40456c21d3c62", "logId": "4579537983717831593" diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.release.json index 68c4b46877a..926ee537d64 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/json_abi_oracle_new_encoding.release.json @@ -39,6 +39,10 @@ } ], "loggedTypes": [ + { + "concreteTypeId": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", + "logId": "1515152261580153489" + }, { "concreteTypeId": "3f8dc98862e8f3a9b179125e425353ebec6c0f5fc639afce8ed40456c21d3c62", "logId": "4579537983717831593" diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/snapshot.toml new file mode 100644 index 00000000000..677b3eff607 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/snapshot.toml @@ -0,0 +1,4 @@ +cmds = [ + "forc build --path {root} --release --ir final", + "forc test --path {root} --release" +] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw index 9fd4cf09ada..e935e0cc7f8 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw @@ -40,13 +40,20 @@ struct NotAutoEncodable { p: raw_ptr } +#[inline(never)] +fn local_log(item: T) where T: AbiEncode { + __log(item); +} + fn main() -> u64 { + local_log(0u64); + let mut e = Vec::new(); e.push(1); e.push(2); e.push(3); - __log(S{ + local_log(S{ a: 1, b: 2, c: 3, @@ -55,14 +62,19 @@ fn main() -> u64 { f: "sway", g: u256::max() }); - __log(SS{ + local_log(SS{ ss: 1u64 }); - __log(E::A(SS{ + local_log(E::A(SS{ ss: 1u64 })); - __log(E::B); - __log(CustomAbiEncode {}); + local_log(E::B); + local_log(CustomAbiEncode {}); 1 } + +#[test] +fn call_main() { + main(); +} \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap new file mode 100644 index 00000000000..3e5f4ad0298 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap @@ -0,0 +1,1762 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/logging --release --ir final +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/language/logging + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) +// IR: Final +library { +} + + Compiling script logging (test/src/e2e_vm_tests/test_programs/should_pass/language/logging) +// IR: Final +script { + global __const_global : string<4> = const string<4> "sway" + + pub entry fn __entry() -> __ptr never, !3 { + local u64 item_ + + entry(): + v0 = call main_0(), !6 + v1 = get_local __ptr u64, item_, !9 + store v0 to v1, !9 + v2 = get_local __ptr u64, item_, !12 + v3 = const u64 8 + retd v2 v3, !14 + } + + entry_orig fn main_0() -> u64, !18 { + local { ptr, u64 } __anon_0 + local { ptr, u64 } __anon_000 + local slice __anon_1 + local { u64 } __anon_5 + local u256 __const = const u256 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + local { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 } __tmp_arg + local { u64 } __tmp_arg0 + local { u64, ( { u64 } | () ) } __tmp_arg1 + local { u64, ( { u64 } | () ) } __tmp_arg2 + local { } __tmp_arg3 + local mut { { ptr, u64 }, u64 } e + + entry(): + v0 = get_local __ptr u256, __const + v1 = const u64 0, !19 + v2 = call local_log_1(v1), !22 + v3 = const u64 0, !33 + v4 = asm(size: v3, ptr) -> ptr ptr, !35 { + aloc size, !36 + move ptr hp, !37 + } + v5 = get_local __ptr { ptr, u64 }, __anon_000, !39 + v6 = const u64 0 + v7 = get_elem_ptr v5, __ptr ptr, v6, !40 + store v4 to v7, !41 + v8 = const u64 1 + v9 = get_elem_ptr v5, __ptr u64, v8, !42 + v10 = const u64 0, !43 + store v10 to v9, !44 + v11 = get_local __ptr { { ptr, u64 }, u64 }, e, !46 + v12 = const u64 0 + v13 = get_elem_ptr v11, __ptr { ptr, u64 }, v12, !47 + mem_copy_val v13, v5 + v14 = const u64 1 + v15 = get_elem_ptr v11, __ptr u64, v14, !47 + v16 = const u64 0, !48 + store v16 to v15, !49 + v17 = get_local __ptr { { ptr, u64 }, u64 }, e, !50 + v18 = const u64 1, !51 + v19 = call push_11(v17, v18), !54 + v20 = get_local __ptr { { ptr, u64 }, u64 }, e, !55 + v21 = const u64 2, !56 + v22 = call push_11(v20, v21), !59 + v23 = get_local __ptr { { ptr, u64 }, u64 }, e, !60 + v24 = const u64 3, !61 + v25 = call push_11(v23, v24), !64 + v26 = get_local __ptr { { ptr, u64 }, u64 }, e, !65 + v27 = get_global __ptr string<4>, __const_global + v28 = cast_ptr v27 to ptr, !66 + v29 = get_local __ptr { ptr, u64 }, __anon_0, !66 + v30 = const u64 0 + v31 = get_elem_ptr v29, __ptr ptr, v30 + store v28 to v31, !66 + v32 = const u64 1 + v33 = get_elem_ptr v29, __ptr u64, v32 + v34 = const u64 4 + store v34 to v33, !66 + v35 = get_local __ptr slice, __anon_1, !66 + mem_copy_bytes v35, v29, 16 + v36 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg, !67 + v37 = const u64 0 + v38 = get_elem_ptr v36, __ptr u64, v37 + v39 = const u64 1, !68 + store v39 to v38, !67 + v40 = const u64 1 + v41 = get_elem_ptr v36, __ptr u64, v40 + v42 = const u64 2, !69 + store v42 to v41, !67 + v43 = const u64 2 + v44 = get_elem_ptr v36, __ptr u64, v43 + v45 = const u64 3, !70 + store v45 to v44, !67 + v46 = const u64 3 + v47 = get_elem_ptr v36, __ptr u8, v46 + v48 = const u8 4, !71 + store v48 to v47, !67 + v49 = const u64 4 + v50 = get_elem_ptr v36, __ptr { { ptr, u64 }, u64 }, v49 + mem_copy_val v50, v26 + v51 = const u64 5 + v52 = get_elem_ptr v36, __ptr slice, v51 + mem_copy_val v52, v35 + v53 = const u64 6 + v54 = get_elem_ptr v36, __ptr u256, v53 + mem_copy_val v54, v0 + v55 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, __tmp_arg + v56 = call local_log_19(v55) + v57 = get_local __ptr { u64 }, __tmp_arg0, !72 + v58 = const u64 0 + v59 = get_elem_ptr v57, __ptr u64, v58 + v60 = const u64 1, !73 + store v60 to v59, !72 + v61 = get_local __ptr { u64 }, __tmp_arg0 + v62 = call local_log_32(v61) + v63 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1, !74 + v64 = const u64 0 + v65 = get_elem_ptr v63, __ptr u64, v64, !74 + v66 = const u64 0, !74 + store v66 to v65, !74 + v67 = get_local __ptr { u64 }, __anon_5, !75 + v68 = const u64 0 + v69 = get_elem_ptr v67, __ptr u64, v68 + v70 = const u64 1, !76 + store v70 to v69, !75 + v71 = const u64 1 + v72 = const u64 0 + v73 = get_elem_ptr v63, __ptr { u64 }, v71, v72, !74 + mem_copy_val v73, v67 + v74 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg1 + v75 = call local_log_35(v74) + v76 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2, !74 + v77 = const u64 0 + v78 = get_elem_ptr v76, __ptr u64, v77, !74 + v79 = const u64 1, !74 + store v79 to v78, !74 + v80 = get_local __ptr { u64, ( { u64 } | () ) }, __tmp_arg2 + v81 = call local_log_35(v80) + v82 = get_local __ptr { }, __tmp_arg3 + v83 = call local_log_38(v82) + v84 = const u64 1, !77 + ret u64 v84 + } + + fn local_log_1(item !78: u64) -> (), !82 { + local mut slice __aggr_memcpy_0 + local { ptr, u64 } __anon_0 + local slice __log_arg + local u64 item_0 + + entry(item: u64): + v0 = get_local __ptr u64, item_0, !83 + store item to v0, !83 + v1 = get_local __ptr u64, item_0, !85 + v2 = const u64 8 + v3 = asm(size: v2, src: v1) -> ptr hp, !87 { + aloc size, !88 + mcp hp src size, !89 + } + v4 = get_local __ptr { ptr, u64 }, __anon_0, !91 + v5 = const u64 0 + v6 = get_elem_ptr v4, __ptr ptr, v5, !92 + store v3 to v6, !93 + v7 = const u64 1 + v8 = get_elem_ptr v4, __ptr u64, v7, !94 + store v2 to v8, !95 + v9 = asm(s: v4) -> __ptr slice s { + } + v10 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v10, v9 + v11 = get_local __ptr slice, __log_arg + mem_copy_val v11, v10 + v12 = const u64 1515152261580153489 + log __ptr slice v11, v12 + v13 = const unit () + ret () v13 + } + + pub fn abi_encode_4(self !96: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !99 { + local mut { ptr, u64, u64 } __aggr_memcpy_0 + local mut { ptr, u64, u64 } __aggr_memcpy_00 + local { ptr, u64, u64 } __anon_0 + local { ptr, u64, u64 } __anon_1 + local { { ptr, u64, u64 } } __anon_2 + local { { ptr, u64, u64 } } buffer_ + + entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): + v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + mem_copy_val v0, buffer + v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !100 + v2 = const u64 0 + v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !101 + v4 = asm(buffer: v3) -> __ptr { ptr, u64, u64 } buffer { + } + v5 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v5, v4 + v6 = get_local __ptr { ptr, u64, u64 }, __anon_0 + mem_copy_val v6, v5 + v7 = const u64 0 + v8 = get_elem_ptr v6, __ptr ptr, v7 + v9 = load v8 + v10 = const u64 1 + v11 = get_elem_ptr v6, __ptr u64, v10 + v12 = load v11 + v13 = const u64 2 + v14 = get_elem_ptr v6, __ptr u64, v13 + v15 = load v14 + v16 = const u64 8 + v17 = add v15, v16 + v18 = cmp gt v17 v12 + cbr v18, block1(), block0(v9, v12) + + block0(v19: ptr, v20: u64): + v21 = add v19, v15 + v22 = cast_ptr v21 to __ptr u64 + store self to v22 + v23 = get_local __ptr { ptr, u64, u64 }, __anon_1 + v24 = const u64 0 + v25 = get_elem_ptr v23, __ptr ptr, v24 + store v19 to v25 + v26 = const u64 1 + v27 = get_elem_ptr v23, __ptr u64, v26 + store v20 to v27 + v28 = const u64 2 + v29 = get_elem_ptr v23, __ptr u64, v28 + store v17 to v29 + v30 = asm(buffer: v23) -> __ptr { ptr, u64, u64 } buffer { + } + v31 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v31, v30 + v32 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !102 + v33 = const u64 0 + v34 = get_elem_ptr v32, __ptr { ptr, u64, u64 }, v33 + mem_copy_val v34, v31 + mem_copy_val __ret_value, v32 + v35 = const unit () + ret () v35 + + block1(): + v36 = const u64 2 + v37 = mul v12, v36 + v38 = add v37, v16 + v39 = asm(new_cap: v38, old_ptr: v9, len: v15) -> __ptr u8 hp { + aloc new_cap + mcp hp old_ptr len + } + br block0(v39, v38) + } + + pub fn new_5(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !105 { + local mut { ptr, u64, u64 } __aggr_memcpy_0 + local { ptr, u64, u64 } __anon_0 + local { { ptr, u64, u64 } } __anon_1 + + entry(__ret_value: __ptr { { ptr, u64, u64 } }): + v0 = const u64 1024 + v1 = asm(cap: v0) -> ptr hp { + aloc cap + } + v2 = get_local __ptr { ptr, u64, u64 }, __anon_0 + v3 = const u64 0 + v4 = get_elem_ptr v2, __ptr ptr, v3 + store v1 to v4 + v5 = const u64 1 + v6 = get_elem_ptr v2, __ptr u64, v5 + store v0 to v6 + v7 = const u64 2 + v8 = get_elem_ptr v2, __ptr u64, v7 + v9 = const u64 0 + store v9 to v8 + v10 = asm(buffer: v2) -> __ptr { ptr, u64, u64 } buffer { + } + v11 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v11, v10 + v12 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !106 + v13 = const u64 0 + v14 = get_elem_ptr v12, __ptr { ptr, u64, u64 }, v13 + mem_copy_val v14, v11 + mem_copy_val __ret_value, v12 + v15 = const unit () + ret () v15 + } + + pub fn as_raw_slice_6(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice) -> (), !109 { + local mut slice __aggr_memcpy_00 + local { ptr, u64 } __anon_1 + local { { ptr, u64, u64 } } self_ + + entry(self: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr slice): + v0 = get_local __ptr { { ptr, u64, u64 } }, self_ + mem_copy_val v0, self + v1 = get_local __ptr { { ptr, u64, u64 } }, self_, !110 + v2 = const u64 0 + v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !101 + v4 = asm(buffer: v3) -> __ptr { ptr, u64, u64 } buffer { + } + v5 = const u64 0 + v6 = get_elem_ptr v4, __ptr ptr, v5 + v7 = load v6 + v8 = const u64 2 + v9 = get_elem_ptr v4, __ptr u64, v8 + v10 = load v9 + v11 = get_local __ptr { ptr, u64 }, __anon_1 + v12 = const u64 0 + v13 = get_elem_ptr v11, __ptr ptr, v12 + store v7 to v13 + v14 = const u64 1 + v15 = get_elem_ptr v11, __ptr u64, v14 + store v10 to v15 + v16 = asm(s: v11) -> __ptr slice s { + } + v17 = get_local __ptr slice, __aggr_memcpy_00 + mem_copy_val v17, v16 + mem_copy_val __ret_value, v17 + v18 = const unit () + ret () v18 + } + + pub fn push_11(self !111: __ptr { { ptr, u64 }, u64 }, value !112: u64) -> (), !115 { + entry(self: __ptr { { ptr, u64 }, u64 }, value: u64): + v0 = const u64 1 + v1 = get_elem_ptr self, __ptr u64, v0, !116 + v2 = load v1 + v3 = const u64 0 + v4 = get_elem_ptr self, __ptr { ptr, u64 }, v3, !117 + v5 = const u64 1 + v6 = get_elem_ptr v4, __ptr u64, v5, !118 + v7 = load v6 + v8 = cmp eq v2 v7, !121 + cbr v8, block0(), block2(), !119 + + block0(): + v9 = load v6, !124 + v10 = const u64 0, !125 + v11 = cmp eq v9 v10, !128 + v12 = const u64 1, !129 + cbr v11, grow_12_block2(v12), grow_12_block1(), !130 + + grow_12_block1(): + v13 = load v6, !124 + v14 = const u64 2, !131 + v15 = mul v14, v13, !134 + br grow_12_block2(v15), !124 + + grow_12_block2(v16: u64): + v17 = const u64 0 + v18 = get_elem_ptr v4, __ptr ptr, v17, !136 + v19 = load v18, !124 + v20 = load v6, !124 + v21 = cmp gt v16 v20, !141 + cbr v21, grow_12_realloc_13_block0(), grow_12_realloc_13_block5(v19), !142 + + grow_12_realloc_13_block0(): + v22 = const u64 8 + v23 = mul v22, v16, !145 + v24 = asm(size: v23, ptr) -> ptr ptr, !146 { + aloc size, !36 + move ptr hp, !37 + } + v25 = const u64 0, !147 + v26 = cmp gt v20 v25, !150 + cbr v26, grow_12_realloc_13_block1(), grow_12_realloc_13_block5(v24), !151 + + grow_12_realloc_13_block1(): + v27 = const u64 8 + v28 = mul v20, v27, !157 + v29 = asm(dst: v24, src: v19, len: v28) -> (), !159 { + mcp dst src len, !160 + } + br grow_12_realloc_13_block5(v24), !161 + + grow_12_realloc_13_block5(v30: ptr): + store v30 to v18, !163 + store v16 to v6, !165 + br block2() + + block2(): + v31 = const u64 0 + v32 = get_elem_ptr v4, __ptr ptr, v31, !135 + v33 = load v32 + v34 = load v1 + v35 = const u64 8 + v36 = mul v35, v34, !168 + v37 = add v33, v36, !168 + v38 = asm(ptr: v37, val: value) -> (), !172 { + sw ptr val i0, !173 + } + v39 = load v1 + v40 = const u64 1, !174 + v41 = add v39, v40, !177 + store v41 to v1, !175 + v42 = const unit () + ret () v42 + } + + fn local_log_19(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }) -> (), !178 { + local mut { ptr, u64, u64 } __aggr_memcpy_0 + local mut { ptr, u64, u64 } __aggr_memcpy_00 + local mut { ptr, u64, u64 } __aggr_memcpy_01 + local mut { ptr, u64, u64 } __aggr_memcpy_010 + local mut { ptr, u64, u64 } __aggr_memcpy_02 + local mut { ptr, u64, u64 } __aggr_memcpy_03 + local mut { ptr, u64, u64 } __aggr_memcpy_04 + local mut { ptr, u64, u64 } __aggr_memcpy_05 + local mut { u64, u64 } __aggr_memcpy_06 + local mut slice __aggr_memcpy_07 + local mut { ptr, u64, u64 } __aggr_memcpy_08 + local mut { ptr, u64, u64 } __aggr_memcpy_09 + local { ptr, u64, u64 } __anon_00 + local { ptr, u64, u64 } __anon_000 + local { ptr, u64, u64 } __anon_01 + local { ptr, u64, u64 } __anon_02 + local { ptr, u64, u64 } __anon_03 + local u64 __anon_1 + local u64 __anon_10 + local { ptr, u64, u64 } __anon_11 + local { u64, u64 } __anon_12 + local u256 __anon_13 + local { ptr, u64, u64 } __anon_2 + local { ptr, u64, u64 } __anon_20 + local { { ptr, u64, u64 } } __anon_21 + local slice __anon_22 + local { ptr, u64, u64 } __anon_23 + local { { ptr, u64, u64 } } __anon_3 + local { { ptr, u64, u64 } } __anon_30 + local { ptr, u64, u64 } __anon_31 + local { { ptr, u64, u64 } } __anon_32 + local { { ptr, u64, u64 } } __anon_4 + local slice __log_arg + local { { ptr, u64, u64 } } __ret_val + local { { ptr, u64, u64 } } __ret_val0 + local { { ptr, u64, u64 } } __ret_val1 + local { { ptr, u64, u64 } } __ret_val2 + local slice __ret_val3 + local { { ptr, u64, u64 } } __tmp_arg + local { { ptr, u64, u64 } } __tmp_arg0 + local { { ptr, u64, u64 } } __tmp_arg1 + local { { ptr, u64, u64 } } __tmp_arg2 + local { { ptr, u64, u64 } } buffer + local { { ptr, u64, u64 } } buffer_ + local { { ptr, u64, u64 } } buffer_0 + local { { ptr, u64, u64 } } buffer_1 + local { { ptr, u64, u64 } } buffer_2 + local { { ptr, u64, u64 } } buffer_3 + local { { ptr, u64, u64 } } buffer_4 + local { { ptr, u64, u64 } } buffer_5 + local { { ptr, u64, u64 } } buffer__ + local mut { { ptr, u64, u64 } } buffer__0 + local { { ptr, u64, u64 } } buffer___ + local { { ptr, u64, u64 } } buffer____ + local { { ptr, u64, u64 } } buffer_____ + local { { ptr, u64, u64 } } buffer______ + local { { ptr, u64, u64 } } buffer_______ + local { { ptr, u64, u64 } } buffer________ + local { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 } item_ + local { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 } item_0 + local { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 } self_0 + local { { ptr, u64 }, u64 } self_10 + local { { ptr, u64 }, u64 } self_3 + local slice self_4 + local u256 self_5 + + entry(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }): + v0 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ + mem_copy_val v0, item + v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !83 + v2 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !83 + mem_copy_val v2, v1 + v3 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_0, !180 + v4 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v5 = call new_5(v4) + v6 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !183 + mem_copy_val v6, v3 + v7 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !184 + mem_copy_val v7, v4 + v8 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !186 + v9 = const u64 0 + v10 = get_elem_ptr v8, __ptr u64, v9, !188 + v11 = load v10, !189 + v12 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !191 + v13 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v13, v12 + v14 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v15 = call abi_encode_4(v11, v13, v14) + v16 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 + mem_copy_val v16, v14 + v17 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !195 + v18 = const u64 1 + v19 = get_elem_ptr v17, __ptr u64, v18, !197 + v20 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !199 + v21 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !202 + mem_copy_val v21, v20 + v22 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !204 + v23 = const u64 0 + v24 = get_elem_ptr v22, __ptr { ptr, u64, u64 }, v23, !205 + v25 = asm(buffer: v24) -> __ptr { ptr, u64, u64 } buffer { + } + v26 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v26, v25 + v27 = get_local __ptr { ptr, u64, u64 }, __anon_00, !206 + mem_copy_val v27, v26 + v28 = const u64 0 + v29 = get_elem_ptr v27, __ptr ptr, v28, !207 + v30 = load v29, !208 + v31 = const u64 1 + v32 = get_elem_ptr v27, __ptr u64, v31, !209 + v33 = load v32, !210 + v34 = const u64 2 + v35 = get_elem_ptr v27, __ptr u64, v34, !211 + v36 = load v35, !212 + v37 = const u64 4 + v38 = add v36, v37, !213 + v39 = cmp gt v38 v33, !214 + cbr v39, encode_20_abi_encode_21_abi_encode_22_block1(), encode_20_abi_encode_21_abi_encode_22_block0(v30, v33), !215 + + encode_20_abi_encode_21_abi_encode_22_block0(v40: ptr, v41: u64): + v42 = get_local __ptr u64, __anon_1, !216 + mem_copy_val v42, v19 + v43 = const u64 4 + v44 = add v42, v43, !217 + v45 = cast_ptr v44 to __ptr u8, !218 + v46 = add v40, v36, !219 + v47 = cast_ptr v46 to __ptr u8, !220 + mem_copy_bytes v47, v45, 4, !221 + v48 = get_local __ptr { ptr, u64, u64 }, __anon_2, !222 + v49 = const u64 0 + v50 = get_elem_ptr v48, __ptr ptr, v49, !223 + store v40 to v50, !224 + v51 = const u64 1 + v52 = get_elem_ptr v48, __ptr u64, v51, !225 + store v41 to v52, !226 + v53 = const u64 2 + v54 = get_elem_ptr v48, __ptr u64, v53, !227 + store v38 to v54, !228 + v55 = asm(buffer: v48) -> __ptr { ptr, u64, u64 } buffer { + } + v56 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v56, v55 + v57 = get_local __ptr { { ptr, u64, u64 } }, __anon_3, !230 + v58 = const u64 0 + v59 = get_elem_ptr v57, __ptr { ptr, u64, u64 }, v58, !231 + mem_copy_val v59, v56 + v60 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !233 + mem_copy_val v60, v57 + v61 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !235 + v62 = const u64 2 + v63 = get_elem_ptr v61, __ptr u64, v62, !237 + v64 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !239 + v65 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !242 + mem_copy_val v65, v64 + v66 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !244 + v67 = const u64 0 + v68 = get_elem_ptr v66, __ptr { ptr, u64, u64 }, v67, !245 + v69 = asm(buffer: v68) -> __ptr { ptr, u64, u64 } buffer { + } + v70 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v70, v69 + v71 = get_local __ptr { ptr, u64, u64 }, __anon_000, !246 + mem_copy_val v71, v70 + v72 = const u64 0 + v73 = get_elem_ptr v71, __ptr ptr, v72, !247 + v74 = load v73, !248 + v75 = const u64 1 + v76 = get_elem_ptr v71, __ptr u64, v75, !249 + v77 = load v76, !250 + v78 = const u64 2 + v79 = get_elem_ptr v71, __ptr u64, v78, !251 + v80 = load v79, !252 + v81 = const u64 2 + v82 = add v80, v81, !253 + v83 = cmp gt v82 v77, !254 + cbr v83, encode_20_abi_encode_21_abi_encode_23_block1(), encode_20_abi_encode_21_abi_encode_23_block0(v74, v77), !255 + + encode_20_abi_encode_21_abi_encode_22_block1(): + v84 = const u64 2 + v85 = mul v33, v84, !256 + v86 = add v85, v37, !257 + v87 = asm(new_cap: v86, old_ptr: v30, len: v36) -> __ptr u8 hp, !258 { + aloc new_cap + mcp hp old_ptr len + } + br encode_20_abi_encode_21_abi_encode_22_block0(v87, v86), !259 + + encode_20_abi_encode_21_abi_encode_23_block0(v88: ptr, v89: u64): + v90 = get_local __ptr u64, __anon_10, !260 + mem_copy_val v90, v63 + v91 = const u64 6 + v92 = add v90, v91, !261 + v93 = cast_ptr v92 to __ptr u8, !262 + v94 = add v88, v80, !263 + v95 = cast_ptr v94 to __ptr u8, !264 + mem_copy_bytes v95, v93, 2, !265 + v96 = get_local __ptr { ptr, u64, u64 }, __anon_20, !266 + v97 = const u64 0 + v98 = get_elem_ptr v96, __ptr ptr, v97, !267 + store v88 to v98, !268 + v99 = const u64 1 + v100 = get_elem_ptr v96, __ptr u64, v99, !269 + store v89 to v100, !270 + v101 = const u64 2 + v102 = get_elem_ptr v96, __ptr u64, v101, !271 + store v82 to v102, !272 + v103 = asm(buffer: v96) -> __ptr { ptr, u64, u64 } buffer { + } + v104 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 + mem_copy_val v104, v103 + v105 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !274 + v106 = const u64 0 + v107 = get_elem_ptr v105, __ptr { ptr, u64, u64 }, v106, !275 + mem_copy_val v107, v104 + v108 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !277 + mem_copy_val v108, v105 + v109 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !279 + v110 = const u64 3 + v111 = get_elem_ptr v109, __ptr u8, v110, !281 + v112 = load v111, !282 + v113 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !284 + v114 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !287 + mem_copy_val v114, v113 + v115 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !289 + v116 = const u64 0 + v117 = get_elem_ptr v115, __ptr { ptr, u64, u64 }, v116, !290 + v118 = asm(buffer: v117) -> __ptr { ptr, u64, u64 } buffer { + } + v119 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 + mem_copy_val v119, v118 + v120 = get_local __ptr { ptr, u64, u64 }, __anon_01, !291 + mem_copy_val v120, v119 + v121 = const u64 0 + v122 = get_elem_ptr v120, __ptr ptr, v121, !292 + v123 = load v122, !293 + v124 = const u64 1 + v125 = get_elem_ptr v120, __ptr u64, v124, !294 + v126 = load v125, !295 + v127 = const u64 2 + v128 = get_elem_ptr v120, __ptr u64, v127, !296 + v129 = load v128, !297 + v130 = const u64 1 + v131 = add v129, v130, !298 + v132 = cmp gt v131 v126, !299 + cbr v132, encode_20_abi_encode_21_abi_encode_24_block1(), encode_20_abi_encode_21_abi_encode_24_block0(v123, v126), !300 + + encode_20_abi_encode_21_abi_encode_23_block1(): + v133 = const u64 2 + v134 = mul v77, v133, !301 + v135 = add v134, v81, !302 + v136 = asm(new_cap: v135, old_ptr: v74, len: v80) -> __ptr u8 hp, !303 { + aloc new_cap + mcp hp old_ptr len + } + br encode_20_abi_encode_21_abi_encode_23_block0(v136, v135), !304 + + encode_20_abi_encode_21_abi_encode_24_block0(v137: ptr, v138: u64): + v139 = add v137, v129, !305 + v140 = cast_ptr v139 to __ptr u8, !306 + store v112 to v140, !307 + v141 = get_local __ptr { ptr, u64, u64 }, __anon_11, !308 + v142 = const u64 0 + v143 = get_elem_ptr v141, __ptr ptr, v142, !309 + store v137 to v143, !310 + v144 = const u64 1 + v145 = get_elem_ptr v141, __ptr u64, v144, !311 + store v138 to v145, !312 + v146 = const u64 2 + v147 = get_elem_ptr v141, __ptr u64, v146, !313 + store v131 to v147, !314 + v148 = asm(buffer: v141) -> __ptr { ptr, u64, u64 } buffer { + } + v149 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 + mem_copy_val v149, v148 + v150 = get_local __ptr { { ptr, u64, u64 } }, __anon_21, !316 + v151 = const u64 0 + v152 = get_elem_ptr v150, __ptr { ptr, u64, u64 }, v151, !317 + mem_copy_val v152, v149 + v153 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !319 + mem_copy_val v153, v150 + v154 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !321 + v155 = const u64 4 + v156 = get_elem_ptr v154, __ptr { { ptr, u64 }, u64 }, v155, !323 + v157 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !325 + v158 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !328 + mem_copy_val v158, v156 + v159 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !329 + mem_copy_val v159, v157 + v160 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !331 + v161 = const u64 1 + v162 = get_elem_ptr v160, __ptr u64, v161, !332 + v163 = load v162, !333 + v164 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !335 + v165 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v165, v164 + v166 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v167 = call abi_encode_4(v163, v165, v166) + v168 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !337 + mem_copy_val v168, v166 + v169 = const u64 0, !338 + br encode_20_abi_encode_21_abi_encode_25_while(v169), !339 + + encode_20_abi_encode_21_abi_encode_24_block1(): + v170 = const u64 2 + v171 = mul v126, v170, !340 + v172 = add v171, v130, !341 + v173 = asm(new_cap: v172, old_ptr: v123, len: v129) -> __ptr u8 hp, !342 { + aloc new_cap + mcp hp old_ptr len + } + br encode_20_abi_encode_21_abi_encode_24_block0(v173, v172), !343 + + encode_20_abi_encode_21_abi_encode_25_while(v174: u64): + v175 = cmp lt v174 v163, !346 + cbr v175, encode_20_abi_encode_21_abi_encode_25_while_body(), encode_20_abi_encode_21_abi_encode_25_end_while(), !347 + + encode_20_abi_encode_21_abi_encode_25_while_body(): + v176 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !349 + v177 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !352 + mem_copy_val v177, v176 + v178 = get_local __ptr { { ptr, u64 }, u64 }, self_10, !354 + v179 = const u64 0 + v180 = get_elem_ptr v178, __ptr { ptr, u64 }, v179, !355 + v181 = const u64 0 + v182 = get_elem_ptr v180, __ptr ptr, v181, !356 + v183 = load v182, !357 + v184 = const u64 8 + v185 = mul v184, v174, !360 + v186 = add v183, v185, !361 + v187 = asm(ptr: v186, val) -> u64 val, !365 { + lw val ptr i0, !366 + } + v188 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !368 + v189 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v189, v188 + v190 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v191 = call abi_encode_4(v187, v189, v190) + v192 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !370 + mem_copy_val v192, v190 + v193 = const u64 1, !371 + v194 = add v174, v193, !374 + br encode_20_abi_encode_21_abi_encode_25_while(v194), !375 + + encode_20_abi_encode_21_abi_encode_25_end_while(): + v195 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !377 + v196 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !379 + mem_copy_val v196, v195 + v197 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !381 + v198 = const u64 5 + v199 = get_elem_ptr v197, __ptr slice, v198, !383 + v200 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !385 + v201 = get_local __ptr slice, self_4, !388 + mem_copy_val v201, v199 + v202 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !389 + mem_copy_val v202, v200 + v203 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !391 + v204 = const u64 0 + v205 = get_elem_ptr v203, __ptr { ptr, u64, u64 }, v204, !392 + v206 = asm(buffer: v205) -> __ptr { ptr, u64, u64 } buffer { + } + v207 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 + mem_copy_val v207, v206 + v208 = get_local __ptr { ptr, u64, u64 }, __anon_02, !393 + mem_copy_val v208, v207 + v209 = const u64 0 + v210 = get_elem_ptr v208, __ptr ptr, v209, !394 + v211 = load v210, !395 + v212 = const u64 1 + v213 = get_elem_ptr v208, __ptr u64, v212, !396 + v214 = load v213, !397 + v215 = const u64 2 + v216 = get_elem_ptr v208, __ptr u64, v215, !398 + v217 = load v216, !399 + v218 = get_local __ptr slice, self_4, !401 + v219 = get_local __ptr slice, __aggr_memcpy_07 + mem_copy_val v219, v218 + v220 = asm(item: v218) -> __ptr { u64, u64 } item { + } + v221 = get_local __ptr { u64, u64 }, __aggr_memcpy_06 + mem_copy_val v221, v220 + v222 = get_local __ptr { u64, u64 }, __anon_12, !402 + mem_copy_val v222, v221 + v223 = const u64 1 + v224 = get_elem_ptr v222, __ptr u64, v223, !403 + v225 = load v224, !404 + v226 = const u64 8 + v227 = add v225, v226, !405 + v228 = add v217, v227, !406 + v229 = cmp gt v228 v214, !407 + cbr v229, encode_20_abi_encode_21_abi_encode_29_block1(), encode_20_abi_encode_21_abi_encode_29_block0(v211, v214), !408 + + encode_20_abi_encode_21_abi_encode_29_block0(v230: ptr, v231: u64): + v232 = get_local __ptr slice, __anon_22, !409 + mem_copy_val v232, v219 + v233 = add v230, v217, !410 + v234 = cast_ptr v233 to __ptr u8, !411 + v235 = asm(item_ptr: v232, len: v217, addr: v234, data_ptr, item_len, new_len) -> u64 new_len, !412 { + lw item_len item_ptr i1 + sw addr item_len i0 + addi addr addr i8 + lw data_ptr item_ptr i0 + mcp addr data_ptr item_len + addi new_len len i8 + add new_len new_len item_len + } + v236 = get_local __ptr { ptr, u64, u64 }, __anon_31, !413 + v237 = const u64 0 + v238 = get_elem_ptr v236, __ptr ptr, v237, !414 + store v230 to v238, !415 + v239 = const u64 1 + v240 = get_elem_ptr v236, __ptr u64, v239, !416 + store v231 to v240, !417 + v241 = const u64 2 + v242 = get_elem_ptr v236, __ptr u64, v241, !418 + store v235 to v242, !419 + v243 = asm(buffer: v236) -> __ptr { ptr, u64, u64 } buffer { + } + v244 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_08 + mem_copy_val v244, v243 + v245 = get_local __ptr { { ptr, u64, u64 } }, __anon_4, !421 + v246 = const u64 0 + v247 = get_elem_ptr v245, __ptr { ptr, u64, u64 }, v246, !422 + mem_copy_val v247, v244 + v248 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !424 + mem_copy_val v248, v245 + v249 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !426 + v250 = const u64 6 + v251 = get_elem_ptr v249, __ptr u256, v250, !428 + v252 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !430 + v253 = get_local __ptr u256, self_5, !433 + mem_copy_val v253, v251 + v254 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !434 + mem_copy_val v254, v252 + v255 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !436 + v256 = const u64 0 + v257 = get_elem_ptr v255, __ptr { ptr, u64, u64 }, v256, !437 + v258 = asm(buffer: v257) -> __ptr { ptr, u64, u64 } buffer { + } + v259 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_09 + mem_copy_val v259, v258 + v260 = get_local __ptr { ptr, u64, u64 }, __anon_03, !438 + mem_copy_val v260, v259 + v261 = const u64 0 + v262 = get_elem_ptr v260, __ptr ptr, v261, !439 + v263 = load v262, !440 + v264 = const u64 1 + v265 = get_elem_ptr v260, __ptr u64, v264, !441 + v266 = load v265, !442 + v267 = const u64 2 + v268 = get_elem_ptr v260, __ptr u64, v267, !443 + v269 = load v268, !444 + v270 = get_local __ptr u256, self_5, !446 + v271 = const u64 32 + v272 = add v269, v271, !447 + v273 = cmp gt v272 v266, !448 + cbr v273, encode_20_abi_encode_21_abi_encode_30_block1(), encode_20_abi_encode_21_abi_encode_30_block0(v263, v266), !449 + + encode_20_abi_encode_21_abi_encode_29_block1(): + v274 = const u64 2 + v275 = mul v214, v274, !450 + v276 = add v275, v227, !451 + v277 = asm(new_cap: v276, old_ptr: v211, len: v217) -> __ptr u8 hp, !452 { + aloc new_cap + mcp hp old_ptr len + } + br encode_20_abi_encode_21_abi_encode_29_block0(v277, v276), !453 + + encode_20_abi_encode_21_abi_encode_30_block0(v278: ptr, v279: u64): + v280 = get_local __ptr u256, __anon_13, !454 + mem_copy_val v280, v270 + v281 = add v278, v269, !455 + v282 = cast_ptr v281 to __ptr u8, !456 + mem_copy_bytes v282, v280, 32, !457 + v283 = get_local __ptr { ptr, u64, u64 }, __anon_23, !458 + v284 = const u64 0 + v285 = get_elem_ptr v283, __ptr ptr, v284, !459 + store v278 to v285, !460 + v286 = const u64 1 + v287 = get_elem_ptr v283, __ptr u64, v286, !461 + store v279 to v287, !462 + v288 = const u64 2 + v289 = get_elem_ptr v283, __ptr u64, v288, !463 + store v272 to v289, !464 + v290 = asm(buffer: v283) -> __ptr { ptr, u64, u64 } buffer { + } + v291 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 + mem_copy_val v291, v290 + v292 = get_local __ptr { { ptr, u64, u64 } }, __anon_32, !466 + v293 = const u64 0 + v294 = get_elem_ptr v292, __ptr { ptr, u64, u64 }, v293, !467 + mem_copy_val v294, v291 + v295 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !469 + mem_copy_val v295, v292 + v296 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !471 + v297 = get_local __ptr { { ptr, u64, u64 } }, buffer, !473 + mem_copy_val v297, v296 + v298 = get_local __ptr { { ptr, u64, u64 } }, buffer, !475 + v299 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 + mem_copy_val v299, v298 + v300 = get_local __ptr slice, __ret_val3 + v301 = call as_raw_slice_6(v299, v300) + v302 = get_local __ptr slice, __log_arg + mem_copy_val v302, v300 + v303 = const u64 4579537983717831593 + log __ptr slice v302, v303 + v304 = const unit () + ret () v304 + + encode_20_abi_encode_21_abi_encode_30_block1(): + v305 = const u64 2 + v306 = mul v266, v305, !476 + v307 = add v306, v271, !477 + v308 = asm(new_cap: v307, old_ptr: v263, len: v269) -> __ptr u8 hp, !478 { + aloc new_cap + mcp hp old_ptr len + } + br encode_20_abi_encode_21_abi_encode_30_block0(v308, v307), !479 + } + + fn local_log_32(item: __ptr { u64 }) -> (), !480 { + local mut slice __aggr_memcpy_0 + local { ptr, u64 } __anon_0 + local slice __log_arg + local { u64 } item_ + local { u64 } item_0 + + entry(item: __ptr { u64 }): + v0 = get_local __ptr { u64 }, item_ + mem_copy_val v0, item + v1 = get_local __ptr { u64 }, item_, !83 + v2 = get_local __ptr { u64 }, item_0, !83 + mem_copy_val v2, v1 + v3 = get_local __ptr { u64 }, item_0, !481 + v4 = const u64 8 + v5 = asm(size: v4, src: v3) -> ptr hp, !482 { + aloc size, !88 + mcp hp src size, !89 + } + v6 = get_local __ptr { ptr, u64 }, __anon_0, !483 + v7 = const u64 0 + v8 = get_elem_ptr v6, __ptr ptr, v7, !484 + store v5 to v8, !485 + v9 = const u64 1 + v10 = get_elem_ptr v6, __ptr u64, v9, !486 + store v4 to v10, !487 + v11 = asm(s: v6) -> __ptr slice s { + } + v12 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v12, v11 + v13 = get_local __ptr slice, __log_arg + mem_copy_val v13, v12 + v14 = const u64 16566583104751091389 + log __ptr slice v13, v14 + v15 = const unit () + ret () v15 + } + + pub fn abi_encode_34(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !490 { + entry(self: __ptr { u64 }, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): + v0 = const u64 0 + v1 = get_elem_ptr self, __ptr u64, v0, !491 + v2 = load v1 + v3 = call abi_encode_4(v2, buffer, __ret_value) + v4 = const unit () + ret () v4 + } + + fn local_log_35(item: __ptr { u64, ( { u64 } | () ) }) -> (), !492 { + local slice __log_arg + local { u64, ( { u64 } | () ) } __matched_value_1 + local { { ptr, u64, u64 } } __tmp_block_arg + local { { ptr, u64, u64 } } buffer_ + local { { ptr, u64, u64 } } buffer__ + + entry(item: __ptr { u64, ( { u64 } | () ) }): + v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + v1 = call new_5(v0) + v2 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !494 + mem_copy_val v2, item + v3 = const u64 0 + v4 = get_elem_ptr item, __ptr u64, v3 + v5 = load v4, !495 + v6 = const u64 0, !496 + v7 = cmp eq v5 v6, !499 + cbr v7, encode_36_abi_encode_37_block0(), encode_36_abi_encode_37_block1(), !500 + + encode_36_abi_encode_37_block0(): + v8 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !501 + v9 = const u64 1 + v10 = const u64 0 + v11 = get_elem_ptr v8, __ptr { u64 }, v9, v10, !502 + v12 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !504 + v13 = get_local __ptr { { ptr, u64, u64 } }, buffer__ + v14 = const u64 0, !505 + v15 = call abi_encode_4(v14, v12, v13) + v16 = get_local __ptr { { ptr, u64, u64 } }, buffer__ + v17 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + v18 = call abi_encode_34(v11, v16, v17) + v19 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + br encode_36_abi_encode_37_block5(v19), !506 + + encode_36_abi_encode_37_block1(): + v20 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !507 + v21 = const u64 0 + v22 = get_elem_ptr v20, __ptr u64, v21, !508 + v23 = load v22, !509 + v24 = const u64 1, !496 + v25 = cmp eq v23 v24, !512 + cbr v25, encode_36_abi_encode_37_block2(), encode_36_abi_encode_37_block3(), !513 + + encode_36_abi_encode_37_block2(): + v26 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !515 + v27 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + v28 = const u64 1, !516 + v29 = call abi_encode_4(v28, v26, v27) + v30 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + br encode_36_abi_encode_37_block5(v30), !517 + + encode_36_abi_encode_37_block3(): + v31 = const u64 14757395258967588866, !493 + revert v31, !518 + + encode_36_abi_encode_37_block5(v32: __ptr { { ptr, u64, u64 } }): + v33 = get_local __ptr slice, __log_arg + v34 = call as_raw_slice_6(v32, v33) + v35 = get_local __ptr slice, __log_arg + v36 = const u64 5087777005172090899 + log __ptr slice v35, v36 + v37 = const unit () + ret () v37 + } + + fn local_log_38(item: __ptr { }) -> (), !519 { + local mut slice __aggr_memcpy_0 + local { ptr, u64 } __anon_0 + local slice __log_arg + local { } item_ + local { } item_0 + + entry(item: __ptr { }): + v0 = get_local __ptr { }, item_ + mem_copy_val v0, item + v1 = get_local __ptr { }, item_, !83 + v2 = get_local __ptr { }, item_0, !83 + mem_copy_val v2, v1 + v3 = get_local __ptr { }, item_0, !520 + v4 = const u64 0 + v5 = asm(size: v4, src: v3) -> ptr hp, !521 { + aloc size, !88 + mcp hp src size, !89 + } + v6 = get_local __ptr { ptr, u64 }, __anon_0, !522 + v7 = const u64 0 + v8 = get_elem_ptr v6, __ptr ptr, v7, !523 + store v5 to v8, !524 + v9 = const u64 1 + v10 = get_elem_ptr v6, __ptr u64, v9, !525 + store v4 to v10, !526 + v11 = asm(s: v6) -> __ptr slice s { + } + v12 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v12, v11 + v13 = get_local __ptr slice, __log_arg + mem_copy_val v13, v12 + v14 = const u64 5555909392781521367 + log __ptr slice v13, v14 + v15 = const unit () + ret () v15 + } +} + +!0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main..sw" +!1 = span !0 0 130 +!2 = fn_name_span !0 7 14 +!3 = (!1 !2) +!4 = span !0 59 65 +!5 = fn_call_path_span !0 59 63 +!6 = (!4 !5) +!7 = span !0 83 116 +!8 = fn_call_path_span !0 83 100 +!9 = (!7 !8) +!10 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/codec.sw" +!11 = span !10 71584 71588 +!12 = (!7 !8 !11) +!13 = span !10 71568 71595 +!14 = (!7 !8 !13) +!15 = "test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw" +!16 = span !15 549 954 +!17 = fn_name_span !15 552 556 +!18 = (!16 !17) +!19 = span !15 582 586 +!20 = span !15 572 587 +!21 = fn_call_path_span !15 572 581 +!22 = (!20 !21) +!23 = span !15 606 616 +!24 = fn_call_path_span !15 606 614 +!25 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/vec.sw" +!26 = span !25 4111 4124 +!27 = fn_call_path_span !25 4111 4122 +!28 = span !25 774 787 +!29 = fn_call_path_span !25 774 779 +!30 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/alloc.sw" +!31 = span !30 1787 1811 +!32 = fn_call_path_span !30 1804 1805 +!33 = (!23 !24 !26 !27 !28 !29 !31 !32) +!34 = span !30 1777 1886 +!35 = (!23 !24 !26 !27 !28 !29 !34) +!36 = span !30 1828 1837 +!37 = span !30 1847 1858 +!38 = span !25 750 818 +!39 = (!23 !24 !26 !27 !38) +!40 = (!23 !24 !26 !27) +!41 = (!23 !24 !26 !27 !38) +!42 = (!23 !24 !26 !27) +!43 = span !25 806 807 +!44 = (!23 !24 !26 !27 !38) +!45 = span !25 4087 4155 +!46 = (!23 !24 !45) +!47 = (!23 !24) +!48 = span !25 4143 4144 +!49 = (!23 !24 !45) +!50 = span !15 622 623 +!51 = span !15 629 630 +!52 = span !15 622 631 +!53 = fn_call_path_span !15 624 628 +!54 = (!52 !53) +!55 = span !15 637 638 +!56 = span !15 644 645 +!57 = span !15 637 646 +!58 = fn_call_path_span !15 639 643 +!59 = (!57 !58) +!60 = span !15 652 653 +!61 = span !15 659 660 +!62 = span !15 652 661 +!63 = fn_call_path_span !15 654 658 +!64 = (!62 !63) +!65 = span !15 745 746 +!66 = span !15 759 765 +!67 = span !15 678 795 +!68 = span !15 692 693 +!69 = span !15 706 707 +!70 = span !15 720 721 +!71 = span !15 734 735 +!72 = span !15 812 838 +!73 = span !15 828 832 +!74 = span !15 203 239 +!75 = span !15 860 886 +!76 = span !15 876 880 +!77 = span !15 951 952 +!78 = span !15 499 503 +!79 = span !15 483 547 +!80 = fn_name_span !15 486 495 +!81 = inline "never" +!82 = (!79 !80 !81) +!83 = span !15 539 543 +!84 = span !10 71080 71084 +!85 = (!83 !84) +!86 = span !10 71058 71173 +!87 = (!83 !86) +!88 = span !10 71100 71109 +!89 = span !10 71123 71138 +!90 = span !10 71190 71201 +!91 = (!83 !90) +!92 = (!83 !90) +!93 = (!83 !90) +!94 = (!83 !90) +!95 = (!83 !90) +!96 = span !10 4732 4736 +!97 = span !10 4718 4863 +!98 = fn_name_span !10 4721 4731 +!99 = (!97 !98) +!100 = span !10 4826 4832 +!101 = span !10 87 114 +!102 = span !10 4774 4857 +!103 = span !10 160 260 +!104 = fn_name_span !10 167 170 +!105 = (!103 !104) +!106 = span !10 191 254 +!107 = span !10 499 591 +!108 = fn_name_span !10 502 514 +!109 = (!107 !108) +!110 = span !10 573 577 +!111 = span !25 5760 5764 +!112 = span !25 5766 5771 +!113 = span !25 5740 6205 +!114 = fn_name_span !25 5747 5751 +!115 = (!113 !114) +!116 = span !25 3543 3551 +!117 = span !25 3523 3537 +!118 = span !25 375 383 +!119 = span !25 5852 5876 +!120 = fn_call_path_span !25 5861 5863 +!121 = (!119 !120) +!122 = span !25 5891 5906 +!123 = fn_call_path_span !25 5900 5904 +!124 = (!122 !123) +!125 = span !25 2990 2991 +!126 = span !25 2978 2991 +!127 = fn_call_path_span !25 2987 2989 +!128 = (!122 !123 !126 !127) +!129 = span !25 2994 2995 +!130 = (!122 !123 !126) +!131 = span !25 3005 3006 +!132 = span !25 3005 3017 +!133 = fn_call_path_span !25 3007 3008 +!134 = (!122 !123 !132 !133) +!135 = span !25 357 369 +!136 = (!122 !123 !135) +!137 = span !25 3041 3082 +!138 = fn_call_path_span !25 3041 3048 +!139 = span !30 2668 2685 +!140 = fn_call_path_span !30 2678 2679 +!141 = (!122 !123 !137 !138 !139 !140) +!142 = (!122 !123 !137 !138 !139) +!143 = span !30 2710 2731 +!144 = fn_call_path_span !30 2710 2715 +!145 = (!122 !123 !137 !138 !143 !144 !31 !32) +!146 = (!122 !123 !137 !138 !143 !144 !34) +!147 = span !30 2752 2753 +!148 = span !30 2744 2753 +!149 = fn_call_path_span !30 2750 2751 +!150 = (!122 !123 !137 !138 !148 !149) +!151 = (!122 !123 !137 !138 !148) +!152 = span !30 2768 2800 +!153 = fn_call_path_span !30 2772 2779 +!154 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" +!155 = span !154 3413 3437 +!156 = fn_call_path_span !154 3419 3420 +!157 = (!122 !123 !137 !138 !152 !153 !155 !156) +!158 = span !154 3447 3522 +!159 = (!122 !123 !137 !138 !152 !153 !158) +!160 = span !154 3496 3511 +!161 = (!122 !123 !137 !138) +!162 = span !25 3030 3082 +!163 = (!122 !123 !162) +!164 = span !25 3092 3110 +!165 = (!122 !123 !164) +!166 = span !25 6040 6071 +!167 = fn_call_path_span !25 6053 6056 +!168 = (!166 !167) +!169 = span !25 6124 6145 +!170 = fn_call_path_span !25 6128 6133 +!171 = span !154 4228 4299 +!172 = (!169 !170 !171) +!173 = span !154 4271 4284 +!174 = span !25 6197 6198 +!175 = span !25 6185 6198 +!176 = fn_call_path_span !25 6194 6196 +!177 = (!175 !176) +!178 = (!79 !80 !81) +!179 = span !10 71274 71278 +!180 = (!83 !179) +!181 = span !10 71274 71304 +!182 = fn_call_path_span !10 71279 71289 +!183 = (!83 !181 !182) +!184 = (!83 !181 !182) +!185 = span !0 204 208 +!186 = (!83 !181 !182 !185) +!187 = span !15 116 122 +!188 = (!83 !181 !182 !187) +!189 = (!83 !181 !182) +!190 = span !0 222 228 +!191 = (!83 !181 !182 !190) +!192 = span !0 191 230 +!193 = (!83 !181 !182 !192) +!194 = span !0 244 248 +!195 = (!83 !181 !182 !194) +!196 = span !15 128 134 +!197 = (!83 !181 !182 !196) +!198 = span !0 262 268 +!199 = (!83 !181 !182 !198) +!200 = span !0 244 269 +!201 = fn_call_path_span !0 251 261 +!202 = (!83 !181 !182 !200 !201) +!203 = span !10 5004 5010 +!204 = (!83 !181 !182 !200 !201 !203) +!205 = (!83 !181 !182 !200 !201 !101) +!206 = (!83 !181 !182 !200 !201) +!207 = (!83 !181 !182 !200 !201) +!208 = (!83 !181 !182 !200 !201) +!209 = (!83 !181 !182 !200 !201) +!210 = (!83 !181 !182 !200 !201) +!211 = (!83 !181 !182 !200 !201) +!212 = (!83 !181 !182 !200 !201) +!213 = (!83 !181 !182 !200 !201) +!214 = (!83 !181 !182 !200 !201) +!215 = (!83 !181 !182 !200 !201) +!216 = (!83 !181 !182 !200 !201) +!217 = (!83 !181 !182 !200 !201) +!218 = (!83 !181 !182 !200 !201) +!219 = (!83 !181 !182 !200 !201) +!220 = (!83 !181 !182 !200 !201) +!221 = (!83 !181 !182 !200 !201) +!222 = (!83 !181 !182 !200 !201) +!223 = (!83 !181 !182 !200 !201) +!224 = (!83 !181 !182 !200 !201) +!225 = (!83 !181 !182 !200 !201) +!226 = (!83 !181 !182 !200 !201) +!227 = (!83 !181 !182 !200 !201) +!228 = (!83 !181 !182 !200 !201) +!229 = span !10 4952 5035 +!230 = (!83 !181 !182 !200 !201 !229) +!231 = (!83 !181 !182 !200 !201) +!232 = span !0 231 270 +!233 = (!83 !181 !182 !232) +!234 = span !0 284 288 +!235 = (!83 !181 !182 !234) +!236 = span !15 140 146 +!237 = (!83 !181 !182 !236) +!238 = span !0 302 308 +!239 = (!83 !181 !182 !238) +!240 = span !0 284 309 +!241 = fn_call_path_span !0 291 301 +!242 = (!83 !181 !182 !240 !241) +!243 = span !10 5182 5188 +!244 = (!83 !181 !182 !240 !241 !243) +!245 = (!83 !181 !182 !240 !241 !101) +!246 = (!83 !181 !182 !240 !241) +!247 = (!83 !181 !182 !240 !241) +!248 = (!83 !181 !182 !240 !241) +!249 = (!83 !181 !182 !240 !241) +!250 = (!83 !181 !182 !240 !241) +!251 = (!83 !181 !182 !240 !241) +!252 = (!83 !181 !182 !240 !241) +!253 = (!83 !181 !182 !240 !241) +!254 = (!83 !181 !182 !240 !241) +!255 = (!83 !181 !182 !240 !241) +!256 = (!83 !181 !182 !200 !201) +!257 = (!83 !181 !182 !200 !201) +!258 = (!83 !181 !182 !200 !201) +!259 = (!83 !181 !182 !200 !201) +!260 = (!83 !181 !182 !240 !241) +!261 = (!83 !181 !182 !240 !241) +!262 = (!83 !181 !182 !240 !241) +!263 = (!83 !181 !182 !240 !241) +!264 = (!83 !181 !182 !240 !241) +!265 = (!83 !181 !182 !240 !241) +!266 = (!83 !181 !182 !240 !241) +!267 = (!83 !181 !182 !240 !241) +!268 = (!83 !181 !182 !240 !241) +!269 = (!83 !181 !182 !240 !241) +!270 = (!83 !181 !182 !240 !241) +!271 = (!83 !181 !182 !240 !241) +!272 = (!83 !181 !182 !240 !241) +!273 = span !10 5130 5213 +!274 = (!83 !181 !182 !240 !241 !273) +!275 = (!83 !181 !182 !240 !241) +!276 = span !0 271 310 +!277 = (!83 !181 !182 !276) +!278 = span !0 324 328 +!279 = (!83 !181 !182 !278) +!280 = span !15 152 157 +!281 = (!83 !181 !182 !280) +!282 = (!83 !181 !182) +!283 = span !0 342 348 +!284 = (!83 !181 !182 !283) +!285 = span !0 324 349 +!286 = fn_call_path_span !0 331 341 +!287 = (!83 !181 !182 !285 !286) +!288 = span !10 5359 5365 +!289 = (!83 !181 !182 !285 !286 !288) +!290 = (!83 !181 !182 !285 !286 !101) +!291 = (!83 !181 !182 !285 !286) +!292 = (!83 !181 !182 !285 !286) +!293 = (!83 !181 !182 !285 !286) +!294 = (!83 !181 !182 !285 !286) +!295 = (!83 !181 !182 !285 !286) +!296 = (!83 !181 !182 !285 !286) +!297 = (!83 !181 !182 !285 !286) +!298 = (!83 !181 !182 !285 !286) +!299 = (!83 !181 !182 !285 !286) +!300 = (!83 !181 !182 !285 !286) +!301 = (!83 !181 !182 !240 !241) +!302 = (!83 !181 !182 !240 !241) +!303 = (!83 !181 !182 !240 !241) +!304 = (!83 !181 !182 !240 !241) +!305 = (!83 !181 !182 !285 !286) +!306 = (!83 !181 !182 !285 !286) +!307 = (!83 !181 !182 !285 !286) +!308 = (!83 !181 !182 !285 !286) +!309 = (!83 !181 !182 !285 !286) +!310 = (!83 !181 !182 !285 !286) +!311 = (!83 !181 !182 !285 !286) +!312 = (!83 !181 !182 !285 !286) +!313 = (!83 !181 !182 !285 !286) +!314 = (!83 !181 !182 !285 !286) +!315 = span !10 5307 5390 +!316 = (!83 !181 !182 !285 !286 !315) +!317 = (!83 !181 !182 !285 !286) +!318 = span !0 311 350 +!319 = (!83 !181 !182 !318) +!320 = span !0 364 368 +!321 = (!83 !181 !182 !320) +!322 = span !15 163 174 +!323 = (!83 !181 !182 !322) +!324 = span !0 382 388 +!325 = (!83 !181 !182 !324) +!326 = span !0 364 389 +!327 = fn_call_path_span !0 371 381 +!328 = (!83 !181 !182 !326 !327) +!329 = (!83 !181 !182 !326 !327) +!330 = span !25 21296 21300 +!331 = (!83 !181 !182 !326 !327 !330) +!332 = (!83 !181 !182 !326 !327 !116) +!333 = (!83 !181 !182 !326 !327) +!334 = span !25 21346 21352 +!335 = (!83 !181 !182 !326 !327 !334) +!336 = span !25 21314 21354 +!337 = (!83 !181 !182 !326 !327 !336) +!338 = span !25 21376 21377 +!339 = (!83 !181 !182 !326 !327) +!340 = (!83 !181 !182 !285 !286) +!341 = (!83 !181 !182 !285 !286) +!342 = (!83 !181 !182 !285 !286) +!343 = (!83 !181 !182 !285 !286) +!344 = span !25 21393 21400 +!345 = fn_call_path_span !25 21395 21396 +!346 = (!83 !181 !182 !326 !327 !344 !345) +!347 = (!83 !181 !182 !326 !327) +!348 = span !25 21426 21430 +!349 = (!83 !181 !182 !326 !327 !348) +!350 = span !25 21426 21447 +!351 = fn_call_path_span !25 21431 21444 +!352 = (!83 !181 !182 !326 !327 !350 !351) +!353 = span !25 8256 8260 +!354 = (!83 !181 !182 !326 !327 !350 !351 !353) +!355 = (!83 !181 !182 !326 !327 !350 !351 !117) +!356 = (!83 !181 !182 !326 !327 !350 !351 !135) +!357 = (!83 !181 !182 !326 !327 !350 !351) +!358 = span !25 8256 8284 +!359 = fn_call_path_span !25 8269 8272 +!360 = (!83 !181 !182 !326 !327 !350 !351 !358 !359) +!361 = (!83 !181 !182 !326 !327 !350 !351 !358 !359) +!362 = span !25 8256 8296 +!363 = fn_call_path_span !25 8285 8289 +!364 = span !154 2650 2739 +!365 = (!83 !181 !182 !326 !327 !350 !351 !362 !363 !364) +!366 = span !154 2688 2701 +!367 = span !25 21486 21492 +!368 = (!83 !181 !182 !326 !327 !367) +!369 = span !25 21461 21493 +!370 = (!83 !181 !182 !326 !327 !369) +!371 = span !25 21512 21513 +!372 = span !25 21507 21513 +!373 = fn_call_path_span !25 21509 21511 +!374 = (!83 !181 !182 !326 !327 !372 !373) +!375 = (!83 !181 !182 !326 !327) +!376 = span !25 21534 21540 +!377 = (!83 !181 !182 !326 !327 !376) +!378 = span !0 351 390 +!379 = (!83 !181 !182 !378) +!380 = span !0 404 408 +!381 = (!83 !181 !182 !380) +!382 = span !15 180 186 +!383 = (!83 !181 !182 !382) +!384 = span !0 422 428 +!385 = (!83 !181 !182 !384) +!386 = span !0 404 429 +!387 = fn_call_path_span !0 411 421 +!388 = (!83 !181 !182 !386 !387) +!389 = (!83 !181 !182 !386 !387) +!390 = span !10 5573 5579 +!391 = (!83 !181 !182 !386 !387 !390) +!392 = (!83 !181 !182 !386 !387 !101) +!393 = (!83 !181 !182 !386 !387) +!394 = (!83 !181 !182 !386 !387) +!395 = (!83 !181 !182 !386 !387) +!396 = (!83 !181 !182 !386 !387) +!397 = (!83 !181 !182 !386 !387) +!398 = (!83 !181 !182 !386 !387) +!399 = (!83 !181 !182 !386 !387) +!400 = span !10 5588 5592 +!401 = (!83 !181 !182 !386 !387 !400) +!402 = (!83 !181 !182 !386 !387) +!403 = (!83 !181 !182 !386 !387) +!404 = (!83 !181 !182 !386 !387) +!405 = (!83 !181 !182 !386 !387) +!406 = (!83 !181 !182 !386 !387) +!407 = (!83 !181 !182 !386 !387) +!408 = (!83 !181 !182 !386 !387) +!409 = (!83 !181 !182 !386 !387) +!410 = (!83 !181 !182 !386 !387) +!411 = (!83 !181 !182 !386 !387) +!412 = (!83 !181 !182 !386 !387) +!413 = (!83 !181 !182 !386 !387) +!414 = (!83 !181 !182 !386 !387) +!415 = (!83 !181 !182 !386 !387) +!416 = (!83 !181 !182 !386 !387) +!417 = (!83 !181 !182 !386 !387) +!418 = (!83 !181 !182 !386 !387) +!419 = (!83 !181 !182 !386 !387) +!420 = span !10 5521 5604 +!421 = (!83 !181 !182 !386 !387 !420) +!422 = (!83 !181 !182 !386 !387) +!423 = span !0 391 430 +!424 = (!83 !181 !182 !423) +!425 = span !0 444 448 +!426 = (!83 !181 !182 !425) +!427 = span !15 192 199 +!428 = (!83 !181 !182 !427) +!429 = span !0 462 468 +!430 = (!83 !181 !182 !429) +!431 = span !0 444 469 +!432 = fn_call_path_span !0 451 461 +!433 = (!83 !181 !182 !431 !432) +!434 = (!83 !181 !182 !431 !432) +!435 = span !10 4648 4654 +!436 = (!83 !181 !182 !431 !432 !435) +!437 = (!83 !181 !182 !431 !432 !101) +!438 = (!83 !181 !182 !431 !432) +!439 = (!83 !181 !182 !431 !432) +!440 = (!83 !181 !182 !431 !432) +!441 = (!83 !181 !182 !431 !432) +!442 = (!83 !181 !182 !431 !432) +!443 = (!83 !181 !182 !431 !432) +!444 = (!83 !181 !182 !431 !432) +!445 = span !10 4663 4667 +!446 = (!83 !181 !182 !431 !432 !445) +!447 = (!83 !181 !182 !431 !432) +!448 = (!83 !181 !182 !431 !432) +!449 = (!83 !181 !182 !431 !432) +!450 = (!83 !181 !182 !386 !387) +!451 = (!83 !181 !182 !386 !387) +!452 = (!83 !181 !182 !386 !387) +!453 = (!83 !181 !182 !386 !387) +!454 = (!83 !181 !182 !431 !432) +!455 = (!83 !181 !182 !431 !432) +!456 = (!83 !181 !182 !431 !432) +!457 = (!83 !181 !182 !431 !432) +!458 = (!83 !181 !182 !431 !432) +!459 = (!83 !181 !182 !431 !432) +!460 = (!83 !181 !182 !431 !432) +!461 = (!83 !181 !182 !431 !432) +!462 = (!83 !181 !182 !431 !432) +!463 = (!83 !181 !182 !431 !432) +!464 = (!83 !181 !182 !431 !432) +!465 = span !10 4596 4679 +!466 = (!83 !181 !182 !431 !432 !465) +!467 = (!83 !181 !182 !431 !432) +!468 = span !0 431 470 +!469 = (!83 !181 !182 !468) +!470 = span !0 492 498 +!471 = (!83 !181 !182 !470) +!472 = span !10 71261 71305 +!473 = (!83 !472) +!474 = span !10 71314 71320 +!475 = (!83 !474) +!476 = (!83 !181 !182 !431 !432) +!477 = (!83 !181 !182 !431 !432) +!478 = (!83 !181 !182 !431 !432) +!479 = (!83 !181 !182 !431 !432) +!480 = (!79 !80 !81) +!481 = (!83 !84) +!482 = (!83 !86) +!483 = (!83 !90) +!484 = (!83 !90) +!485 = (!83 !90) +!486 = (!83 !90) +!487 = (!83 !90) +!488 = span !0 152 306 +!489 = fn_name_span !0 155 165 +!490 = (!488 !489) +!491 = span !15 92 97 +!492 = (!79 !80 !81) +!493 = span !0 204 498 +!494 = (!83 !181 !182 !493) +!495 = (!83 !181 !182) +!496 = span !0 210 214 +!497 = span !0 217 412 +!498 = fn_call_path_span !0 217 412 +!499 = (!83 !181 !182 !497 !498) +!500 = (!83 !181 !182 !497) +!501 = (!83 !181 !182 !496) +!502 = (!83 !181 !182) +!503 = span !0 287 293 +!504 = (!83 !181 !182 !503) +!505 = span !0 271 275 +!506 = (!83 !181 !182) +!507 = (!83 !181 !182 !496) +!508 = (!83 !181 !182 !496) +!509 = (!83 !181 !182) +!510 = span !0 414 494 +!511 = fn_call_path_span !0 414 494 +!512 = (!83 !181 !182 !510 !511) +!513 = (!83 !181 !182 !510) +!514 = span !0 464 470 +!515 = (!83 !181 !182 !514) +!516 = span !0 448 452 +!517 = (!83 !181 !182) +!518 = (!83 !181 !182 !493) +!519 = (!79 !80 !81) +!520 = (!83 !84) +!521 = (!83 !86) +!522 = (!83 !90) +!523 = (!83 !90) +!524 = (!83 !90) +!525 = (!83 !90) +!526 = (!83 !90) + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 + | +25 | +26 | enum F { +27 | A: () + | - Enum variant A is never constructed. +28 | } +29 | + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:26:6 + | +24 | } +25 | +26 | enum F { + | - This enum is never used. +27 | A: () +28 | } + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:34:5 + | +32 | +33 | impl AbiEncode for CustomAbiEncode { +34 | fn abi_encode(self, buffer: Buffer) -> Buffer { + | _____- +35 | | 77u64.abi_encode(buffer) +36 | | } + | |_____- This method is never called. +37 | } +38 | + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:39:8 + | +37 | } +38 | +39 | struct NotAutoEncodable { + | ---------------- This struct is never used. +40 | p: raw_ptr +41 | } + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:40:5 + | +38 | +39 | struct NotAutoEncodable { +40 | p: raw_ptr + | - This struct field is never accessed. +41 | } +42 | + | +____ + + Compiled script "logging" with 5 warnings. + Finished release [optimized + fuel] target(s) [2.896 KB] in ??? + +> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/logging --release +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/language/logging + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) + Compiling script logging (test/src/e2e_vm_tests/test_programs/should_pass/language/logging) +warning: Returned value is ignored + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:79:5 + | +... +79 | main(); + | ------ This returns a value which is not assigned to anything and is ignored. + | ------ help: The returned value has type "u64". + | + = help: If you want to intentionally ignore the returned value, use `let _ = ...`: + = help: let _ = main(); +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 + | +25 | +26 | enum F { +27 | A: () + | - Enum variant A is never constructed. +28 | } +29 | + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:26:6 + | +24 | } +25 | +26 | enum F { + | - This enum is never used. +27 | A: () +28 | } + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:34:5 + | +32 | +33 | impl AbiEncode for CustomAbiEncode { +34 | fn abi_encode(self, buffer: Buffer) -> Buffer { + | _____- +35 | | 77u64.abi_encode(buffer) +36 | | } + | |_____- This method is never called. +37 | } +38 | + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:39:8 + | +37 | } +38 | +39 | struct NotAutoEncodable { + | ---------------- This struct is never used. +40 | p: raw_ptr +41 | } + | +____ + +warning + --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:40:5 + | +38 | +39 | struct NotAutoEncodable { +40 | p: raw_ptr + | - This struct field is never accessed. +41 | } +42 | + | +____ + + Compiled script "logging" with 6 warnings. + Finished release [optimized + fuel] target(s) [2.912 KB] in ??? + Running 1 test, filtered 0 tests + +tested -- logging + + test call_main ... ok (???, 5560 gas) + +test result: OK. 1 passed; 0 failed; finished in ??? + + Finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.debug.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.debug.json index d9a0c502b27..e60bdfab66b 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.debug.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.debug.json @@ -1,8 +1,8 @@ { "concreteTypes": [ { - "concreteTypeId": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - "type": "u64" + "concreteTypeId": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", + "type": "()" } ], "configurables": [], @@ -13,7 +13,7 @@ "attributes": null, "inputs": [], "name": "main", - "output": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0" + "output": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d" } ], "loggedTypes": [], diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.debug.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.debug.json index a1768f7c94b..5fba9885612 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.debug.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.debug.json @@ -1,8 +1,8 @@ { "concreteTypes": [ { - "concreteTypeId": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - "type": "u64" + "concreteTypeId": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", + "type": "()" } ], "configurables": [], @@ -13,7 +13,7 @@ "attributes": null, "inputs": [], "name": "main", - "output": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0" + "output": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d" } ], "loggedTypes": [], diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.release.json index a1768f7c94b..5fba9885612 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.encoding_v1.release.json @@ -1,8 +1,8 @@ { "concreteTypes": [ { - "concreteTypeId": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - "type": "u64" + "concreteTypeId": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", + "type": "()" } ], "configurables": [], @@ -13,7 +13,7 @@ "attributes": null, "inputs": [], "name": "main", - "output": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0" + "output": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d" } ], "loggedTypes": [], diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.release.json index d9a0c502b27..e60bdfab66b 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/json_abi_oracle.release.json @@ -1,8 +1,8 @@ { "concreteTypes": [ { - "concreteTypeId": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0", - "type": "u64" + "concreteTypeId": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d", + "type": "()" } ], "configurables": [], @@ -13,7 +13,7 @@ "attributes": null, "inputs": [], "name": "main", - "output": "1506e6f44c1d6291cdf46395a8e573276a4fa79e8ace3fc891e092ef32d1b0a0" + "output": "2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d" } ], "loggedTypes": [], diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/snapshot.toml new file mode 100644 index 00000000000..2bc08a557f1 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/snapshot.toml @@ -0,0 +1,3 @@ +cmds = [ + "forc build --path {root} --release --ir final --asm final --bytecode" +] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/src/main.sw index 2cbd1392211..d8b8bc64c3b 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/src/main.sw @@ -1,5 +1,4 @@ script; -fn main() -> u64 { - 1337 +fn main() { } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/stdout.snap new file mode 100644 index 00000000000..6023e21c8e4 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/stdout.snap @@ -0,0 +1,98 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty --release --ir final --asm final --bytecode +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) +// IR: Final +library { +} + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 32] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Compiling script main_args_empty (test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty) +// IR: Final +script { + pub entry fn __entry() -> __ptr never, !3 { + entry(): + v0 = call main_0(), !6 + v1 = const u64 0, !7 + v2 = const u64 0, !8 + retd v1 v2, !9 + } + + entry_orig fn main_0() -> (), !13 { + entry(): + v0 = const unit () + ret () v0 + } +} + +!0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/src/main..sw" +!1 = span !0 0 116 +!2 = fn_name_span !0 7 14 +!3 = (!1 !2) +!4 = span !0 58 64 +!5 = fn_call_path_span !0 58 62 +!6 = (!4 !5) +!7 = span !0 97 98 +!8 = span !0 100 101 +!9 = span !0 82 102 +!10 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/src/main.sw" +!11 = span !10 9 22 +!12 = fn_name_span !10 12 16 +!13 = (!11 !12) + +;; ASM: Final program +;; Program kind: Script +.program: +move $$tmp $pc +jmpf $zero i4 +DATA_SECTION_OFFSET[0..32] +DATA_SECTION_OFFSET[32..64] +CONFIGURABLES_OFFSET[0..32] +CONFIGURABLES_OFFSET[32..64] +lw $$ds $$tmp i1 +add $$ds $$ds $$tmp +cfei i0 ; allocate stack space for globals +move $$locbase $sp ; save locals base register for function __entry +jal $$reta $pc i2 ; [call]: call main_0 +retd $zero $zero +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function main_0 +poph i524288 ; restore registers 40..64 +jal $zero $$reta i0 ; return from call +.data: + + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 64] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000024 JAL R62 $pc 0x2 ;; [153, 248, 48, 2] +0x00000028 RETD $zero $zero ;; [37, 0, 0, 0] +0x0000002c PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000030 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000034 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000038 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000003c NOOP ;; [71, 0, 0, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Finished release [optimized + fuel] target(s) [64 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.encoding_v1.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.encoding_v1.toml index 3917453e712..04f2c77a2b4 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.encoding_v1.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.encoding_v1.toml @@ -1,4 +1,4 @@ -script_data = "0000000000000538 0000000000000001" -expected_result = { action = "return_data", value = "0000000000000539" } +script_data = "" +expected_result = { action = "return_data", value = "" } experimental = { new_encoding = true } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.toml index 733091ba093..af82c84998e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_empty/test.toml @@ -1,8 +1,7 @@ category = "run" -# (1336, 1) -script_data = "0000000000000538 0000000000000001" -expected_result = { action = "return", value = 1337 } +script_data = "" +expected_result = { action = "return", value = 0 } validate_abi = true diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/snapshot.toml new file mode 100644 index 00000000000..2bc08a557f1 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/snapshot.toml @@ -0,0 +1,3 @@ +cmds = [ + "forc build --path {root} --release --ir final --asm final --bytecode" +] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap new file mode 100644 index 00000000000..5d3374353f3 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/stdout.snap @@ -0,0 +1,215 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64 --release --ir final --asm final --bytecode +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64 + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) +// IR: Final +library { +} + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 32] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Compiling script main_args_one_u64 (test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64) +// IR: Final +script { + pub entry fn __entry() -> __ptr never, !3 { + local { u64 } args + local mut { ptr } buffer + local u64 item_ + + entry(): + v0 = const u64 0, !5 + v1 = gtf v0, 10, !11 + v2 = bitcast v1 to ptr, !12 + v3 = get_local __ptr { ptr }, buffer, !14 + v4 = const u64 0 + v5 = get_elem_ptr v3, __ptr ptr, v4, !15 + store v2 to v5, !16 + v6 = get_local __ptr { ptr }, buffer, !18 + v7 = const u64 0 + v8 = get_elem_ptr v6, __ptr ptr, v7, !26 + v9 = load v8, !27 + v10 = asm(ptr: v9, val) -> u64 val, !29 { + lw val ptr i0, !30 + } + v11 = load v8, !31 + v12 = const u64 8, !32 + v13 = add v11, v12, !33 + store v13 to v8, !35 + v14 = get_local __ptr { u64 }, args, !37 + v15 = const u64 0 + v16 = get_elem_ptr v14, __ptr u64, v15, !38 + store v10 to v16, !39 + v17 = get_local __ptr { u64 }, args, !40 + v18 = const u64 0 + v19 = get_elem_ptr v17, __ptr u64, v18, !41 + v20 = load v19 + v21 = call main_5(v20), !44 + v22 = get_local __ptr u64, item_, !47 + store v21 to v22, !47 + v23 = get_local __ptr u64, item_, !49 + v24 = const u64 8 + retd v23 v24, !51 + } + + entry_orig fn main_5(baba !53: u64) -> u64, !56 { + entry(baba: u64): + v0 = const u64 1, !57 + v1 = add baba, v0, !60 + ret u64 v1 + } +} + +!0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/src/main..sw" +!1 = span !0 0 203 +!2 = fn_name_span !0 7 14 +!3 = (!1 !2) +!4 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core/src/codec.sw" +!5 = span !4 1599 1600 +!6 = span !0 59 89 +!7 = fn_call_path_span !0 59 77 +!8 = span !4 140379 140411 +!9 = fn_call_path_span !4 140379 140409 +!10 = span !4 1582 1606 +!11 = (!6 !7 !8 !9 !10) +!12 = (!6 !7 !8 !9 !10) +!13 = span !4 1691 1711 +!14 = (!6 !7 !8 !9 !13) +!15 = (!6 !7 !8 !9) +!16 = (!6 !7 !8 !9 !13) +!17 = span !4 140431 140437 +!18 = (!6 !7 !17) +!19 = span !4 140417 140438 +!20 = fn_call_path_span !4 140417 140430 +!21 = span !4 116142 116163 +!22 = fn_call_path_span !4 116142 116155 +!23 = span !4 72721 72749 +!24 = fn_call_path_span !4 72728 72740 +!25 = span !4 625 637 +!26 = (!6 !7 !19 !20 !21 !22 !23 !24 !25) +!27 = (!6 !7 !19 !20 !21 !22 !23 !24) +!28 = span !4 2766 2847 +!29 = (!6 !7 !19 !20 !21 !22 !23 !24 !28) +!30 = span !4 2804 2817 +!31 = (!6 !7 !19 !20 !21 !22 !23 !24) +!32 = (!6 !7 !19 !20 !21 !22 !23 !24) +!33 = (!6 !7 !19 !20 !21 !22 !23 !24) +!34 = span !4 2857 2896 +!35 = (!6 !7 !19 !20 !21 !22 !23 !24 !34) +!36 = span !4 116141 116166 +!37 = (!6 !7 !19 !20 !36) +!38 = (!6 !7 !19 !20 !36) +!39 = (!6 !7 !19 !20 !36) +!40 = span !0 131 135 +!41 = span !0 136 137 +!42 = span !0 126 138 +!43 = fn_call_path_span !0 126 130 +!44 = (!42 !43) +!45 = span !0 156 189 +!46 = fn_call_path_span !0 156 173 +!47 = (!45 !46) +!48 = span !4 71584 71588 +!49 = (!45 !46 !48) +!50 = span !4 71568 71595 +!51 = (!45 !46 !50) +!52 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_one_u64/src/main.sw" +!53 = span !52 17 21 +!54 = span !52 9 51 +!55 = fn_name_span !52 12 16 +!56 = (!54 !55) +!57 = span !52 48 49 +!58 = span !52 41 49 +!59 = fn_call_path_span !52 46 47 +!60 = (!58 !59) + +;; ASM: Final program +;; Program kind: Script +.program: +move $$tmp $pc +jmpf $zero i4 +DATA_SECTION_OFFSET[0..32] +DATA_SECTION_OFFSET[32..64] +CONFIGURABLES_OFFSET[0..32] +CONFIGURABLES_OFFSET[32..64] +lw $$ds $$tmp i1 +add $$ds $$ds $$tmp +cfei i0 ; allocate stack space for globals +move $$locbase $sp ; save locals base register for function __entry +cfei i24 ; allocate 24 bytes for locals and 0 slots for call arguments +gtf $r0 $zero i10 ; get transaction field +sw $$locbase $r0 i1 ; store word +lw $r0 $$locbase i1 ; load word +lw $r0 $r0 i0 ; lw val ptr i0 +lw $r1 $$locbase i1 ; load word +movi $r2 i8 ; initialize constant into register +add $r1 $r1 $r2 +sw $$locbase $r1 i1 ; store word +sw $$locbase $r0 i0 ; store word +lw $r0 $$locbase i0 ; load word +move $$arg0 $r0 ; [call]: pass argument 0 +jal $$reta $pc i5 ; [call]: call main_5 +sw $$locbase $$retv i2 ; store word +addi $r0 $$locbase i16 ; get offset to local __ptr u64 +movi $r1 i8 ; initialize constant into register +retd $r0 $r1 +pshl i1 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function main_5 +add $r0 $$arg0 $one +move $$retv $r0 ; set return value +poph i524288 ; restore registers 40..64 +popl i1 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +.data: + + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 136] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000024 CFEI 0x18 ;; [145, 0, 0, 24] +0x00000028 GTF $writable $zero 0xa ;; [97, 64, 0, 10] +0x0000002c SW R59 $writable 0x1 ;; [95, 237, 0, 1] +0x00000030 LW $writable R59 0x1 ;; [93, 67, 176, 1] +0x00000034 LW $writable $writable 0x0 ;; [93, 65, 0, 0] +0x00000038 LW R17 R59 0x1 ;; [93, 71, 176, 1] +0x0000003c MOVI R18 0x8 ;; [114, 72, 0, 8] +0x00000040 ADD R17 R17 R18 ;; [16, 69, 20, 128] +0x00000044 SW R59 R17 0x1 ;; [95, 237, 16, 1] +0x00000048 SW R59 $writable 0x0 ;; [95, 237, 0, 0] +0x0000004c LW $writable R59 0x0 ;; [93, 67, 176, 0] +0x00000050 MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000054 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] +0x00000058 SW R59 R61 0x2 ;; [95, 239, 208, 2] +0x0000005c ADDI $writable R59 0x10 ;; [80, 67, 176, 16] +0x00000060 MOVI R17 0x8 ;; [114, 68, 0, 8] +0x00000064 RETD $writable R17 ;; [37, 65, 16, 0] +0x00000068 PSHL 0x1 ;; [149, 0, 0, 1] +0x0000006c PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000070 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000074 ADD $writable R58 $one ;; [16, 67, 160, 64] +0x00000078 MOVE R61 $writable ;; [26, 245, 0, 0] +0x0000007c POPH 0x80000 ;; [152, 8, 0, 0] +0x00000080 POPL 0x1 ;; [151, 0, 0, 1] +0x00000084 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Finished release [optimized + fuel] target(s) [136 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/snapshot.toml new file mode 100644 index 00000000000..2bc08a557f1 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/snapshot.toml @@ -0,0 +1,3 @@ +cmds = [ + "forc build --path {root} --release --ir final --asm final --bytecode" +] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap new file mode 100644 index 00000000000..dbecaaac712 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap @@ -0,0 +1,260 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64 --release --ir final --asm final --bytecode +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64 + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) +// IR: Final +library { +} + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 32] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Compiling script main_args_two_u64 (test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64) +// IR: Final +script { + pub entry fn __entry() -> __ptr never, !3 { + local { u64, u64 } args + local mut { ptr } buffer + local u64 item_ + + entry(): + v0 = const u64 0, !5 + v1 = gtf v0, 10, !11 + v2 = bitcast v1 to ptr, !12 + v3 = get_local __ptr { ptr }, buffer, !14 + v4 = const u64 0 + v5 = get_elem_ptr v3, __ptr ptr, v4, !15 + store v2 to v5, !16 + v6 = get_local __ptr { ptr }, buffer, !18 + v7 = const u64 0 + v8 = get_elem_ptr v6, __ptr ptr, v7, !26 + v9 = load v8, !27 + v10 = asm(ptr: v9, val) -> u64 val, !29 { + lw val ptr i0, !30 + } + v11 = load v8, !31 + v12 = const u64 8, !32 + v13 = add v11, v12, !33 + store v13 to v8, !35 + v14 = load v8, !38 + v15 = asm(ptr: v14, val) -> u64 val, !39 { + lw val ptr i0, !30 + } + v16 = load v8, !40 + v17 = const u64 8, !41 + v18 = add v16, v17, !42 + store v18 to v8, !43 + v19 = get_local __ptr { u64, u64 }, args, !45 + v20 = const u64 0 + v21 = get_elem_ptr v19, __ptr u64, v20, !46 + store v10 to v21, !47 + v22 = const u64 1 + v23 = get_elem_ptr v19, __ptr u64, v22, !48 + store v15 to v23, !49 + v24 = get_local __ptr { u64, u64 }, args, !50 + v25 = const u64 0 + v26 = get_elem_ptr v24, __ptr u64, v25, !51 + v27 = load v26 + v28 = get_local __ptr { u64, u64 }, args, !52 + v29 = const u64 1 + v30 = get_elem_ptr v28, __ptr u64, v29, !53 + v31 = load v30 + v32 = call main_5(v27, v31), !56 + v33 = get_local __ptr u64, item_, !59 + store v32 to v33, !59 + v34 = get_local __ptr u64, item_, !61 + v35 = const u64 8 + retd v34 v35, !63 + } + + entry_orig fn main_5(baba !65: u64, keke !66: u64) -> u64, !69 { + entry(baba: u64, keke: u64): + v0 = add baba, keke, !72 + ret u64 v0 + } +} + +!0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main..sw" +!1 = span !0 0 221 +!2 = fn_name_span !0 7 14 +!3 = (!1 !2) +!4 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core/src/codec.sw" +!5 = span !4 1599 1600 +!6 = span !0 64 99 +!7 = fn_call_path_span !0 64 82 +!8 = span !4 140379 140411 +!9 = fn_call_path_span !4 140379 140409 +!10 = span !4 1582 1606 +!11 = (!6 !7 !8 !9 !10) +!12 = (!6 !7 !8 !9 !10) +!13 = span !4 1691 1711 +!14 = (!6 !7 !8 !9 !13) +!15 = (!6 !7 !8 !9) +!16 = (!6 !7 !8 !9 !13) +!17 = span !4 140431 140437 +!18 = (!6 !7 !17) +!19 = span !4 140417 140438 +!20 = fn_call_path_span !4 140417 140430 +!21 = span !4 116318 116339 +!22 = fn_call_path_span !4 116318 116331 +!23 = span !4 72721 72749 +!24 = fn_call_path_span !4 72728 72740 +!25 = span !4 625 637 +!26 = (!6 !7 !19 !20 !21 !22 !23 !24 !25) +!27 = (!6 !7 !19 !20 !21 !22 !23 !24) +!28 = span !4 2766 2847 +!29 = (!6 !7 !19 !20 !21 !22 !23 !24 !28) +!30 = span !4 2804 2817 +!31 = (!6 !7 !19 !20 !21 !22 !23 !24) +!32 = (!6 !7 !19 !20 !21 !22 !23 !24) +!33 = (!6 !7 !19 !20 !21 !22 !23 !24) +!34 = span !4 2857 2896 +!35 = (!6 !7 !19 !20 !21 !22 !23 !24 !34) +!36 = span !4 116341 116362 +!37 = fn_call_path_span !4 116341 116354 +!38 = (!6 !7 !19 !20 !36 !37 !23 !24) +!39 = (!6 !7 !19 !20 !36 !37 !23 !24 !28) +!40 = (!6 !7 !19 !20 !36 !37 !23 !24) +!41 = (!6 !7 !19 !20 !36 !37 !23 !24) +!42 = (!6 !7 !19 !20 !36 !37 !23 !24) +!43 = (!6 !7 !19 !20 !36 !37 !23 !24 !34) +!44 = span !4 116317 116363 +!45 = (!6 !7 !19 !20 !44) +!46 = (!6 !7 !19 !20 !44) +!47 = (!6 !7 !19 !20 !44) +!48 = (!6 !7 !19 !20 !44) +!49 = (!6 !7 !19 !20 !44) +!50 = span !0 141 145 +!51 = span !0 146 147 +!52 = span !0 149 153 +!53 = span !0 154 155 +!54 = span !0 136 156 +!55 = fn_call_path_span !0 136 140 +!56 = (!54 !55) +!57 = span !0 174 207 +!58 = fn_call_path_span !0 174 191 +!59 = (!57 !58) +!60 = span !4 71584 71588 +!61 = (!57 !58 !60) +!62 = span !4 71568 71595 +!63 = (!57 !58 !62) +!64 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main.sw" +!65 = span !64 17 21 +!66 = span !64 28 32 +!67 = span !64 9 65 +!68 = fn_name_span !64 12 16 +!69 = (!67 !68) +!70 = span !64 52 63 +!71 = fn_call_path_span !64 57 58 +!72 = (!70 !71) + +;; ASM: Final program +;; Program kind: Script +.program: +move $$tmp $pc +jmpf $zero i4 +DATA_SECTION_OFFSET[0..32] +DATA_SECTION_OFFSET[32..64] +CONFIGURABLES_OFFSET[0..32] +CONFIGURABLES_OFFSET[32..64] +lw $$ds $$tmp i1 +add $$ds $$ds $$tmp +cfei i0 ; allocate stack space for globals +move $$locbase $sp ; save locals base register for function __entry +cfei i32 ; allocate 32 bytes for locals and 0 slots for call arguments +gtf $r0 $zero i10 ; get transaction field +sw $$locbase $r0 i2 ; store word +lw $r0 $$locbase i2 ; load word +lw $r3 $r0 i0 ; lw val ptr i0 +lw $r0 $$locbase i2 ; load word +movi $r1 i8 ; initialize constant into register +add $r0 $r0 $r1 +sw $$locbase $r0 i2 ; store word +lw $r0 $$locbase i2 ; load word +lw $r0 $r0 i0 ; lw val ptr i0 +lw $r1 $$locbase i2 ; load word +movi $r2 i8 ; initialize constant into register +add $r1 $r1 $r2 +sw $$locbase $r1 i2 ; store word +sw $$locbase $r3 i0 ; store word +sw $$locbase $r0 i1 ; store word +lw $r0 $$locbase i0 ; load word +lw $r1 $$locbase i1 ; load word +move $$arg0 $r0 ; [call]: pass argument 0 +move $$arg1 $r1 ; [call]: pass argument 1 +jal $$reta $pc i5 ; [call]: call main_5 +sw $$locbase $$retv i3 ; store word +addi $r0 $$locbase i24 ; get offset to local __ptr u64 +movi $r1 i8 ; initialize constant into register +retd $r0 $r1 +pshl i1 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function main_5 +add $r0 $$arg0 $$arg1 +move $$retv $r0 ; set return value +poph i524288 ; restore registers 40..64 +popl i1 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +.data: + + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 176] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000024 CFEI 0x20 ;; [145, 0, 0, 32] +0x00000028 GTF $writable $zero 0xa ;; [97, 64, 0, 10] +0x0000002c SW R59 $writable 0x2 ;; [95, 237, 0, 2] +0x00000030 LW $writable R59 0x2 ;; [93, 67, 176, 2] +0x00000034 LW R19 $writable 0x0 ;; [93, 77, 0, 0] +0x00000038 LW $writable R59 0x2 ;; [93, 67, 176, 2] +0x0000003c MOVI R17 0x8 ;; [114, 68, 0, 8] +0x00000040 ADD $writable $writable R17 ;; [16, 65, 4, 64] +0x00000044 SW R59 $writable 0x2 ;; [95, 237, 0, 2] +0x00000048 LW $writable R59 0x2 ;; [93, 67, 176, 2] +0x0000004c LW $writable $writable 0x0 ;; [93, 65, 0, 0] +0x00000050 LW R17 R59 0x2 ;; [93, 71, 176, 2] +0x00000054 MOVI R18 0x8 ;; [114, 72, 0, 8] +0x00000058 ADD R17 R17 R18 ;; [16, 69, 20, 128] +0x0000005c SW R59 R17 0x2 ;; [95, 237, 16, 2] +0x00000060 SW R59 R19 0x0 ;; [95, 237, 48, 0] +0x00000064 SW R59 $writable 0x1 ;; [95, 237, 0, 1] +0x00000068 LW $writable R59 0x0 ;; [93, 67, 176, 0] +0x0000006c LW R17 R59 0x1 ;; [93, 71, 176, 1] +0x00000070 MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000074 MOVE R57 R17 ;; [26, 229, 16, 0] +0x00000078 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] +0x0000007c SW R59 R61 0x3 ;; [95, 239, 208, 3] +0x00000080 ADDI $writable R59 0x18 ;; [80, 67, 176, 24] +0x00000084 MOVI R17 0x8 ;; [114, 68, 0, 8] +0x00000088 RETD $writable R17 ;; [37, 65, 16, 0] +0x0000008c PSHL 0x1 ;; [149, 0, 0, 1] +0x00000090 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000094 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000098 ADD $writable R58 R57 ;; [16, 67, 174, 64] +0x0000009c MOVE R61 $writable ;; [26, 245, 0, 0] +0x000000a0 POPH 0x80000 ;; [152, 8, 0, 0] +0x000000a4 POPL 0x1 ;; [151, 0, 0, 1] +0x000000a8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000000ac NOOP ;; [71, 0, 0, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Finished release [optimized + fuel] target(s) [176 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/snapshot.toml new file mode 100644 index 00000000000..2bc08a557f1 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/snapshot.toml @@ -0,0 +1,3 @@ +cmds = [ + "forc build --path {root} --release --ir final --asm final --bytecode" +] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap new file mode 100644 index 00000000000..fee4b5281fb --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap @@ -0,0 +1,2300 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types --release --ir final --asm final --bytecode +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types + Compiling library std (sway-lib-std) +// IR: Final +library { +} + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 0, 32] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +.data_section: +;; --- END OF TARGET BYTECODE --- + + Compiling script main_args_various_types (test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types) +// IR: Final +script { + global __const_global : string<3> = const string<3> "set" + global __const_global0 : string<3> = const string<3> "add" + + pub entry fn __entry() -> __ptr never, !3 { + local { { string<3> }, { u64, ( u64 | u64 ) } } __ret_val0 + local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] __tmp_arg + local { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } args + local mut [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] array + local mut { ptr } buffer + local { { string<3> }, { u64, ( u64 | u64 ) } } first + local { u64 } item_ + + entry(): + v0 = const u64 0, !5 + v1 = gtf v0, 10, !11 + v2 = bitcast v1 to ptr, !12 + v3 = get_local __ptr { ptr }, buffer, !14 + v4 = const u64 0 + v5 = get_elem_ptr v3, __ptr ptr, v4, !15 + store v2 to v5, !16 + v6 = get_local __ptr { ptr }, buffer, !18 + v7 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first + v8 = call decode_4(v6, v7) + v9 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !24 + v10 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, first, !26 + v11 = const u64 0 + v12 = get_elem_ptr v9, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v11, !27 + mem_copy_val v12, v10 + v13 = const u64 1 + v14 = get_elem_ptr v9, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v13, !28 + mem_copy_val v14, v10 + v15 = const u64 1, !29 + br decode_script_data_0_abi_decode_2_abi_decode_3_while(v15), !30 + + decode_script_data_0_abi_decode_2_abi_decode_3_while(v16: u64): + v17 = const u64 2, !31 + v18 = cmp lt v16 v17, !34 + cbr v18, decode_script_data_0_abi_decode_2_abi_decode_3_while_body(), decode_script_data_0_abi_decode_2_abi_decode_3_end_while(), !35 + + decode_script_data_0_abi_decode_2_abi_decode_3_while_body(): + v19 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __ret_val0 + v20 = call decode_4(v6, v19) + v21 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !37 + v22 = get_elem_ptr v21, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v16, !38 + mem_copy_val v22, v19 + v23 = const u64 1, !39 + v24 = add v16, v23, !42 + br decode_script_data_0_abi_decode_2_abi_decode_3_while(v24), !43 + + decode_script_data_0_abi_decode_2_abi_decode_3_end_while(): + v25 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], array, !45 + v26 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !47 + v27 = const u64 0 + v28 = get_elem_ptr v26, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v27, !48 + mem_copy_val v28, v25 + v29 = get_local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] }, args, !49 + v30 = const u64 0 + v31 = get_elem_ptr v29, __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], v30, !50 + v32 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __tmp_arg + mem_copy_val v32, v31 + v33 = get_local __ptr { u64 }, item_ + v34 = call main_19(v32, v33) + v35 = get_local __ptr { u64 }, item_, !54 + v36 = const u64 8 + retd v35 v36, !56 + } + + pub fn decode_4(self !57: __ptr { ptr }, __ret_value: __ptr { { string<3> }, { u64, ( u64 | u64 ) } }) -> (), !60 { + local mut slice __aggr_memcpy_0 + local mut { ptr, u64 } __aggr_memcpy_00 + local mut string<3> __aggr_memcpy_01 + local { { string<3> }, { u64, ( u64 | u64 ) } } __anon_0 + local { string<3> } __anon_00 + local { ptr, u64 } __anon_000 + local { ptr, u64 } __anon_0000 + local { u64, ( u64 | u64 ) } __anon_01 + local { u64, ( u64 | u64 ) } __anon_1 + local { u64, ( u64 | u64 ) } __tmp_block_arg + local slice data + local slice self_000 + local slice slice + local slice slice_ + + entry(self: __ptr { ptr }, __ret_value: __ptr { { string<3> }, { u64, ( u64 | u64 ) } }): + v0 = const u64 0 + v1 = get_elem_ptr self, __ptr ptr, v0, !70 + v2 = get_local __ptr { ptr, u64 }, __anon_000, !72 + v3 = const u64 0 + v4 = get_elem_ptr v2, __ptr ptr, v3, !73 + mem_copy_val v4, v1 + v5 = const u64 1 + v6 = get_elem_ptr v2, __ptr u64, v5, !74 + v7 = const u64 3, !75 + store v7 to v6, !76 + v8 = asm(ptr: v2) -> __ptr slice ptr { + } + v9 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v9, v8 + v10 = get_local __ptr slice, slice, !78 + mem_copy_val v10, v9 + v11 = load v1, !79 + v12 = const u64 3, !80 + v13 = add v11, v12, !81 + store v13 to v1, !83 + v14 = get_local __ptr slice, slice, !85 + v15 = get_local __ptr slice, data, !87 + mem_copy_val v15, v14 + v16 = get_local __ptr slice, data, !89 + v17 = get_local __ptr slice, self_000, !92 + mem_copy_val v17, v16 + v18 = get_local __ptr slice, self_000, !95 + v19 = get_local __ptr slice, slice_, !98 + mem_copy_val v19, v18 + v20 = get_local __ptr slice, slice_, !100 + v21 = asm(ptr: v20) -> __ptr { ptr, u64 } ptr { + } + v22 = get_local __ptr { ptr, u64 }, __aggr_memcpy_00 + mem_copy_val v22, v21 + v23 = get_local __ptr { ptr, u64 }, __anon_0000, !101 + mem_copy_val v23, v22 + v24 = const u64 0 + v25 = get_elem_ptr v23, __ptr ptr, v24, !103 + v26 = load v25, !104 + v27 = asm(s: v26) -> __ptr string<3> s { + } + v28 = get_local __ptr string<3>, __aggr_memcpy_01 + mem_copy_val v28, v27 + v29 = get_local __ptr { string<3> }, __anon_00, !106 + v30 = const u64 0 + v31 = get_elem_ptr v29, __ptr string<3>, v30, !107 + mem_copy_val v31, v28 + v32 = load v1, !114 + v33 = asm(ptr: v32, val) -> u64 val, !116 { + lw val ptr i0, !117 + } + v34 = load v1, !118 + v35 = const u64 8, !119 + v36 = add v34, v35, !120 + store v36 to v1, !122 + v37 = const u64 0, !123 + v38 = cmp eq v33 v37, !126 + cbr v38, abi_decode_5_abi_decode_12_block0(), abi_decode_5_abi_decode_12_block1(), !127 + + abi_decode_5_abi_decode_12_block0(): + v39 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_01, !130 + v40 = const u64 0 + v41 = get_elem_ptr v39, __ptr u64, v40, !131 + v42 = const u64 0, !129 + store v42 to v41, !132 + v43 = load v1, !135 + v44 = asm(ptr: v43, val) -> u64 val, !136 { + lw val ptr i0, !117 + } + v45 = load v1, !137 + v46 = const u64 8, !138 + v47 = add v45, v46, !139 + store v47 to v1, !140 + v48 = const u64 1 + v49 = const u64 0 + v50 = get_elem_ptr v39, __ptr u64, v48, v49, !141 + store v44 to v50, !142 + v51 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg + mem_copy_val v51, v39 + br abi_decode_5_abi_decode_12_block5(v51), !143 + + abi_decode_5_abi_decode_12_block1(): + v52 = const u64 1, !144 + v53 = cmp eq v33 v52, !147 + cbr v53, abi_decode_5_abi_decode_12_block2(), abi_decode_5_abi_decode_12_block3(), !148 + + abi_decode_5_abi_decode_12_block2(): + v54 = get_local __ptr { u64, ( u64 | u64 ) }, __anon_1, !149 + v55 = const u64 0 + v56 = get_elem_ptr v54, __ptr u64, v55, !150 + v57 = const u64 1, !129 + store v57 to v56, !151 + v58 = load v1, !154 + v59 = asm(ptr: v58, val) -> u64 val, !155 { + lw val ptr i0, !117 + } + v60 = load v1, !156 + v61 = const u64 8, !157 + v62 = add v60, v61, !158 + store v62 to v1, !159 + v63 = const u64 1 + v64 = const u64 1 + v65 = get_elem_ptr v54, __ptr u64, v63, v64, !160 + store v59 to v65, !161 + v66 = get_local __ptr { u64, ( u64 | u64 ) }, __tmp_block_arg + mem_copy_val v66, v54 + br abi_decode_5_abi_decode_12_block5(v66), !162 + + abi_decode_5_abi_decode_12_block3(): + v67 = const u64 0, !163 + revert v67, !165 + + abi_decode_5_abi_decode_12_block5(v68: __ptr { u64, ( u64 | u64 ) }): + v69 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, __anon_0, !167 + v70 = const u64 0 + v71 = get_elem_ptr v69, __ptr { string<3> }, v70, !168 + mem_copy_val v71, v29 + v72 = const u64 1 + v73 = get_elem_ptr v69, __ptr { u64, ( u64 | u64 ) }, v72, !169 + mem_copy_val v73, v68 + mem_copy_val __ret_value, v69 + v74 = const unit () + ret () v74 + } + + entry_orig fn main_19(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }) -> (), !172 { + local mut { ptr, u64, u64 } __aggr_memcpy_0 + local mut { ptr, u64, u64 } __aggr_memcpy_00 + local mut { ptr, u64, u64 } __aggr_memcpy_01 + local mut slice __aggr_memcpy_02 + local { ptr, u64 } __anon_0 + local { ptr, u64, u64 } __anon_000 + local { ptr, u64, u64 } __anon_01 + local slice __anon_1 + local string<3> __anon_10 + local { ptr, u64 } __anon_100 + local { ptr, u64 } __anon_2 + local { ptr, u64, u64 } __anon_20 + local slice __anon_3 + local { { ptr, u64, u64 } } __anon_30 + local { u64 } __anon_4 + local slice __log_arg + local { u64, ( u64 | u64 ) } __matched_value_1 + local { u64, ( u64 | u64 ) } __matched_value_10 + local { u64, ( u64 | u64 ) } __matched_value_2 + local { { ptr, u64, u64 } } __ret_val + local { { ptr, u64, u64 } } __ret_val0 + local { { ptr, u64, u64 } } __ret_val1 + local { { ptr, u64, u64 } } __ret_val2 + local { { ptr, u64, u64 } } __ret_val3 + local { { ptr, u64, u64 } } __tmp_arg + local { { ptr, u64, u64 } } __tmp_arg0 + local { { ptr, u64, u64 } } __tmp_arg1 + local { { ptr, u64, u64 } } __tmp_arg2 + local string<3> __tmp_arg3 + local slice __tmp_arg4 + local string<3> __tmp_arg5 + local slice __tmp_arg6 + local { { ptr, u64, u64 } } __tmp_block_arg + local { { ptr, u64, u64 } } buffer + local { { ptr, u64, u64 } } buffer_ + local { { ptr, u64, u64 } } buffer_0 + local { { ptr, u64, u64 } } buffer_00 + local { { ptr, u64, u64 } } buffer_000 + local { { ptr, u64, u64 } } buffer_1 + local mut { { ptr, u64, u64 } } buffer__ + local { { ptr, u64, u64 } } buffer__0 + local { { ptr, u64, u64 } } buffer__00 + local { { ptr, u64, u64 } } buffer__1 + local { { ptr, u64, u64 } } buffer___ + local { { ptr, u64, u64 } } buffer___0 + local { { ptr, u64, u64 } } buffer____ + local { { ptr, u64, u64 } } buffer_____ + local { { ptr, u64, u64 } } buffer______ + local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] item_ + local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] ops_ + local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] self_0 + local { string<3> } self_000 + local string<3> self_0000 + local { { string<3> }, { u64, ( u64 | u64 ) } } self_1 + local { u64, ( u64 | u64 ) } self_10 + local { { ptr, u64, u64 } } self_3 + + entry(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }): + v0 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ + mem_copy_val v0, ops + v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !173 + v2 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !173 + mem_copy_val v2, v1 + v3 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], item_, !175 + v4 = get_local __ptr { { ptr, u64, u64 } }, __ret_val3 + v5 = call new_27(v4) + v6 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_0, !178 + mem_copy_val v6, v3 + v7 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !179 + mem_copy_val v7, v4 + v8 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !181 + v9 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !183 + mem_copy_val v9, v8 + v10 = const u64 0, !184 + br encode_20_abi_encode_21_while(v10), !185 + + encode_20_abi_encode_21_while(v11: u64): + v12 = const u64 2, !186 + v13 = cmp lt v11 v12, !189 + cbr v13, encode_20_abi_encode_21_while_body(), encode_20_abi_encode_21_end_while(), !190 + + encode_20_abi_encode_21_while_body(): + v14 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_0, !192 + v15 = get_elem_ptr v14, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v11, !194 + v16 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !196 + v17 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !199 + mem_copy_val v17, v15 + v18 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !200 + mem_copy_val v18, v16 + v19 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !202 + v20 = const u64 0 + v21 = get_elem_ptr v19, __ptr { string<3> }, v20, !204 + v22 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !206 + v23 = get_local __ptr { string<3> }, self_000, !209 + mem_copy_val v23, v21 + v24 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !210 + mem_copy_val v24, v22 + v25 = get_local __ptr { string<3> }, self_000, !212 + v26 = const u64 0 + v27 = get_elem_ptr v25, __ptr string<3>, v26, !214 + v28 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !216 + v29 = get_local __ptr string<3>, self_0000, !219 + mem_copy_val v29, v27 + v30 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !220 + mem_copy_val v30, v28 + v31 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !222 + v32 = const u64 0 + v33 = get_elem_ptr v31, __ptr { ptr, u64, u64 }, v32, !224 + v34 = asm(buffer: v33) -> __ptr { ptr, u64, u64 } buffer { + } + v35 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v35, v34 + v36 = get_local __ptr { ptr, u64, u64 }, __anon_000, !225 + mem_copy_val v36, v35 + v37 = const u64 0 + v38 = get_elem_ptr v36, __ptr ptr, v37, !226 + v39 = load v38, !227 + v40 = const u64 1 + v41 = get_elem_ptr v36, __ptr u64, v40, !228 + v42 = load v41, !229 + v43 = const u64 2 + v44 = get_elem_ptr v36, __ptr u64, v43, !230 + v45 = load v44, !231 + v46 = get_local __ptr string<3>, self_0000, !233 + v47 = const u64 3 + v48 = add v45, v47, !234 + v49 = cmp gt v48 v42, !235 + cbr v49, encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block1(), encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v39, v42), !236 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v50: ptr, v51: u64): + v52 = get_local __ptr string<3>, __anon_10, !237 + mem_copy_val v52, v46 + v53 = add v50, v45, !238 + v54 = cast_ptr v53 to __ptr u8, !239 + mem_copy_bytes v54, v52, 3, !240 + v55 = get_local __ptr { ptr, u64, u64 }, __anon_20, !241 + v56 = const u64 0 + v57 = get_elem_ptr v55, __ptr ptr, v56, !242 + store v50 to v57, !243 + v58 = const u64 1 + v59 = get_elem_ptr v55, __ptr u64, v58, !244 + store v51 to v59, !245 + v60 = const u64 2 + v61 = get_elem_ptr v55, __ptr u64, v60, !246 + store v48 to v61, !247 + v62 = asm(buffer: v55) -> __ptr { ptr, u64, u64 } buffer { + } + v63 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v63, v62 + v64 = get_local __ptr { { ptr, u64, u64 } }, __anon_30, !249 + v65 = const u64 0 + v66 = get_elem_ptr v64, __ptr { ptr, u64, u64 }, v65, !250 + mem_copy_val v66, v63 + v67 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !252 + mem_copy_val v67, v64 + v68 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !254 + v69 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !256 + mem_copy_val v69, v68 + v70 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_1, !258 + v71 = const u64 1 + v72 = get_elem_ptr v70, __ptr { u64, ( u64 | u64 ) }, v71, !260 + v73 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !262 + v74 = get_local __ptr { u64, ( u64 | u64 ) }, self_10, !265 + mem_copy_val v74, v72 + v75 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !266 + mem_copy_val v75, v73 + v76 = get_local __ptr { u64, ( u64 | u64 ) }, self_10, !268 + v77 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !270 + mem_copy_val v77, v76 + v78 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !271 + v79 = const u64 0 + v80 = get_elem_ptr v78, __ptr u64, v79, !272 + v81 = load v80, !273 + v82 = const u64 0, !267 + v83 = cmp eq v81 v82, !276 + cbr v83, encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block0(), encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block1(), !277 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block1(): + v84 = const u64 2 + v85 = mul v42, v84, !278 + v86 = add v85, v47, !279 + v87 = asm(new_cap: v86, old_ptr: v39, len: v45) -> __ptr u8 hp, !280 { + aloc new_cap + mcp hp old_ptr len + } + br encode_20_abi_encode_21_abi_encode_22_abi_encode_23_abi_encode_24_block0(v87, v86), !281 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block0(): + v88 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !282 + v89 = const u64 1 + v90 = const u64 0 + v91 = get_elem_ptr v88, __ptr u64, v89, v90, !283 + v92 = load v91, !284 + v93 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !286 + v94 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v94, v93 + v95 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v96 = const u64 0, !287 + v97 = call abi_encode_26(v96, v94, v95) + v98 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !289 + mem_copy_val v98, v95 + v99 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !291 + v100 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v100, v99 + v101 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v102 = call abi_encode_26(v92, v100, v101) + v103 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !293 + mem_copy_val v103, v101 + v104 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !295 + v105 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v105, v104 + br encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v105), !296 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block1(): + v106 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !297 + v107 = const u64 0 + v108 = get_elem_ptr v106, __ptr u64, v107, !298 + v109 = load v108, !299 + v110 = const u64 1, !267 + v111 = cmp eq v109 v110, !302 + cbr v111, encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block2(), encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block3(), !303 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block2(): + v112 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !304 + v113 = const u64 1 + v114 = const u64 1 + v115 = get_elem_ptr v112, __ptr u64, v113, v114, !305 + v116 = load v115, !306 + v117 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !308 + v118 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v118, v117 + v119 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v120 = const u64 1, !309 + v121 = call abi_encode_26(v120, v118, v119) + v122 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !311 + mem_copy_val v122, v119 + v123 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !313 + v124 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 + mem_copy_val v124, v123 + v125 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v126 = call abi_encode_26(v116, v124, v125) + v127 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !315 + mem_copy_val v127, v125 + v128 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !317 + v129 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v129, v128 + br encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v129), !318 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block3(): + v130 = const u64 14757395258967588866, !269 + revert v130, !319 + + encode_20_abi_encode_21_abi_encode_22_abi_encode_25_block5(v131: __ptr { { ptr, u64, u64 } }): + v132 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !321 + mem_copy_val v132, v131 + v133 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !323 + v134 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !325 + mem_copy_val v134, v133 + v135 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !327 + v136 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !329 + mem_copy_val v136, v135 + v137 = const u64 1, !330 + v138 = add v11, v137, !333 + br encode_20_abi_encode_21_while(v138), !334 + + encode_20_abi_encode_21_end_while(): + v139 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !336 + v140 = get_local __ptr { { ptr, u64, u64 } }, buffer, !338 + mem_copy_val v140, v139 + v141 = get_local __ptr { { ptr, u64, u64 } }, buffer, !340 + v142 = get_local __ptr { { ptr, u64, u64 } }, self_3, !343 + mem_copy_val v142, v141 + v143 = get_local __ptr { { ptr, u64, u64 } }, self_3, !345 + v144 = const u64 0 + v145 = get_elem_ptr v143, __ptr { ptr, u64, u64 }, v144, !346 + v146 = asm(buffer: v145) -> __ptr { ptr, u64, u64 } buffer { + } + v147 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v147, v146 + v148 = get_local __ptr { ptr, u64, u64 }, __anon_01, !347 + mem_copy_val v148, v147 + v149 = const u64 0 + v150 = get_elem_ptr v148, __ptr ptr, v149, !348 + v151 = const u64 2 + v152 = get_elem_ptr v148, __ptr u64, v151, !349 + v153 = get_local __ptr { ptr, u64 }, __anon_100, !350 + v154 = const u64 0 + v155 = get_elem_ptr v153, __ptr ptr, v154, !351 + mem_copy_val v155, v150 + v156 = const u64 1 + v157 = get_elem_ptr v153, __ptr u64, v156, !352 + mem_copy_val v157, v152 + v158 = asm(s: v153) -> __ptr slice s { + } + v159 = get_local __ptr slice, __aggr_memcpy_02 + mem_copy_val v159, v158 + v160 = get_local __ptr slice, __log_arg + mem_copy_val v160, v159 + v161 = const u64 3647243719605075626 + log __ptr slice v160, v161 + v162 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !353 + v163 = const u64 0, !354 + v164 = get_elem_ptr v162, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v163, !355 + v165 = const u64 0 + v166 = get_elem_ptr v164, __ptr { string<3> }, v165, !356 + v167 = const u64 0 + v168 = get_elem_ptr v166, __ptr string<3>, v167, !213 + v169 = get_global __ptr string<3>, __const_global + v170 = cast_ptr v169 to ptr, !357 + v171 = get_local __ptr { ptr, u64 }, __anon_0, !357 + v172 = const u64 0 + v173 = get_elem_ptr v171, __ptr ptr, v172 + store v170 to v173, !357 + v174 = const u64 1 + v175 = get_elem_ptr v171, __ptr u64, v174 + v176 = const u64 3 + store v176 to v175, !357 + v177 = get_local __ptr slice, __anon_1, !357 + mem_copy_bytes v177, v171, 16 + v178 = get_local __ptr string<3>, __tmp_arg3 + mem_copy_val v178, v168 + v179 = get_local __ptr slice, __tmp_arg4 + mem_copy_val v179, v177 + v180 = call eq_str_3_32(v178, v179) + v181 = const bool false, !359 + v182 = cmp eq v180 v181, !365 + cbr v182, assert_29_block0(), assert_29_block1(), !366 + + assert_29_block0(): + v183 = const u64 18446744073709486084 + revert v183, !371 + + assert_29_block1(): + v184 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !372 + v185 = const u64 0, !373 + v186 = get_elem_ptr v184, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v185, !374 + v187 = const u64 1 + v188 = get_elem_ptr v186, __ptr { u64, ( u64 | u64 ) }, v187, !375 + v189 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !376 + mem_copy_val v189, v188 + v190 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !377 + v191 = const u64 0 + v192 = get_elem_ptr v190, __ptr u64, v191, !377 + v193 = load v192 + v194 = const u64 0, !377 + v195 = cmp eq v193 v194, !380 + cbr v195, block0(), block1(), !378 + + block0(): + v196 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !377 + v197 = const u64 1 + v198 = const u64 0 + v199 = get_elem_ptr v196, __ptr u64, v197, v198 + v200 = load v199 + v201 = const u64 1338, !381 + v202 = cmp eq v200 v201, !384 + v203 = cmp eq v202 v181, !387 + cbr v203, assert_29_block015(), assert_29_block116(), !388 + + assert_29_block015(): + revert v183, !389 + + assert_29_block116(): + v204 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !390 + v205 = const u64 1, !391 + v206 = get_elem_ptr v204, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v205, !392 + v207 = const u64 0 + v208 = get_elem_ptr v206, __ptr { string<3> }, v207, !393 + v209 = const u64 0 + v210 = get_elem_ptr v208, __ptr string<3>, v209, !213 + v211 = get_global __ptr string<3>, __const_global0 + v212 = cast_ptr v211 to ptr, !394 + v213 = get_local __ptr { ptr, u64 }, __anon_2, !394 + v214 = const u64 0 + v215 = get_elem_ptr v213, __ptr ptr, v214 + store v212 to v215, !394 + v216 = const u64 1 + v217 = get_elem_ptr v213, __ptr u64, v216 + v218 = const u64 3 + store v218 to v217, !394 + v219 = get_local __ptr slice, __anon_3, !394 + mem_copy_bytes v219, v213, 16 + v220 = get_local __ptr string<3>, __tmp_arg5 + mem_copy_val v220, v210 + v221 = get_local __ptr slice, __tmp_arg6 + mem_copy_val v221, v219 + v222 = call eq_str_3_32(v220, v221) + v223 = cmp eq v222 v181, !397 + cbr v223, assert_29_block018(), assert_29_block119(), !398 + + assert_29_block018(): + revert v183, !399 + + assert_29_block119(): + v224 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !400 + v225 = const u64 1, !401 + v226 = get_elem_ptr v224, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v225, !402 + v227 = const u64 1 + v228 = get_elem_ptr v226, __ptr { u64, ( u64 | u64 ) }, v227, !403 + v229 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !404 + mem_copy_val v229, v228 + v230 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !405 + v231 = const u64 0 + v232 = get_elem_ptr v230, __ptr u64, v231, !405 + v233 = load v232 + v234 = const u64 1, !405 + v235 = cmp eq v233 v234, !408 + cbr v235, block3(), block4(), !406 + + block1(): + v236 = const u64 1, !409 + revert v236, !412 + + block3(): + v237 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !405 + v238 = const u64 1 + v239 = const u64 1 + v240 = get_elem_ptr v237, __ptr u64, v238, v239 + v241 = load v240 + v242 = const u64 1, !413 + v243 = cmp eq v241 v242, !416 + v244 = cmp eq v243 v181, !419 + cbr v244, assert_29_block021(), assert_29_block122(), !420 + + assert_29_block021(): + revert v183, !421 + + assert_29_block122(): + v245 = get_local __ptr { u64 }, __anon_4, !422 + v246 = const u64 0 + v247 = get_elem_ptr v245, __ptr u64, v246 + v248 = const u64 1, !423 + store v248 to v247, !422 + mem_copy_val __ret_value, v245 + v249 = const unit () + ret () v249 + + block4(): + v250 = const u64 2, !424 + revert v250, !427 + } + + pub fn abi_encode_26(self !428: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !431 { + local mut { ptr, u64, u64 } __aggr_memcpy_0 + local mut { ptr, u64, u64 } __aggr_memcpy_00 + local { ptr, u64, u64 } __anon_0 + local { ptr, u64, u64 } __anon_1 + local { { ptr, u64, u64 } } __anon_2 + local { { ptr, u64, u64 } } buffer_ + + entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): + v0 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + mem_copy_val v0, buffer + v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !432 + v2 = const u64 0 + v3 = get_elem_ptr v1, __ptr { ptr, u64, u64 }, v2, !223 + v4 = asm(buffer: v3) -> __ptr { ptr, u64, u64 } buffer { + } + v5 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v5, v4 + v6 = get_local __ptr { ptr, u64, u64 }, __anon_0 + mem_copy_val v6, v5 + v7 = const u64 0 + v8 = get_elem_ptr v6, __ptr ptr, v7 + v9 = load v8 + v10 = const u64 1 + v11 = get_elem_ptr v6, __ptr u64, v10 + v12 = load v11 + v13 = const u64 2 + v14 = get_elem_ptr v6, __ptr u64, v13 + v15 = load v14 + v16 = const u64 8 + v17 = add v15, v16 + v18 = cmp gt v17 v12 + cbr v18, block1(), block0(v9, v12) + + block0(v19: ptr, v20: u64): + v21 = add v19, v15 + v22 = cast_ptr v21 to __ptr u64 + store self to v22 + v23 = get_local __ptr { ptr, u64, u64 }, __anon_1 + v24 = const u64 0 + v25 = get_elem_ptr v23, __ptr ptr, v24 + store v19 to v25 + v26 = const u64 1 + v27 = get_elem_ptr v23, __ptr u64, v26 + store v20 to v27 + v28 = const u64 2 + v29 = get_elem_ptr v23, __ptr u64, v28 + store v17 to v29 + v30 = asm(buffer: v23) -> __ptr { ptr, u64, u64 } buffer { + } + v31 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v31, v30 + v32 = get_local __ptr { { ptr, u64, u64 } }, __anon_2, !433 + v33 = const u64 0 + v34 = get_elem_ptr v32, __ptr { ptr, u64, u64 }, v33 + mem_copy_val v34, v31 + mem_copy_val __ret_value, v32 + v35 = const unit () + ret () v35 + + block1(): + v36 = const u64 2 + v37 = mul v12, v36 + v38 = add v37, v16 + v39 = asm(new_cap: v38, old_ptr: v9, len: v15) -> __ptr u8 hp { + aloc new_cap + mcp hp old_ptr len + } + br block0(v39, v38) + } + + pub fn new_27(__ret_value: __ptr { { ptr, u64, u64 } }) -> (), !436 { + local mut { ptr, u64, u64 } __aggr_memcpy_0 + local { ptr, u64, u64 } __anon_0 + local { { ptr, u64, u64 } } __anon_1 + + entry(__ret_value: __ptr { { ptr, u64, u64 } }): + v0 = const u64 1024 + v1 = asm(cap: v0) -> ptr hp { + aloc cap + } + v2 = get_local __ptr { ptr, u64, u64 }, __anon_0 + v3 = const u64 0 + v4 = get_elem_ptr v2, __ptr ptr, v3 + store v1 to v4 + v5 = const u64 1 + v6 = get_elem_ptr v2, __ptr u64, v5 + store v0 to v6 + v7 = const u64 2 + v8 = get_elem_ptr v2, __ptr u64, v7 + v9 = const u64 0 + store v9 to v8 + v10 = asm(buffer: v2) -> __ptr { ptr, u64, u64 } buffer { + } + v11 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v11, v10 + v12 = get_local __ptr { { ptr, u64, u64 } }, __anon_1, !437 + v13 = const u64 0 + v14 = get_elem_ptr v12, __ptr { ptr, u64, u64 }, v13 + mem_copy_val v14, v11 + mem_copy_val __ret_value, v12 + v15 = const unit () + ret () v15 + } + + fn eq_str_3_32(a: __ptr string<3>, b: __ptr slice) -> bool, !440 { + local { ptr, u64 } __tuple_1_ + local string<3> a_ + local slice self_ + + entry(a: __ptr string<3>, b: __ptr slice): + v0 = get_local __ptr string<3>, a_ + mem_copy_val v0, a + v1 = get_local __ptr slice, self_, !443 + mem_copy_val v1, b + v2 = get_local __ptr slice, self_, !446 + v3 = asm(s: v2) -> __ptr { ptr, u64 } s { + } + v4 = const u64 0 + v5 = get_elem_ptr v3, __ptr ptr, v4 + v6 = load v5 + v7 = const u64 1 + v8 = get_elem_ptr v3, __ptr u64, v7 + v9 = load v8 + v10 = get_local __ptr { ptr, u64 }, __tuple_1_, !448 + v11 = const u64 0 + v12 = get_elem_ptr v10, __ptr ptr, v11 + store v6 to v12 + v13 = const u64 1 + v14 = get_elem_ptr v10, __ptr u64, v13 + store v9 to v14 + v15 = get_local __ptr { ptr, u64 }, __tuple_1_, !449 + v16 = const u64 0 + v17 = get_elem_ptr v15, __ptr ptr, v16, !450 + v18 = load v17, !443 + v19 = get_local __ptr string<3>, a_, !451 + v20 = const u64 3, !452 + v21 = asm(a: v19, b: v18, len: v20, r) -> bool r, !453 { + meq r a b len, !454 + } + ret bool v21 + } +} + +!0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main..sw" +!1 = span !0 0 255 +!2 = fn_name_span !0 7 14 +!3 = (!1 !2) +!4 = "sway-lib-std/src/codec.sw" +!5 = span !4 1599 1600 +!6 = span !0 80 131 +!7 = fn_call_path_span !0 80 98 +!8 = span !4 140379 140411 +!9 = fn_call_path_span !4 140379 140409 +!10 = span !4 1582 1606 +!11 = (!6 !7 !8 !9 !10) +!12 = (!6 !7 !8 !9 !10) +!13 = span !4 1691 1711 +!14 = (!6 !7 !8 !9 !13) +!15 = (!6 !7 !8 !9) +!16 = (!6 !7 !8 !9 !13) +!17 = span !4 140431 140437 +!18 = (!6 !7 !17) +!19 = span !4 140417 140438 +!20 = fn_call_path_span !4 140417 140430 +!21 = span !4 116142 116163 +!22 = fn_call_path_span !4 116142 116155 +!23 = span !4 91755 91765 +!24 = (!6 !7 !19 !20 !21 !22 !23) +!25 = span !4 91756 91761 +!26 = (!6 !7 !19 !20 !21 !22 !25) +!27 = (!6 !7 !19 !20 !21 !22) +!28 = (!6 !7 !19 !20 !21 !22) +!29 = span !4 91787 91788 +!30 = (!6 !7 !19 !20 !21 !22) +!31 = span !4 91808 91809 +!32 = span !4 91804 91809 +!33 = fn_call_path_span !4 91806 91807 +!34 = (!6 !7 !19 !20 !21 !22 !32 !33) +!35 = (!6 !7 !19 !20 !21 !22) +!36 = span !4 91824 91855 +!37 = (!6 !7 !19 !20 !21 !22 !36) +!38 = (!6 !7 !19 !20 !21 !22 !36) +!39 = span !4 91874 91875 +!40 = span !4 91869 91875 +!41 = fn_call_path_span !4 91871 91873 +!42 = (!6 !7 !19 !20 !21 !22 !40 !41) +!43 = (!6 !7 !19 !20 !21 !22) +!44 = span !4 91896 91901 +!45 = (!6 !7 !19 !20 !21 !22 !44) +!46 = span !4 116141 116166 +!47 = (!6 !7 !19 !20 !46) +!48 = (!6 !7 !19 !20 !46) +!49 = span !0 178 182 +!50 = span !0 183 184 +!51 = span !0 203 241 +!52 = fn_call_path_span !0 203 220 +!53 = span !4 71584 71588 +!54 = (!51 !52 !53) +!55 = span !4 71568 71595 +!56 = (!51 !52 !55) +!57 = span !4 3902 3906 +!58 = span !4 3877 3984 +!59 = fn_name_span !4 3884 3890 +!60 = (!58 !59) +!61 = span !4 3959 3978 +!62 = fn_call_path_span !4 3959 3972 +!63 = span !4 116318 116339 +!64 = fn_call_path_span !4 116318 116331 +!65 = span !0 214 239 +!66 = fn_call_path_span !0 221 227 +!67 = span !4 75296 75316 +!68 = fn_call_path_span !4 75303 75313 +!69 = span !4 625 637 +!70 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !69) +!71 = span !4 3190 3207 +!72 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) +!73 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) +!74 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) +!75 = span !4 75314 75315 +!76 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !71) +!77 = span !4 3169 3248 +!78 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !77) +!79 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68) +!80 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68) +!81 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68) +!82 = span !4 3257 3300 +!83 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !82) +!84 = span !4 3310 3315 +!85 = (!61 !62 !63 !64 !65 !66 !61 !62 !67 !68 !84) +!86 = span !4 75285 75317 +!87 = (!61 !62 !63 !64 !65 !66 !61 !62 !86) +!88 = span !4 75333 75337 +!89 = (!61 !62 !63 !64 !65 !66 !61 !62 !88) +!90 = span !4 75333 75343 +!91 = fn_call_path_span !4 75338 75341 +!92 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91) +!93 = "sway-lib-std/src/raw_slice.sw" +!94 = span !93 2922 2926 +!95 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !94) +!96 = span !93 2911 2927 +!97 = fn_call_path_span !93 2911 2921 +!98 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !96 !97) +!99 = span !93 1633 1638 +!100 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !96 !97 !99) +!101 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91) +!102 = span !93 2928 2929 +!103 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91 !102) +!104 = (!61 !62 !63 !64 !65 !66 !61 !62 !90 !91) +!105 = span !0 202 242 +!106 = (!61 !62 !63 !64 !105) +!107 = (!61 !62 !63 !64) +!108 = span !4 116341 116362 +!109 = fn_call_path_span !4 116341 116354 +!110 = span !0 224 246 +!111 = fn_call_path_span !0 231 237 +!112 = span !4 72721 72749 +!113 = fn_call_path_span !4 72728 72740 +!114 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) +!115 = span !4 2766 2847 +!116 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113 !115) +!117 = span !4 2804 2817 +!118 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) +!119 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) +!120 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113) +!121 = span !4 2857 2896 +!122 = (!61 !62 !108 !109 !110 !111 !61 !62 !112 !113 !121) +!123 = span !0 264 265 +!124 = span !0 264 313 +!125 = fn_call_path_span !0 264 313 +!126 = (!61 !62 !108 !109 !124 !125) +!127 = (!61 !62 !108 !109 !124) +!128 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main.sw" +!129 = span !128 204 260 +!130 = (!61 !62 !108 !109 !129) +!131 = (!61 !62 !108 !109 !129) +!132 = (!61 !62 !108 !109 !129) +!133 = span !0 289 311 +!134 = fn_call_path_span !0 296 302 +!135 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) +!136 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113 !115) +!137 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) +!138 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) +!139 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113) +!140 = (!61 !62 !108 !109 !133 !134 !61 !62 !112 !113 !121) +!141 = (!61 !62 !108 !109 !129) +!142 = (!61 !62 !108 !109 !129) +!143 = (!61 !62 !108 !109) +!144 = span !0 315 316 +!145 = span !0 315 364 +!146 = fn_call_path_span !0 315 364 +!147 = (!61 !62 !108 !109 !145 !146) +!148 = (!61 !62 !108 !109 !145) +!149 = (!61 !62 !108 !109 !129) +!150 = (!61 !62 !108 !109 !129) +!151 = (!61 !62 !108 !109 !129) +!152 = span !0 340 362 +!153 = fn_call_path_span !0 347 353 +!154 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) +!155 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113 !115) +!156 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) +!157 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) +!158 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113) +!159 = (!61 !62 !108 !109 !152 !153 !61 !62 !112 !113 !121) +!160 = (!61 !62 !108 !109 !129) +!161 = (!61 !62 !108 !109 !129) +!162 = (!61 !62 !108 !109) +!163 = span !0 381 382 +!164 = span !0 372 383 +!165 = (!61 !62 !108 !109 !164) +!166 = span !4 116317 116363 +!167 = (!61 !62 !166) +!168 = (!61 !62 !166) +!169 = (!61 !62 !166) +!170 = span !128 297 695 +!171 = fn_name_span !128 300 304 +!172 = (!170 !171) +!173 = span !128 360 363 +!174 = span !4 71274 71278 +!175 = (!173 !174) +!176 = span !4 71274 71304 +!177 = fn_call_path_span !4 71279 71289 +!178 = (!173 !176 !177) +!179 = (!173 !176 !177) +!180 = span !4 21706 21712 +!181 = (!173 !176 !177 !180) +!182 = span !4 21689 21713 +!183 = (!173 !176 !177 !182) +!184 = span !4 21734 21735 +!185 = (!173 !176 !177) +!186 = span !4 21755 21756 +!187 = span !4 21751 21756 +!188 = fn_call_path_span !4 21753 21754 +!189 = (!173 !176 !177 !187 !188) +!190 = (!173 !176 !177) +!191 = span !4 21780 21784 +!192 = (!173 !176 !177 !191) +!193 = span !4 21780 21787 +!194 = (!173 !176 !177 !193) +!195 = span !4 21799 21805 +!196 = (!173 !176 !177 !195) +!197 = span !4 21780 21806 +!198 = fn_call_path_span !4 21788 21798 +!199 = (!173 !176 !177 !197 !198) +!200 = (!173 !176 !177 !197 !198) +!201 = span !4 43044 43048 +!202 = (!173 !176 !177 !197 !198 !201) +!203 = span !4 43049 43050 +!204 = (!173 !176 !177 !197 !198 !203) +!205 = span !4 43062 43068 +!206 = (!173 !176 !177 !197 !198 !205) +!207 = span !4 43044 43069 +!208 = fn_call_path_span !4 43051 43061 +!209 = (!173 !176 !177 !197 !198 !207 !208) +!210 = (!173 !176 !177 !197 !198 !207 !208) +!211 = span !0 209 213 +!212 = (!173 !176 !177 !197 !198 !207 !208 !211) +!213 = span !128 282 293 +!214 = (!173 !176 !177 !197 !198 !207 !208 !213) +!215 = span !0 229 235 +!216 = (!173 !176 !177 !197 !198 !207 !208 !215) +!217 = span !0 209 236 +!218 = fn_call_path_span !0 218 228 +!219 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!220 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!221 = span !4 6657 6663 +!222 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !221) +!223 = span !4 87 114 +!224 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !223) +!225 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!226 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!227 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!228 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!229 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!230 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!231 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!232 = span !4 6672 6676 +!233 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !232) +!234 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!235 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!236 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!237 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!238 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!239 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!240 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!241 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!242 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!243 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!244 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!245 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!246 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!247 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!248 = span !4 6605 6688 +!249 = (!173 !176 !177 !197 !198 !207 !208 !217 !218 !248) +!250 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!251 = span !0 196 237 +!252 = (!173 !176 !177 !197 !198 !207 !208 !251) +!253 = span !0 259 265 +!254 = (!173 !176 !177 !197 !198 !207 !208 !253) +!255 = span !4 43031 43070 +!256 = (!173 !176 !177 !197 !198 !255) +!257 = span !4 43092 43096 +!258 = (!173 !176 !177 !197 !198 !257) +!259 = span !4 43097 43098 +!260 = (!173 !176 !177 !197 !198 !259) +!261 = span !4 43110 43116 +!262 = (!173 !176 !177 !197 !198 !261) +!263 = span !4 43092 43117 +!264 = fn_call_path_span !4 43099 43109 +!265 = (!173 !176 !177 !197 !198 !263 !264) +!266 = (!173 !176 !177 !197 !198 !263 !264) +!267 = span !0 218 222 +!268 = (!173 !176 !177 !197 !198 !263 !264 !267) +!269 = span !0 212 651 +!270 = (!173 !176 !177 !197 !198 !263 !264 !269) +!271 = (!173 !176 !177 !197 !198 !263 !264 !267) +!272 = (!173 !176 !177 !197 !198 !263 !264 !267) +!273 = (!173 !176 !177 !197 !198 !263 !264) +!274 = span !0 225 435 +!275 = fn_call_path_span !0 225 435 +!276 = (!173 !176 !177 !197 !198 !263 !264 !274 !275) +!277 = (!173 !176 !177 !197 !198 !263 !264 !274) +!278 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!279 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!280 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!281 = (!173 !176 !177 !197 !198 !207 !208 !217 !218) +!282 = (!173 !176 !177 !197 !198 !263 !264 !267) +!283 = (!173 !176 !177 !197 !198 !263 !264) +!284 = (!173 !176 !177 !197 !198 !263 !264) +!285 = span !0 310 316 +!286 = (!173 !176 !177 !197 !198 !263 !264 !285) +!287 = span !0 294 298 +!288 = span !0 281 318 +!289 = (!173 !176 !177 !197 !198 !263 !264 !288) +!290 = span !0 373 379 +!291 = (!173 !176 !177 !197 !198 !263 !264 !290) +!292 = span !0 343 381 +!293 = (!173 !176 !177 !197 !198 !263 !264 !292) +!294 = span !0 406 412 +!295 = (!173 !176 !177 !197 !198 !263 !264 !294) +!296 = (!173 !176 !177 !197 !198 !263 !264) +!297 = (!173 !176 !177 !197 !198 !263 !264 !267) +!298 = (!173 !176 !177 !197 !198 !263 !264 !267) +!299 = (!173 !176 !177 !197 !198 !263 !264) +!300 = span !0 437 647 +!301 = fn_call_path_span !0 437 647 +!302 = (!173 !176 !177 !197 !198 !263 !264 !300 !301) +!303 = (!173 !176 !177 !197 !198 !263 !264 !300) +!304 = (!173 !176 !177 !197 !198 !263 !264 !267) +!305 = (!173 !176 !177 !197 !198 !263 !264) +!306 = (!173 !176 !177 !197 !198 !263 !264) +!307 = span !0 522 528 +!308 = (!173 !176 !177 !197 !198 !263 !264 !307) +!309 = span !0 506 510 +!310 = span !0 493 530 +!311 = (!173 !176 !177 !197 !198 !263 !264 !310) +!312 = span !0 585 591 +!313 = (!173 !176 !177 !197 !198 !263 !264 !312) +!314 = span !0 555 593 +!315 = (!173 !176 !177 !197 !198 !263 !264 !314) +!316 = span !0 618 624 +!317 = (!173 !176 !177 !197 !198 !263 !264 !316) +!318 = (!173 !176 !177 !197 !198 !263 !264) +!319 = (!173 !176 !177 !197 !198 !263 !264 !269) +!320 = span !0 199 652 +!321 = (!173 !176 !177 !197 !198 !263 !264 !320) +!322 = span !0 673 679 +!323 = (!173 !176 !177 !197 !198 !263 !264 !322) +!324 = span !4 43079 43118 +!325 = (!173 !176 !177 !197 !198 !324) +!326 = span !4 43127 43133 +!327 = (!173 !176 !177 !197 !198 !326) +!328 = span !4 21771 21806 +!329 = (!173 !176 !177 !328) +!330 = span !4 21825 21826 +!331 = span !4 21820 21826 +!332 = fn_call_path_span !4 21822 21824 +!333 = (!173 !176 !177 !331 !332) +!334 = (!173 !176 !177) +!335 = span !4 21847 21853 +!336 = (!173 !176 !177 !335) +!337 = span !4 71261 71305 +!338 = (!173 !337) +!339 = span !4 71314 71320 +!340 = (!173 !339) +!341 = span !4 71314 71335 +!342 = fn_call_path_span !4 71321 71333 +!343 = (!173 !341 !342) +!344 = span !4 573 577 +!345 = (!173 !341 !342 !344) +!346 = (!173 !341 !342 !223) +!347 = (!173 !341 !342) +!348 = (!173 !341 !342) +!349 = (!173 !341 !342) +!350 = (!173 !341 !342) +!351 = (!173 !341 !342) +!352 = (!173 !341 !342) +!353 = span !128 386 389 +!354 = span !128 390 391 +!355 = span !128 386 392 +!356 = span !128 393 394 +!357 = span !128 400 405 +!358 = "sway-lib-std/src/ops.sw" +!359 = span !358 12573 12578 +!360 = span !128 370 407 +!361 = fn_call_path_span !128 370 376 +!362 = "sway-lib-std/src/assert.sw" +!363 = span !362 1015 1025 +!364 = fn_call_path_span !362 1015 1016 +!365 = (!360 !361 !363 !364) +!366 = (!360 !361 !363) +!367 = span !362 1036 1064 +!368 = fn_call_path_span !362 1036 1042 +!369 = "sway-lib-std/src/revert.sw" +!370 = span !369 757 771 +!371 = (!360 !361 !367 !368 !370) +!372 = span !128 426 429 +!373 = span !128 430 431 +!374 = span !128 426 432 +!375 = span !128 433 434 +!376 = span !128 420 503 +!377 = span !128 426 434 +!378 = span !128 445 473 +!379 = fn_call_path_span !128 445 473 +!380 = (!378 !379) +!381 = span !128 507 511 +!382 = span !128 420 511 +!383 = fn_call_path_span !128 504 506 +!384 = (!382 !383) +!385 = span !128 413 512 +!386 = fn_call_path_span !128 413 419 +!387 = (!385 !386 !363 !364) +!388 = (!385 !386 !363) +!389 = (!385 !386 !367 !368 !370) +!390 = span !128 535 538 +!391 = span !128 539 540 +!392 = span !128 535 541 +!393 = span !128 542 543 +!394 = span !128 549 554 +!395 = span !128 519 556 +!396 = fn_call_path_span !128 519 525 +!397 = (!395 !396 !363 !364) +!398 = (!395 !396 !363) +!399 = (!395 !396 !367 !368 !370) +!400 = span !128 575 578 +!401 = span !128 579 580 +!402 = span !128 575 581 +!403 = span !128 582 583 +!404 = span !128 569 652 +!405 = span !128 575 583 +!406 = span !128 594 622 +!407 = fn_call_path_span !128 594 622 +!408 = (!406 !407) +!409 = span !128 494 495 +!410 = span !128 487 496 +!411 = fn_call_path_span !128 487 493 +!412 = (!410 !411 !370) +!413 = span !128 656 657 +!414 = span !128 569 657 +!415 = fn_call_path_span !128 653 655 +!416 = (!414 !415) +!417 = span !128 562 658 +!418 = fn_call_path_span !128 562 568 +!419 = (!417 !418 !363 !364) +!420 = (!417 !418 !363) +!421 = (!417 !418 !367 !368 !370) +!422 = span !128 665 693 +!423 = span !128 686 687 +!424 = span !128 643 644 +!425 = span !128 636 645 +!426 = fn_call_path_span !128 636 642 +!427 = (!425 !426 !370) +!428 = span !4 4732 4736 +!429 = span !4 4718 4863 +!430 = fn_name_span !4 4721 4731 +!431 = (!429 !430) +!432 = span !4 4826 4832 +!433 = span !4 4774 4857 +!434 = span !4 160 260 +!435 = fn_name_span !4 167 170 +!436 = (!434 !435) +!437 = span !4 191 254 +!438 = span !128 50 202 +!439 = fn_name_span !128 53 61 +!440 = (!438 !439) +!441 = span !128 107 117 +!442 = fn_call_path_span !128 109 115 +!443 = (!441 !442) +!444 = "sway-lib-std/src/str.sw" +!445 = span !444 153 157 +!446 = (!441 !442 !445) +!447 = span !444 131 201 +!448 = (!441 !442 !447) +!449 = (!441 !442 !447) +!450 = (!441 !442 !447) +!451 = span !128 130 131 +!452 = span !128 148 149 +!453 = span !128 123 200 +!454 = span !128 164 177 + +;; ASM: Final program +;; Program kind: Script +.program: +move $$tmp $pc +jmpf $zero i4 +DATA_SECTION_OFFSET[0..32] +DATA_SECTION_OFFSET[32..64] +CONFIGURABLES_OFFSET[0..32] +CONFIGURABLES_OFFSET[32..64] +lw $$ds $$tmp i1 +add $$ds $$ds $$tmp +cfei i0 ; allocate stack space for globals +move $$locbase $sp ; save locals base register for function __entry +cfei i208 ; allocate 208 bytes for locals and 0 slots for call arguments +gtf $r0 $zero i10 ; get transaction field +sw $$locbase $r0 i21 ; store word +addi $r3 $$locbase i168 ; get offset to local __ptr { ptr } +addi $r0 $$locbase i176 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +move $$arg0 $r3 ; [call]: pass argument 0 +move $$arg1 $r0 ; [call]: pass argument 1 +jal $$reta $pc i38 ; [call]: call decode_4 +addi $r1 $$locbase i120 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r2 $$locbase i176 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +movi $r0 i24 ; get array element size +mul $r0 $zero $r0 ; get offset to array element +add $r0 $r1 $r0 ; add array element offset to array base +mcpi $r0 $r2 i24 ; copy memory +movi $r0 i24 ; get array element size +mul $r0 $one $r0 ; get offset to array element +add $r0 $r1 $r0 ; add array element offset to array base +mcpi $r0 $r2 i24 ; copy memory +move $r2 $one ; move parameter from branch to block argument +movi $r0 i2 ; initialize constant into register +lt $r0 $r2 $r0 +jnzf $r0 $zero i13 +addi $r0 $$locbase i120 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i72 ; get offset to local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } +mcpi $r1 $r0 i48 ; copy memory +addi $r0 $$locbase i72 ; get offset to local __ptr { [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] } +addi $r1 $$locbase i24 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +mcpi $r1 $r0 i48 ; copy memory +addi $r0 $$locbase i200 ; get offset to local __ptr { u64 } +move $$arg0 $r1 ; [call]: pass argument 0 +move $$arg1 $r0 ; [call]: pass argument 1 +jal $$reta $pc i95 ; [call]: call main_19 +addi $r0 $$locbase i200 ; get offset to local __ptr { u64 } +movi $r1 i8 ; initialize constant into register +retd $r0 $r1 +move $$arg0 $r3 ; [call]: pass argument 0 +move $$arg1 $$locbase ; [call]: pass argument 1 +jal $$reta $pc i8 ; [call]: call decode_4 +addi $r0 $$locbase i120 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $r2 $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +mcpi $r1 $$locbase i24 ; copy memory +add $r2 $r2 $one +jmpb $zero i24 +pshl i255 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function decode_4 +cfei i216 ; allocate 216 bytes for locals and 0 slots for call arguments +move $r7 $$arg0 ; save argument 0 (self) +move $r6 $$arg1 ; save argument 1 (__ret_value) +move $r5 $$reta ; save return address +addi $r0 $$locbase i72 ; get offset to local __ptr { ptr, u64 } +mcpi $r0 $$arg0 i8 ; copy memory +movi $r1 i3 ; initialize constant into register +sw $$locbase $r1 i10 ; store word +mcpi $$locbase $r0 i16 ; copy memory +addi $r0 $$locbase i184 ; get offset to local __ptr slice +mcpi $r0 $$locbase i16 ; copy memory +lw $r0 $r7 i0 ; load word +movi $r1 i3 ; initialize constant into register +add $r0 $r0 $r1 +sw $r7 $r0 i0 ; store word +addi $r0 $$locbase i184 ; get offset to local __ptr slice +addi $r1 $$locbase i152 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +addi $r0 $$locbase i152 ; get offset to local __ptr slice +addi $r1 $$locbase i168 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +addi $r0 $$locbase i168 ; get offset to local __ptr slice +addi $r1 $$locbase i200 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +addi $r0 $$locbase i200 ; get offset to local __ptr slice +addi $r1 $$locbase i16 ; get offset to local __ptr { ptr, u64 } +mcpi $r1 $r0 i16 ; copy memory +addi $r0 $$locbase i88 ; get offset to local __ptr { ptr, u64 } +mcpi $r0 $r1 i16 ; copy memory +lw $r0 $$locbase i11 ; load word +addi $r1 $$locbase i32 ; get offset to local __ptr string<3> +mcpi $r1 $r0 i8 ; copy memory +addi $r0 $$locbase i64 ; get offset to local __ptr { string<3> } +mcpi $r0 $r1 i8 ; copy memory +lw $r1 $r7 i0 ; load word +lw $r1 $r1 i0 ; lw val ptr i0 +lw $r2 $r7 i0 ; load word +movi $r3 i8 ; initialize constant into register +add $r2 $r2 $r3 +sw $r7 $r2 i0 ; store word +eq $r2 $r1 $zero +jnzf $r2 $zero i15 +eq $r1 $r1 $one +jnzf $r1 $zero i1 +rvrt $zero +addi $r1 $$locbase i120 ; get offset to local __ptr { u64, ( u64 | u64 ) } +sw $$locbase $one i15 ; store word +lw $r2 $r7 i0 ; load word +lw $r2 $r2 i0 ; lw val ptr i0 +lw $r3 $r7 i0 ; load word +movi $r4 i8 ; initialize constant into register +add $r3 $r3 $r4 +sw $r7 $r3 i0 ; store word +sw $$locbase $r2 i16 ; store word +addi $r2 $$locbase i136 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r2 $r1 i16 ; copy memory +jmpf $zero i11 +addi $r1 $$locbase i104 ; get offset to local __ptr { u64, ( u64 | u64 ) } +sw $$locbase $zero i13 ; store word +lw $r2 $r7 i0 ; load word +lw $r2 $r2 i0 ; lw val ptr i0 +lw $r3 $r7 i0 ; load word +movi $r4 i8 ; initialize constant into register +add $r3 $r3 $r4 +sw $r7 $r3 i0 ; store word +sw $$locbase $r2 i14 ; store word +addi $r2 $$locbase i136 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r2 $r1 i16 ; copy memory +addi $r1 $$locbase i40 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +mcpi $r1 $r0 i8 ; copy memory +addi $r0 $r1 i8 ; get offset to aggregate element +mcpi $r0 $r2 i16 ; copy memory +mcpi $r6 $r1 i24 ; copy memory +cfsi i216 ; free 216 bytes for locals and 0 slots for extra call arguments +move $$reta $r5 ; restore return address +poph i524288 ; restore registers 40..64 +popl i255 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +pshl i511 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function main_19 +cfei i1216 ; allocate 1216 bytes for locals and 0 slots for call arguments +move $r4 $$arg1 ; save argument 1 (__ret_value) +move $r3 $$reta ; save return address +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +mcpi $r0 $$arg0 i48 ; copy memory +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i992 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +mcpi $r1 $r0 i48 ; copy memory +addi $r0 $$locbase i992 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i440 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $r1 ; [call]: pass argument 0 +jal $$reta $pc i306 ; [call]: call new_27 +addi $r2 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +mcpi $r2 $r0 i48 ; copy memory +addi $r0 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +move $r8 $zero ; move parameter from branch to block argument +movi $r0 i2 ; initialize constant into register +lt $r0 $r8 $r0 +jnzf $r0 $zero i110 +addi $r0 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i632 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i632 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i1192 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1192 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i128 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r0 $r1 i24 ; copy memory +addi $r1 $r0 i16 ; get offset to aggregate element +addi $r2 $$locbase i176 ; get offset to local __ptr { ptr, u64 } +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $r2 i8 ; get offset to aggregate element +mcpi $r0 $r1 i8 ; copy memory +addi $r0 $$locbase i72 ; get offset to local __ptr slice +mcpi $r0 $r2 i16 ; copy memory +addi $r1 $$locbase i280 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +load $r0 data_NonConfigurable_0; load constant from data section +lw $r1 $$locbase i35 ; load slice pointer for logging data +lw $r2 $$locbase i36 ; load slice size for logging data +logd $zero $r0 $r1 $r2 ; log slice +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $zero $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addr $r0 data_NonConfigurable_1; get __const_global's address in data section +addi $r2 $$locbase i88 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $r0 i11 ; store word +movi $r0 i3 ; initialize constant into register +sw $$locbase $r0 i12 ; store word +addi $r0 $$locbase i152 ; get offset to local __ptr slice +mcpi $r0 $r2 i16 ; copy memory +addi $r2 $$locbase i560 ; get offset to local __ptr string<3> +mcpi $r2 $r1 i8 ; copy memory +addi $r1 $$locbase i568 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +move $$arg0 $r2 ; [call]: pass argument 0 +move $$arg1 $r1 ; [call]: pass argument 1 +jal $$reta $pc i274 ; [call]: call eq_str_3_32 +eq $r0 $$retv $zero +jnzf $r0 $zero i63 +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $zero $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addi $r0 $r1 i8 ; get offset to aggregate element +addi $r1 $$locbase i296 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i37 ; load word +eq $r0 $r0 $zero +jnzf $r0 $zero i1 +rvrt $one +lw $r0 $$locbase i38 ; load word +movi $r1 i1338 ; initialize constant into register +eq $r0 $r0 $r1 +eq $r0 $r0 $zero +jnzf $r0 $zero i45 +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $one $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addr $r0 data_NonConfigurable_2; get __const_global0's address in data section +addi $r2 $$locbase i192 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $r0 i24 ; store word +movi $r0 i3 ; initialize constant into register +sw $$locbase $r0 i25 ; store word +addi $r0 $$locbase i232 ; get offset to local __ptr slice +mcpi $r0 $r2 i16 ; copy memory +addi $r2 $$locbase i584 ; get offset to local __ptr string<3> +mcpi $r2 $r1 i8 ; copy memory +addi $r1 $$locbase i592 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +move $$arg0 $r2 ; [call]: pass argument 0 +move $$arg1 $r1 ; [call]: pass argument 1 +jal $$reta $pc i237 ; [call]: call eq_str_3_32 +eq $r0 $$retv $zero +jnzf $r0 $zero i22 +addi $r0 $$locbase i1040 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $one $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addi $r0 $r1 i8 ; get offset to aggregate element +addi $r1 $$locbase i328 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i41 ; load word +eq $r0 $r0 $one +jnzf $r0 $zero i2 +movi $r0 i2 ; initialize constant into register +rvrt $r0 +lw $r0 $$locbase i42 ; load word +eq $r0 $r0 $one +eq $r0 $r0 $zero +jnzf $r0 $zero i4 +addi $r0 $$locbase i272 ; get offset to local __ptr { u64 } +sw $$locbase $one i34 ; store word +mcpi $r4 $r0 i8 ; copy memory +jmpf $zero i143 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +addi $r0 $$locbase i1088 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +movi $r1 i24 ; get array element size +mul $r1 $r8 $r1 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addi $r0 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1152 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i680 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1152 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +addi $r1 $$locbase i680 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1136 ; get offset to local __ptr { string<3> } +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $$locbase i704 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i1136 ; get offset to local __ptr { string<3> } +addi $r1 $$locbase i704 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1144 ; get offset to local __ptr string<3> +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $$locbase i728 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i728 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $$locbase $r0 i24 ; copy memory +addi $r0 $$locbase i104 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r0 $$locbase i24 ; copy memory +lw $r0 $$locbase i13 ; load word +lw $r7 $$locbase i14 ; load word +lw $r1 $$locbase i15 ; load word +addi $r2 $$locbase i1144 ; get offset to local __ptr string<3> +movi $r5 i3 ; initialize constant into register +add $r5 $r1 $r5 +gt $r6 $r5 $r7 +jnzf $r6 $zero i1 +jmpf $zero i7 +movi $r6 i2 ; initialize constant into register +mul $r6 $r7 $r6 +movi $r7 i3 ; initialize constant into register +add $r7 $r6 $r7 +aloc $r7 +mcp $hp $r0 $r1 +move $r0 $hp ; move parameter from branch to block argument +addi $r6 $$locbase i168 ; get offset to local __ptr string<3> +mcpi $r6 $r2 i8 ; copy memory +add $r1 $r0 $r1 +mcpi $r1 $r6 i3 ; copy memory +addi $r1 $$locbase i208 ; get offset to local __ptr { ptr, u64, u64 } +sw $$locbase $r0 i26 ; store word +sw $$locbase $r7 i27 ; store word +sw $$locbase $r5 i28 ; store word +addi $r0 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r0 $r1 i24 ; copy memory +addi $r1 $$locbase i248 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i824 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1152 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +addi $r0 $r0 i8 ; get offset to aggregate element +addi $r1 $$locbase i800 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1176 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r2 $r0 i16 ; copy memory +addi $r0 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i1176 ; get offset to local __ptr { u64, ( u64 | u64 ) } +addi $r1 $$locbase i312 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i39 ; load word +eq $r0 $r0 $zero +jnzf $r0 $zero i30 +lw $r0 $$locbase i39 ; load word +eq $r0 $r0 $one +jnzf $r0 $zero i2 +load $r0 data_NonConfigurable_4; load constant from data section +rvrt $r0 +lw $r0 $$locbase i40 ; load word +addi $r1 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i512 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i392 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $one ; [call]: pass argument 0 +move $$arg1 $r2 ; [call]: pass argument 1 +move $$arg2 $r1 ; [call]: pass argument 2 +jal $$reta $pc i56 ; [call]: call abi_encode_26 +addi $r2 $$locbase i920 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i920 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i536 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i416 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $r0 ; [call]: pass argument 0 +move $$arg1 $r2 ; [call]: pass argument 1 +move $$arg2 $r1 ; [call]: pass argument 2 +jal $$reta $pc i46 ; [call]: call abi_encode_26 +addi $r0 $$locbase i944 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i944 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i608 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +jmpf $zero i24 +lw $r0 $$locbase i40 ; load word +addi $r1 $$locbase i752 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i464 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i344 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $zero ; [call]: pass argument 0 +move $$arg1 $r2 ; [call]: pass argument 1 +move $$arg2 $r1 ; [call]: pass argument 2 +jal $$reta $pc i31 ; [call]: call abi_encode_26 +addi $r2 $$locbase i848 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i848 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i488 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i368 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $r0 ; [call]: pass argument 0 +move $$arg1 $r2 ; [call]: pass argument 1 +move $$arg2 $r1 ; [call]: pass argument 2 +jal $$reta $pc i21 ; [call]: call abi_encode_26 +addi $r0 $$locbase i896 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i896 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i608 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i968 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i968 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i872 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i872 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i776 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +add $r8 $r8 $one +jmpb $zero i246 +cfsi i1216 ; free 1216 bytes for locals and 0 slots for extra call arguments +move $$reta $r3 ; restore return address +poph i524288 ; restore registers 40..64 +popl i511 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +pshl i255 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function abi_encode_26 +cfei i144 ; allocate 144 bytes for locals and 0 slots for call arguments +move $r0 $$arg0 ; save argument 0 (self) +move $r1 $$arg2 ; save argument 2 (__ret_value) +move $r2 $$reta ; save return address +addi $r3 $$locbase i120 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r3 $$arg1 i24 ; copy memory +addi $r3 $$locbase i120 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $$locbase $r3 i24 ; copy memory +addi $r3 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r3 $$locbase i24 ; copy memory +lw $r3 $$locbase i6 ; load word +lw $r7 $$locbase i7 ; load word +lw $r4 $$locbase i8 ; load word +movi $r5 i8 ; initialize constant into register +add $r5 $r4 $r5 +gt $r6 $r5 $r7 +jnzf $r6 $zero i1 +jmpf $zero i7 +movi $r6 i2 ; initialize constant into register +mul $r6 $r7 $r6 +movi $r7 i8 ; initialize constant into register +add $r7 $r6 $r7 +aloc $r7 +mcp $hp $r3 $r4 +move $r3 $hp ; move parameter from branch to block argument +add $r4 $r3 $r4 +sw $r4 $r0 i0 ; store word +addi $r0 $$locbase i72 ; get offset to local __ptr { ptr, u64, u64 } +sw $$locbase $r3 i9 ; store word +sw $$locbase $r7 i10 ; store word +sw $$locbase $r5 i11 ; store word +addi $r3 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r3 $r0 i24 ; copy memory +addi $r0 $$locbase i96 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r3 i24 ; copy memory +mcpi $r1 $r0 i24 ; copy memory +cfsi i144 ; free 144 bytes for locals and 0 slots for extra call arguments +move $$reta $r2 ; restore return address +poph i524288 ; restore registers 40..64 +popl i255 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +pshl i15 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function new_27 +cfei i72 ; allocate 72 bytes for locals and 0 slots for call arguments +move $r0 $$arg0 ; save argument 0 (__ret_value) +move $r1 $$reta ; save return address +movi $r2 i1024 ; initialize constant into register +aloc $r2 +addi $r2 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } +sw $$locbase $hp i3 ; store word +movi $r3 i1024 ; initialize constant into register +sw $$locbase $r3 i4 ; store word +sw $$locbase $zero i5 ; store word +mcpi $$locbase $r2 i24 ; copy memory +addi $r2 $$locbase i48 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $$locbase i24 ; copy memory +mcpi $r0 $r2 i24 ; copy memory +cfsi i72 ; free 72 bytes for locals and 0 slots for extra call arguments +move $$reta $r1 ; restore return address +poph i524288 ; restore registers 40..64 +popl i15 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +pshl i15 ; save registers 16..40 +pshh i524288 ; save registers 40..64 +move $$locbase $sp ; save locals base register for function eq_str_3_32 +cfei i40 ; allocate 40 bytes for locals and 0 slots for call arguments +move $r0 $$arg1 ; save argument 1 (b) +move $r1 $$reta ; save return address +addi $r2 $$locbase i16 ; get offset to local __ptr string<3> +mcpi $r2 $$arg0 i8 ; copy memory +addi $r2 $$locbase i24 ; get offset to local __ptr slice +mcpi $r2 $r0 i16 ; copy memory +lw $r0 $$locbase i3 ; load word +lw $r2 $$locbase i4 ; load word +sw $$locbase $r0 i0 ; store word +sw $$locbase $r2 i1 ; store word +lw $r0 $$locbase i0 ; load word +addi $r2 $$locbase i16 ; get offset to local __ptr string<3> +movi $r3 i3 ; initialize constant into register +meq $r0 $r2 $r0 $r3 ; meq r a b len +move $$retv $r0 ; set return value +cfsi i40 ; free 40 bytes for locals and 0 slots for extra call arguments +move $$reta $r1 ; restore return address +poph i524288 ; restore registers 40..64 +popl i15 ; restore registers 16..40 +jal $zero $$reta i0 ; return from call +.data: +data_NonConfigurable_0 .word 3647243719605075626 +data_NonConfigurable_1 .bytes[3] 73 65 74 set +data_NonConfigurable_2 .bytes[3] 61 64 64 add +data_NonConfigurable_3 .word 18446744073709486084 +data_NonConfigurable_4 .word 14757395258967588866 + + +;; --- START OF TARGET BYTECODE --- + +0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] +0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 7, 216] +0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] +0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] +0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] +0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000024 CFEI 0xd0 ;; [145, 0, 0, 208] +0x00000028 GTF $writable $zero 0xa ;; [97, 64, 0, 10] +0x0000002c SW R59 $writable 0x15 ;; [95, 237, 0, 21] +0x00000030 ADDI R19 R59 0xa8 ;; [80, 79, 176, 168] +0x00000034 ADDI $writable R59 0xb0 ;; [80, 67, 176, 176] +0x00000038 MOVE R58 R19 ;; [26, 233, 48, 0] +0x0000003c MOVE R57 $writable ;; [26, 229, 0, 0] +0x00000040 JAL R62 $pc 0x26 ;; [153, 248, 48, 38] +0x00000044 ADDI R17 R59 0x78 ;; [80, 71, 176, 120] +0x00000048 ADDI R18 R59 0xb0 ;; [80, 75, 176, 176] +0x0000004c MOVI $writable 0x18 ;; [114, 64, 0, 24] +0x00000050 MUL $writable $zero $writable ;; [27, 64, 4, 0] +0x00000054 ADD $writable R17 $writable ;; [16, 65, 20, 0] +0x00000058 MCPI $writable R18 0x18 ;; [96, 65, 32, 24] +0x0000005c MOVI $writable 0x18 ;; [114, 64, 0, 24] +0x00000060 MUL $writable $one $writable ;; [27, 64, 20, 0] +0x00000064 ADD $writable R17 $writable ;; [16, 65, 20, 0] +0x00000068 MCPI $writable R18 0x18 ;; [96, 65, 32, 24] +0x0000006c MOVE R18 $one ;; [26, 72, 16, 0] +0x00000070 MOVI $writable 0x2 ;; [114, 64, 0, 2] +0x00000074 LT $writable R18 $writable ;; [22, 65, 36, 0] +0x00000078 JNZF $writable $zero 0xd ;; [118, 64, 0, 13] +0x0000007c ADDI $writable R59 0x78 ;; [80, 67, 176, 120] +0x00000080 ADDI R17 R59 0x48 ;; [80, 71, 176, 72] +0x00000084 MCPI R17 $writable 0x30 ;; [96, 69, 0, 48] +0x00000088 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x0000008c ADDI R17 R59 0x18 ;; [80, 71, 176, 24] +0x00000090 MCPI R17 $writable 0x30 ;; [96, 69, 0, 48] +0x00000094 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] +0x00000098 MOVE R58 R17 ;; [26, 233, 16, 0] +0x0000009c MOVE R57 $writable ;; [26, 229, 0, 0] +0x000000a0 JAL R62 $pc 0x5f ;; [153, 248, 48, 95] +0x000000a4 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] +0x000000a8 MOVI R17 0x8 ;; [114, 68, 0, 8] +0x000000ac RETD $writable R17 ;; [37, 65, 16, 0] +0x000000b0 MOVE R58 R19 ;; [26, 233, 48, 0] +0x000000b4 MOVE R57 R59 ;; [26, 231, 176, 0] +0x000000b8 JAL R62 $pc 0x8 ;; [153, 248, 48, 8] +0x000000bc ADDI $writable R59 0x78 ;; [80, 67, 176, 120] +0x000000c0 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x000000c4 MUL R17 R18 R17 ;; [27, 69, 36, 64] +0x000000c8 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x000000cc MCPI R17 R59 0x18 ;; [96, 71, 176, 24] +0x000000d0 ADD R18 R18 $one ;; [16, 73, 32, 64] +0x000000d4 JMPB $zero 0x18 ;; [117, 0, 0, 24] +0x000000d8 PSHL 0xff ;; [149, 0, 0, 255] +0x000000dc PSHH 0x80000 ;; [150, 8, 0, 0] +0x000000e0 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000000e4 CFEI 0xd8 ;; [145, 0, 0, 216] +0x000000e8 MOVE R23 R58 ;; [26, 95, 160, 0] +0x000000ec MOVE R22 R57 ;; [26, 91, 144, 0] +0x000000f0 MOVE R21 R62 ;; [26, 87, 224, 0] +0x000000f4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x000000f8 MCPI $writable R58 0x8 ;; [96, 67, 160, 8] +0x000000fc MOVI R17 0x3 ;; [114, 68, 0, 3] +0x00000100 SW R59 R17 0xa ;; [95, 237, 16, 10] +0x00000104 MCPI R59 $writable 0x10 ;; [96, 237, 0, 16] +0x00000108 ADDI $writable R59 0xb8 ;; [80, 67, 176, 184] +0x0000010c MCPI $writable R59 0x10 ;; [96, 67, 176, 16] +0x00000110 LW $writable R23 0x0 ;; [93, 65, 112, 0] +0x00000114 MOVI R17 0x3 ;; [114, 68, 0, 3] +0x00000118 ADD $writable $writable R17 ;; [16, 65, 4, 64] +0x0000011c SW R23 $writable 0x0 ;; [95, 93, 0, 0] +0x00000120 ADDI $writable R59 0xb8 ;; [80, 67, 176, 184] +0x00000124 ADDI R17 R59 0x98 ;; [80, 71, 176, 152] +0x00000128 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x0000012c ADDI $writable R59 0x98 ;; [80, 67, 176, 152] +0x00000130 ADDI R17 R59 0xa8 ;; [80, 71, 176, 168] +0x00000134 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000138 ADDI $writable R59 0xa8 ;; [80, 67, 176, 168] +0x0000013c ADDI R17 R59 0xc8 ;; [80, 71, 176, 200] +0x00000140 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000144 ADDI $writable R59 0xc8 ;; [80, 67, 176, 200] +0x00000148 ADDI R17 R59 0x10 ;; [80, 71, 176, 16] +0x0000014c MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000150 ADDI $writable R59 0x58 ;; [80, 67, 176, 88] +0x00000154 MCPI $writable R17 0x10 ;; [96, 65, 16, 16] +0x00000158 LW $writable R59 0xb ;; [93, 67, 176, 11] +0x0000015c ADDI R17 R59 0x20 ;; [80, 71, 176, 32] +0x00000160 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] +0x00000164 ADDI $writable R59 0x40 ;; [80, 67, 176, 64] +0x00000168 MCPI $writable R17 0x8 ;; [96, 65, 16, 8] +0x0000016c LW R17 R23 0x0 ;; [93, 69, 112, 0] +0x00000170 LW R17 R17 0x0 ;; [93, 69, 16, 0] +0x00000174 LW R18 R23 0x0 ;; [93, 73, 112, 0] +0x00000178 MOVI R19 0x8 ;; [114, 76, 0, 8] +0x0000017c ADD R18 R18 R19 ;; [16, 73, 36, 192] +0x00000180 SW R23 R18 0x0 ;; [95, 93, 32, 0] +0x00000184 EQ R18 R17 $zero ;; [19, 73, 16, 0] +0x00000188 JNZF R18 $zero 0xf ;; [118, 72, 0, 15] +0x0000018c EQ R17 R17 $one ;; [19, 69, 16, 64] +0x00000190 JNZF R17 $zero 0x1 ;; [118, 68, 0, 1] +0x00000194 RVRT $zero ;; [54, 0, 0, 0] +0x00000198 ADDI R17 R59 0x78 ;; [80, 71, 176, 120] +0x0000019c SW R59 $one 0xf ;; [95, 236, 16, 15] +0x000001a0 LW R18 R23 0x0 ;; [93, 73, 112, 0] +0x000001a4 LW R18 R18 0x0 ;; [93, 73, 32, 0] +0x000001a8 LW R19 R23 0x0 ;; [93, 77, 112, 0] +0x000001ac MOVI R20 0x8 ;; [114, 80, 0, 8] +0x000001b0 ADD R19 R19 R20 ;; [16, 77, 53, 0] +0x000001b4 SW R23 R19 0x0 ;; [95, 93, 48, 0] +0x000001b8 SW R59 R18 0x10 ;; [95, 237, 32, 16] +0x000001bc ADDI R18 R59 0x88 ;; [80, 75, 176, 136] +0x000001c0 MCPI R18 R17 0x10 ;; [96, 73, 16, 16] +0x000001c4 JMPF $zero 0xb ;; [116, 0, 0, 11] +0x000001c8 ADDI R17 R59 0x68 ;; [80, 71, 176, 104] +0x000001cc SW R59 $zero 0xd ;; [95, 236, 0, 13] +0x000001d0 LW R18 R23 0x0 ;; [93, 73, 112, 0] +0x000001d4 LW R18 R18 0x0 ;; [93, 73, 32, 0] +0x000001d8 LW R19 R23 0x0 ;; [93, 77, 112, 0] +0x000001dc MOVI R20 0x8 ;; [114, 80, 0, 8] +0x000001e0 ADD R19 R19 R20 ;; [16, 77, 53, 0] +0x000001e4 SW R23 R19 0x0 ;; [95, 93, 48, 0] +0x000001e8 SW R59 R18 0xe ;; [95, 237, 32, 14] +0x000001ec ADDI R18 R59 0x88 ;; [80, 75, 176, 136] +0x000001f0 MCPI R18 R17 0x10 ;; [96, 73, 16, 16] +0x000001f4 ADDI R17 R59 0x28 ;; [80, 71, 176, 40] +0x000001f8 MCPI R17 $writable 0x8 ;; [96, 69, 0, 8] +0x000001fc ADDI $writable R17 0x8 ;; [80, 65, 16, 8] +0x00000200 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] +0x00000204 MCPI R22 R17 0x18 ;; [96, 89, 16, 24] +0x00000208 CFSI 0xd8 ;; [146, 0, 0, 216] +0x0000020c MOVE R62 R21 ;; [26, 249, 80, 0] +0x00000210 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000214 POPL 0xff ;; [151, 0, 0, 255] +0x00000218 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000021c PSHL 0x1ff ;; [149, 0, 1, 255] +0x00000220 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000224 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000228 CFEI 0x4c0 ;; [145, 0, 4, 192] +0x0000022c MOVE R20 R57 ;; [26, 83, 144, 0] +0x00000230 MOVE R19 R62 ;; [26, 79, 224, 0] +0x00000234 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x00000238 MCPI $writable R58 0x30 ;; [96, 67, 160, 48] +0x0000023c ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x00000240 ADDI R17 R59 0x3e0 ;; [80, 71, 179, 224] +0x00000244 MCPI R17 $writable 0x30 ;; [96, 69, 0, 48] +0x00000248 ADDI $writable R59 0x3e0 ;; [80, 67, 179, 224] +0x0000024c ADDI R17 R59 0x1b8 ;; [80, 71, 177, 184] +0x00000250 MOVE R58 R17 ;; [26, 233, 16, 0] +0x00000254 JAL R62 $pc 0x132 ;; [153, 248, 49, 50] +0x00000258 ADDI R18 R59 0x440 ;; [80, 75, 180, 64] +0x0000025c MCPI R18 $writable 0x30 ;; [96, 73, 0, 48] +0x00000260 ADDI $writable R59 0x290 ;; [80, 67, 178, 144] +0x00000264 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000268 ADDI $writable R59 0x290 ;; [80, 67, 178, 144] +0x0000026c ADDI R17 R59 0x308 ;; [80, 71, 179, 8] +0x00000270 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000274 MOVE R24 $zero ;; [26, 96, 0, 0] +0x00000278 MOVI $writable 0x2 ;; [114, 64, 0, 2] +0x0000027c LT $writable R24 $writable ;; [22, 65, 132, 0] +0x00000280 JNZF $writable $zero 0x6e ;; [118, 64, 0, 110] +0x00000284 ADDI $writable R59 0x308 ;; [80, 67, 179, 8] +0x00000288 ADDI R17 R59 0x278 ;; [80, 71, 178, 120] +0x0000028c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000290 ADDI $writable R59 0x278 ;; [80, 67, 178, 120] +0x00000294 ADDI R17 R59 0x4a8 ;; [80, 71, 180, 168] +0x00000298 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x0000029c ADDI $writable R59 0x4a8 ;; [80, 67, 180, 168] +0x000002a0 ADDI R17 R59 0x30 ;; [80, 71, 176, 48] +0x000002a4 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000002a8 ADDI $writable R59 0x80 ;; [80, 67, 176, 128] +0x000002ac MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000002b0 ADDI R17 $writable 0x10 ;; [80, 69, 0, 16] +0x000002b4 ADDI R18 R59 0xb0 ;; [80, 75, 176, 176] +0x000002b8 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] +0x000002bc ADDI $writable R18 0x8 ;; [80, 65, 32, 8] +0x000002c0 MCPI $writable R17 0x8 ;; [96, 65, 16, 8] +0x000002c4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x000002c8 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] +0x000002cc ADDI R17 R59 0x118 ;; [80, 71, 177, 24] +0x000002d0 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x000002d4 LW $writable R63 0x0 ;; [93, 67, 240, 0] +0x000002d8 LW R17 R59 0x23 ;; [93, 71, 176, 35] +0x000002dc LW R18 R59 0x24 ;; [93, 75, 176, 36] +0x000002e0 LOGD $zero $writable R17 R18 ;; [52, 1, 4, 82] +0x000002e4 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x000002e8 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x000002ec MUL R17 $zero R17 ;; [27, 68, 4, 64] +0x000002f0 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x000002f4 MOVI $writable 0x8 ;; [114, 64, 0, 8] +0x000002f8 ADD $writable $writable R63 ;; [16, 65, 15, 192] +0x000002fc ADDI R18 R59 0x58 ;; [80, 75, 176, 88] +0x00000300 SW R59 $writable 0xb ;; [95, 237, 0, 11] +0x00000304 MOVI $writable 0x3 ;; [114, 64, 0, 3] +0x00000308 SW R59 $writable 0xc ;; [95, 237, 0, 12] +0x0000030c ADDI $writable R59 0x98 ;; [80, 67, 176, 152] +0x00000310 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] +0x00000314 ADDI R18 R59 0x230 ;; [80, 75, 178, 48] +0x00000318 MCPI R18 R17 0x8 ;; [96, 73, 16, 8] +0x0000031c ADDI R17 R59 0x238 ;; [80, 71, 178, 56] +0x00000320 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000324 MOVE R58 R18 ;; [26, 233, 32, 0] +0x00000328 MOVE R57 R17 ;; [26, 229, 16, 0] +0x0000032c JAL R62 $pc 0x112 ;; [153, 248, 49, 18] +0x00000330 EQ $writable R61 $zero ;; [19, 67, 208, 0] +0x00000334 JNZF $writable $zero 0x3f ;; [118, 64, 0, 63] +0x00000338 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x0000033c MOVI R17 0x18 ;; [114, 68, 0, 24] +0x00000340 MUL R17 $zero R17 ;; [27, 68, 4, 64] +0x00000344 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x00000348 ADDI $writable R17 0x8 ;; [80, 65, 16, 8] +0x0000034c ADDI R17 R59 0x128 ;; [80, 71, 177, 40] +0x00000350 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x00000354 LW $writable R59 0x25 ;; [93, 67, 176, 37] +0x00000358 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x0000035c JNZF $writable $zero 0x1 ;; [118, 64, 0, 1] +0x00000360 RVRT $one ;; [54, 4, 0, 0] +0x00000364 LW $writable R59 0x26 ;; [93, 67, 176, 38] +0x00000368 MOVI R17 0x53a ;; [114, 68, 5, 58] +0x0000036c EQ $writable $writable R17 ;; [19, 65, 4, 64] +0x00000370 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x00000374 JNZF $writable $zero 0x2d ;; [118, 64, 0, 45] +0x00000378 ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x0000037c MOVI R17 0x18 ;; [114, 68, 0, 24] +0x00000380 MUL R17 $one R17 ;; [27, 68, 20, 64] +0x00000384 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x00000388 MOVI $writable 0x10 ;; [114, 64, 0, 16] +0x0000038c ADD $writable $writable R63 ;; [16, 65, 15, 192] +0x00000390 ADDI R18 R59 0xc0 ;; [80, 75, 176, 192] +0x00000394 SW R59 $writable 0x18 ;; [95, 237, 0, 24] +0x00000398 MOVI $writable 0x3 ;; [114, 64, 0, 3] +0x0000039c SW R59 $writable 0x19 ;; [95, 237, 0, 25] +0x000003a0 ADDI $writable R59 0xe8 ;; [80, 67, 176, 232] +0x000003a4 MCPI $writable R18 0x10 ;; [96, 65, 32, 16] +0x000003a8 ADDI R18 R59 0x248 ;; [80, 75, 178, 72] +0x000003ac MCPI R18 R17 0x8 ;; [96, 73, 16, 8] +0x000003b0 ADDI R17 R59 0x250 ;; [80, 71, 178, 80] +0x000003b4 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x000003b8 MOVE R58 R18 ;; [26, 233, 32, 0] +0x000003bc MOVE R57 R17 ;; [26, 229, 16, 0] +0x000003c0 JAL R62 $pc 0xed ;; [153, 248, 48, 237] +0x000003c4 EQ $writable R61 $zero ;; [19, 67, 208, 0] +0x000003c8 JNZF $writable $zero 0x16 ;; [118, 64, 0, 22] +0x000003cc ADDI $writable R59 0x410 ;; [80, 67, 180, 16] +0x000003d0 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x000003d4 MUL R17 $one R17 ;; [27, 68, 20, 64] +0x000003d8 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x000003dc ADDI $writable R17 0x8 ;; [80, 65, 16, 8] +0x000003e0 ADDI R17 R59 0x148 ;; [80, 71, 177, 72] +0x000003e4 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x000003e8 LW $writable R59 0x29 ;; [93, 67, 176, 41] +0x000003ec EQ $writable $writable $one ;; [19, 65, 0, 64] +0x000003f0 JNZF $writable $zero 0x2 ;; [118, 64, 0, 2] +0x000003f4 MOVI $writable 0x2 ;; [114, 64, 0, 2] +0x000003f8 RVRT $writable ;; [54, 64, 0, 0] +0x000003fc LW $writable R59 0x2a ;; [93, 67, 176, 42] +0x00000400 EQ $writable $writable $one ;; [19, 65, 0, 64] +0x00000404 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x00000408 JNZF $writable $zero 0x4 ;; [118, 64, 0, 4] +0x0000040c ADDI $writable R59 0x110 ;; [80, 67, 177, 16] +0x00000410 SW R59 $one 0x22 ;; [95, 236, 16, 34] +0x00000414 MCPI R20 $writable 0x8 ;; [96, 81, 0, 8] +0x00000418 JMPF $zero 0x8f ;; [116, 0, 0, 143] +0x0000041c LW $writable R63 0x3 ;; [93, 67, 240, 3] +0x00000420 RVRT $writable ;; [54, 64, 0, 0] +0x00000424 LW $writable R63 0x3 ;; [93, 67, 240, 3] +0x00000428 RVRT $writable ;; [54, 64, 0, 0] +0x0000042c LW $writable R63 0x3 ;; [93, 67, 240, 3] +0x00000430 RVRT $writable ;; [54, 64, 0, 0] +0x00000434 LW $writable R63 0x3 ;; [93, 67, 240, 3] +0x00000438 RVRT $writable ;; [54, 64, 0, 0] +0x0000043c ADDI $writable R59 0x440 ;; [80, 67, 180, 64] +0x00000440 MOVI R17 0x18 ;; [114, 68, 0, 24] +0x00000444 MUL R17 R24 R17 ;; [27, 69, 132, 64] +0x00000448 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x0000044c ADDI $writable R59 0x308 ;; [80, 67, 179, 8] +0x00000450 ADDI R18 R59 0x480 ;; [80, 75, 180, 128] +0x00000454 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x00000458 ADDI R17 R59 0x2a8 ;; [80, 71, 178, 168] +0x0000045c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000460 ADDI $writable R59 0x480 ;; [80, 67, 180, 128] +0x00000464 ADDI R17 R59 0x2a8 ;; [80, 71, 178, 168] +0x00000468 ADDI R18 R59 0x470 ;; [80, 75, 180, 112] +0x0000046c MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] +0x00000470 ADDI $writable R59 0x2c0 ;; [80, 67, 178, 192] +0x00000474 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000478 ADDI $writable R59 0x470 ;; [80, 67, 180, 112] +0x0000047c ADDI R17 R59 0x2c0 ;; [80, 71, 178, 192] +0x00000480 ADDI R18 R59 0x478 ;; [80, 75, 180, 120] +0x00000484 MCPI R18 $writable 0x8 ;; [96, 73, 0, 8] +0x00000488 ADDI $writable R59 0x2d8 ;; [80, 67, 178, 216] +0x0000048c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000490 ADDI $writable R59 0x2d8 ;; [80, 67, 178, 216] +0x00000494 MCPI R59 $writable 0x18 ;; [96, 237, 0, 24] +0x00000498 ADDI $writable R59 0x68 ;; [80, 67, 176, 104] +0x0000049c MCPI $writable R59 0x18 ;; [96, 67, 176, 24] +0x000004a0 LW $writable R59 0xd ;; [93, 67, 176, 13] +0x000004a4 LW R23 R59 0xe ;; [93, 95, 176, 14] +0x000004a8 LW R17 R59 0xf ;; [93, 71, 176, 15] +0x000004ac ADDI R18 R59 0x478 ;; [80, 75, 180, 120] +0x000004b0 MOVI R21 0x3 ;; [114, 84, 0, 3] +0x000004b4 ADD R21 R17 R21 ;; [16, 85, 21, 64] +0x000004b8 GT R22 R21 R23 ;; [21, 89, 85, 192] +0x000004bc JNZF R22 $zero 0x1 ;; [118, 88, 0, 1] +0x000004c0 JMPF $zero 0x7 ;; [116, 0, 0, 7] +0x000004c4 MOVI R22 0x2 ;; [114, 88, 0, 2] +0x000004c8 MUL R22 R23 R22 ;; [27, 89, 117, 128] +0x000004cc MOVI R23 0x3 ;; [114, 92, 0, 3] +0x000004d0 ADD R23 R22 R23 ;; [16, 93, 101, 192] +0x000004d4 ALOC R23 ;; [38, 92, 0, 0] +0x000004d8 MCP $hp $writable R17 ;; [40, 29, 4, 64] +0x000004dc MOVE $writable $hp ;; [26, 64, 112, 0] +0x000004e0 ADDI R22 R59 0xa8 ;; [80, 91, 176, 168] +0x000004e4 MCPI R22 R18 0x8 ;; [96, 89, 32, 8] +0x000004e8 ADD R17 $writable R17 ;; [16, 69, 4, 64] +0x000004ec MCPI R17 R22 0x3 ;; [96, 69, 96, 3] +0x000004f0 ADDI R17 R59 0xd0 ;; [80, 71, 176, 208] +0x000004f4 SW R59 $writable 0x1a ;; [95, 237, 0, 26] +0x000004f8 SW R59 R23 0x1b ;; [95, 237, 112, 27] +0x000004fc SW R59 R21 0x1c ;; [95, 237, 80, 28] +0x00000500 ADDI $writable R59 0x18 ;; [80, 67, 176, 24] +0x00000504 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000508 ADDI R17 R59 0xf8 ;; [80, 71, 176, 248] +0x0000050c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000510 ADDI $writable R59 0x338 ;; [80, 67, 179, 56] +0x00000514 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000518 ADDI $writable R59 0x338 ;; [80, 67, 179, 56] +0x0000051c ADDI R17 R59 0x320 ;; [80, 71, 179, 32] +0x00000520 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000524 ADDI $writable R59 0x480 ;; [80, 67, 180, 128] +0x00000528 ADDI $writable $writable 0x8 ;; [80, 65, 0, 8] +0x0000052c ADDI R17 R59 0x320 ;; [80, 71, 179, 32] +0x00000530 ADDI R18 R59 0x498 ;; [80, 75, 180, 152] +0x00000534 MCPI R18 $writable 0x10 ;; [96, 73, 0, 16] +0x00000538 ADDI $writable R59 0x2f0 ;; [80, 67, 178, 240] +0x0000053c MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000540 ADDI $writable R59 0x498 ;; [80, 67, 180, 152] +0x00000544 ADDI R17 R59 0x138 ;; [80, 71, 177, 56] +0x00000548 MCPI R17 $writable 0x10 ;; [96, 69, 0, 16] +0x0000054c LW $writable R59 0x27 ;; [93, 67, 176, 39] +0x00000550 EQ $writable $writable $zero ;; [19, 65, 0, 0] +0x00000554 JNZF $writable $zero 0x1e ;; [118, 64, 0, 30] +0x00000558 LW $writable R59 0x27 ;; [93, 67, 176, 39] +0x0000055c EQ $writable $writable $one ;; [19, 65, 0, 64] +0x00000560 JNZF $writable $zero 0x2 ;; [118, 64, 0, 2] +0x00000564 LW $writable R63 0x4 ;; [93, 67, 240, 4] +0x00000568 RVRT $writable ;; [54, 64, 0, 0] +0x0000056c LW $writable R59 0x28 ;; [93, 67, 176, 40] +0x00000570 ADDI R17 R59 0x2f0 ;; [80, 71, 178, 240] +0x00000574 ADDI R18 R59 0x200 ;; [80, 75, 178, 0] +0x00000578 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x0000057c ADDI R17 R59 0x188 ;; [80, 71, 177, 136] +0x00000580 MOVE R58 $one ;; [26, 232, 16, 0] +0x00000584 MOVE R57 R18 ;; [26, 229, 32, 0] +0x00000588 MOVE R56 R17 ;; [26, 225, 16, 0] +0x0000058c JAL R62 $pc 0x38 ;; [153, 248, 48, 56] +0x00000590 ADDI R18 R59 0x398 ;; [80, 75, 179, 152] +0x00000594 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x00000598 ADDI R17 R59 0x398 ;; [80, 71, 179, 152] +0x0000059c ADDI R18 R59 0x218 ;; [80, 75, 178, 24] +0x000005a0 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x000005a4 ADDI R17 R59 0x1a0 ;; [80, 71, 177, 160] +0x000005a8 MOVE R58 $writable ;; [26, 233, 0, 0] +0x000005ac MOVE R57 R18 ;; [26, 229, 32, 0] +0x000005b0 MOVE R56 R17 ;; [26, 225, 16, 0] +0x000005b4 JAL R62 $pc 0x2e ;; [153, 248, 48, 46] +0x000005b8 ADDI $writable R59 0x3b0 ;; [80, 67, 179, 176] +0x000005bc MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x000005c0 ADDI $writable R59 0x3b0 ;; [80, 67, 179, 176] +0x000005c4 ADDI R17 R59 0x260 ;; [80, 71, 178, 96] +0x000005c8 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x000005cc JMPF $zero 0x18 ;; [116, 0, 0, 24] +0x000005d0 LW $writable R59 0x28 ;; [93, 67, 176, 40] +0x000005d4 ADDI R17 R59 0x2f0 ;; [80, 71, 178, 240] +0x000005d8 ADDI R18 R59 0x1d0 ;; [80, 75, 177, 208] +0x000005dc MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x000005e0 ADDI R17 R59 0x158 ;; [80, 71, 177, 88] +0x000005e4 MOVE R58 $zero ;; [26, 232, 0, 0] +0x000005e8 MOVE R57 R18 ;; [26, 229, 32, 0] +0x000005ec MOVE R56 R17 ;; [26, 225, 16, 0] +0x000005f0 JAL R62 $pc 0x1f ;; [153, 248, 48, 31] +0x000005f4 ADDI R18 R59 0x350 ;; [80, 75, 179, 80] +0x000005f8 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x000005fc ADDI R17 R59 0x350 ;; [80, 71, 179, 80] +0x00000600 ADDI R18 R59 0x1e8 ;; [80, 75, 177, 232] +0x00000604 MCPI R18 R17 0x18 ;; [96, 73, 16, 24] +0x00000608 ADDI R17 R59 0x170 ;; [80, 71, 177, 112] +0x0000060c MOVE R58 $writable ;; [26, 233, 0, 0] +0x00000610 MOVE R57 R18 ;; [26, 229, 32, 0] +0x00000614 MOVE R56 R17 ;; [26, 225, 16, 0] +0x00000618 JAL R62 $pc 0x15 ;; [153, 248, 48, 21] +0x0000061c ADDI $writable R59 0x380 ;; [80, 67, 179, 128] +0x00000620 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000624 ADDI $writable R59 0x380 ;; [80, 67, 179, 128] +0x00000628 ADDI R17 R59 0x260 ;; [80, 71, 178, 96] +0x0000062c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000630 ADDI $writable R59 0x3c8 ;; [80, 67, 179, 200] +0x00000634 MCPI $writable R17 0x18 ;; [96, 65, 16, 24] +0x00000638 ADDI $writable R59 0x3c8 ;; [80, 67, 179, 200] +0x0000063c ADDI R17 R59 0x368 ;; [80, 71, 179, 104] +0x00000640 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000644 ADDI $writable R59 0x368 ;; [80, 67, 179, 104] +0x00000648 ADDI R17 R59 0x308 ;; [80, 71, 179, 8] +0x0000064c MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000650 ADD R24 R24 $one ;; [16, 97, 128, 64] +0x00000654 JMPB $zero 0xf6 ;; [117, 0, 0, 246] +0x00000658 CFSI 0x4c0 ;; [146, 0, 4, 192] +0x0000065c MOVE R62 R19 ;; [26, 249, 48, 0] +0x00000660 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000664 POPL 0x1ff ;; [151, 0, 1, 255] +0x00000668 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000066c PSHL 0xff ;; [149, 0, 0, 255] +0x00000670 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000674 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000678 CFEI 0x90 ;; [145, 0, 0, 144] +0x0000067c MOVE $writable R58 ;; [26, 67, 160, 0] +0x00000680 MOVE R17 R56 ;; [26, 71, 128, 0] +0x00000684 MOVE R18 R62 ;; [26, 75, 224, 0] +0x00000688 ADDI R19 R59 0x78 ;; [80, 79, 176, 120] +0x0000068c MCPI R19 R57 0x18 ;; [96, 79, 144, 24] +0x00000690 ADDI R19 R59 0x78 ;; [80, 79, 176, 120] +0x00000694 MCPI R59 R19 0x18 ;; [96, 237, 48, 24] +0x00000698 ADDI R19 R59 0x30 ;; [80, 79, 176, 48] +0x0000069c MCPI R19 R59 0x18 ;; [96, 79, 176, 24] +0x000006a0 LW R19 R59 0x6 ;; [93, 79, 176, 6] +0x000006a4 LW R23 R59 0x7 ;; [93, 95, 176, 7] +0x000006a8 LW R20 R59 0x8 ;; [93, 83, 176, 8] +0x000006ac MOVI R21 0x8 ;; [114, 84, 0, 8] +0x000006b0 ADD R21 R20 R21 ;; [16, 85, 69, 64] +0x000006b4 GT R22 R21 R23 ;; [21, 89, 85, 192] +0x000006b8 JNZF R22 $zero 0x1 ;; [118, 88, 0, 1] +0x000006bc JMPF $zero 0x7 ;; [116, 0, 0, 7] +0x000006c0 MOVI R22 0x2 ;; [114, 88, 0, 2] +0x000006c4 MUL R22 R23 R22 ;; [27, 89, 117, 128] +0x000006c8 MOVI R23 0x8 ;; [114, 92, 0, 8] +0x000006cc ADD R23 R22 R23 ;; [16, 93, 101, 192] +0x000006d0 ALOC R23 ;; [38, 92, 0, 0] +0x000006d4 MCP $hp R19 R20 ;; [40, 29, 53, 0] +0x000006d8 MOVE R19 $hp ;; [26, 76, 112, 0] +0x000006dc ADD R20 R19 R20 ;; [16, 81, 53, 0] +0x000006e0 SW R20 $writable 0x0 ;; [95, 81, 0, 0] +0x000006e4 ADDI $writable R59 0x48 ;; [80, 67, 176, 72] +0x000006e8 SW R59 R19 0x9 ;; [95, 237, 48, 9] +0x000006ec SW R59 R23 0xa ;; [95, 237, 112, 10] +0x000006f0 SW R59 R21 0xb ;; [95, 237, 80, 11] +0x000006f4 ADDI R19 R59 0x18 ;; [80, 79, 176, 24] +0x000006f8 MCPI R19 $writable 0x18 ;; [96, 77, 0, 24] +0x000006fc ADDI $writable R59 0x60 ;; [80, 67, 176, 96] +0x00000700 MCPI $writable R19 0x18 ;; [96, 65, 48, 24] +0x00000704 MCPI R17 $writable 0x18 ;; [96, 69, 0, 24] +0x00000708 CFSI 0x90 ;; [146, 0, 0, 144] +0x0000070c MOVE R62 R18 ;; [26, 249, 32, 0] +0x00000710 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000714 POPL 0xff ;; [151, 0, 0, 255] +0x00000718 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x0000071c PSHL 0xf ;; [149, 0, 0, 15] +0x00000720 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000724 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000728 CFEI 0x48 ;; [145, 0, 0, 72] +0x0000072c MOVE $writable R58 ;; [26, 67, 160, 0] +0x00000730 MOVE R17 R62 ;; [26, 71, 224, 0] +0x00000734 MOVI R18 0x400 ;; [114, 72, 4, 0] +0x00000738 ALOC R18 ;; [38, 72, 0, 0] +0x0000073c ADDI R18 R59 0x18 ;; [80, 75, 176, 24] +0x00000740 SW R59 $hp 0x3 ;; [95, 236, 112, 3] +0x00000744 MOVI R19 0x400 ;; [114, 76, 4, 0] +0x00000748 SW R59 R19 0x4 ;; [95, 237, 48, 4] +0x0000074c SW R59 $zero 0x5 ;; [95, 236, 0, 5] +0x00000750 MCPI R59 R18 0x18 ;; [96, 237, 32, 24] +0x00000754 ADDI R18 R59 0x30 ;; [80, 75, 176, 48] +0x00000758 MCPI R18 R59 0x18 ;; [96, 75, 176, 24] +0x0000075c MCPI $writable R18 0x18 ;; [96, 65, 32, 24] +0x00000760 CFSI 0x48 ;; [146, 0, 0, 72] +0x00000764 MOVE R62 R17 ;; [26, 249, 16, 0] +0x00000768 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000076c POPL 0xf ;; [151, 0, 0, 15] +0x00000770 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000774 PSHL 0xf ;; [149, 0, 0, 15] +0x00000778 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000077c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000780 CFEI 0x28 ;; [145, 0, 0, 40] +0x00000784 MOVE $writable R57 ;; [26, 67, 144, 0] +0x00000788 MOVE R17 R62 ;; [26, 71, 224, 0] +0x0000078c ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x00000790 MCPI R18 R58 0x8 ;; [96, 75, 160, 8] +0x00000794 ADDI R18 R59 0x18 ;; [80, 75, 176, 24] +0x00000798 MCPI R18 $writable 0x10 ;; [96, 73, 0, 16] +0x0000079c LW $writable R59 0x3 ;; [93, 67, 176, 3] +0x000007a0 LW R18 R59 0x4 ;; [93, 75, 176, 4] +0x000007a4 SW R59 $writable 0x0 ;; [95, 237, 0, 0] +0x000007a8 SW R59 R18 0x1 ;; [95, 237, 32, 1] +0x000007ac LW $writable R59 0x0 ;; [93, 67, 176, 0] +0x000007b0 ADDI R18 R59 0x10 ;; [80, 75, 176, 16] +0x000007b4 MOVI R19 0x3 ;; [114, 76, 0, 3] +0x000007b8 MEQ $writable R18 $writable R19 ;; [41, 65, 36, 19] +0x000007bc MOVE R61 $writable ;; [26, 245, 0, 0] +0x000007c0 CFSI 0x28 ;; [146, 0, 0, 40] +0x000007c4 MOVE R62 R17 ;; [26, 249, 16, 0] +0x000007c8 POPH 0x80000 ;; [152, 8, 0, 0] +0x000007cc POPL 0xf ;; [151, 0, 0, 15] +0x000007d0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000007d4 NOOP ;; [71, 0, 0, 0] +.data_section: +0x000007d8 .word i3647243719605075626, as hex be bytes ([32, 9D, 9C, D6, CC, 55, BE, AA]) +0x000007e0 .bytes as hex ([73, 65, 74]), len i3, as ascii "set" +0x000007e8 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" +0x000007f0 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) +0x000007f8 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) +;; --- END OF TARGET BYTECODE --- + + Finished release [optimized + fuel] target(s) [2.048 KB] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/snapshot.toml index 624d6b0cee8..0df4bafd81a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/snapshot.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/snapshot.toml @@ -1,4 +1,4 @@ cmds = [ "forc build --path {root}", - "forc build --path {root} --ir final --asm final | filter-fn {name} return_match_on_str_slice" + "forc build --path {root} --ir final --asm final --release | filter-fn {name} return_match_on_str_slice" ] \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap index 11088732398..b2815942916 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap @@ -7,9 +7,9 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script match_expressions_all (test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all) - Finished debug [unoptimized + fuel] target(s) [3.072 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [3.04 KB] in ??? -> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all --ir final --asm final | filter-fn match_expressions_all return_match_on_str_slice +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all --ir final --asm final --release | filter-fn match_expressions_all return_match_on_str_slice pshl i15 ; save registers 16..40 pshh i524288 ; save registers 40..64 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_const_eval_string_slices_not_in_bytecode/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_const_eval_string_slices_not_in_bytecode/stdout.snap index 2a5b57514b1..d277d768682 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_const_eval_string_slices_not_in_bytecode/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_const_eval_string_slices_not_in_bytecode/stdout.snap @@ -1,15 +1,15 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 266 --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_const_eval_string_slices_not_in_bytecode --ir initial | regex ' (v1 = call call|v0 = const|v1 = const|v2 = const|v3 = const|v2 = and|v4 = or|revert)' - v3 = const u64 0 + v2 = const u64 0, !8 + v3 = const u64 0, !9 v0 = const u64 1 - v1 = call call_return_const_str_0_1(v0), !18 + v1 = call call_return_const_str_0_1(v0), !17 v2 = const u64 9259400833873739776 - revert v2, !19 + revert v2, !18 v1 = const u64 36028797018963967 - v2 = and __backtrace, v1, !23 + v2 = and __backtrace, v1, !22 v3 = const u64 9223372036854775808 - v4 = or v3, v2, !23 - revert v4, !23 + v4 = or v3, v2, !22 + revert v4, !22 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap index 7c9db278885..053cd575780 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap @@ -18,12 +18,12 @@ warning: Error message is empty ____ Compiled script "panic_handling_in_unit_tests" with 1 warning. - Finished debug [unoptimized + fuel] target(s) [8.144 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [8.72 KB] in ??? Running 2 tests, filtered 18 tests tested -- panic_handling_in_unit_tests - test passing_dbgs_and_logs ... ok (???, 4549 gas) + test passing_dbgs_and_logs ... ok (???, 4424 gas) debug output: [src/main.sw:23:13] "This is a passing test containing `__dbg` outputs." = "This is a passing test containing `__dbg` outputs." [src/main.sw:25:13] x = 42 @@ -31,7 +31,7 @@ tested -- panic_handling_in_unit_tests AsciiString { data: "This is a log from the passing test." }, log rb: 10098701174489624218 42, log rb: 1515152261580153489 raw logs: -[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":14948,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15536,"ptr":67106816,"ra":0,"rb":1515152261580153489}}] +[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10820,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15948,"ptr":67107832,"ra":0,"rb":1515152261580153489}}] test passing_no_dbgs_or_logs ... ok (???, 74 gas) test result: OK. 2 passed; 0 failed; finished in ??? @@ -55,31 +55,31 @@ warning: Error message is empty ____ Compiled script "panic_handling_in_unit_tests" with 1 warning. - Finished debug [unoptimized + fuel] target(s) [8.144 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [8.72 KB] in ??? Running 20 tests, filtered 0 tests tested -- panic_handling_in_unit_tests - test passing_dbgs_and_logs ... ok (???, 4549 gas) + test passing_dbgs_and_logs ... ok (???, 4424 gas) test passing_no_dbgs_or_logs ... ok (???, 74 gas) test failing_revert_intrinsic ... FAILED (???, 79 gas) - test failing_revert_function_with_dbgs_and_logs ... FAILED (???, 4440 gas) + test failing_revert_function_with_dbgs_and_logs ... FAILED (???, 4500 gas) test failing_error_signal_assert ... FAILED (???, 792 gas) - test failing_error_signal_assert_eq ... FAILED (???, 3414 gas) - test failing_error_signal_assert_ne ... FAILED (???, 3404 gas) - test failing_error_signal_require_str_error ... FAILED (???, 946 gas) - test failing_error_signal_require_enum_error ... FAILED (???, 1094 gas) - test failing_panic_no_arg ... FAILED (???, 737 gas) - test failing_panic_unit_arg ... FAILED (???, 737 gas) + test failing_error_signal_assert_eq ... FAILED (???, 3104 gas) + test failing_error_signal_assert_ne ... FAILED (???, 3094 gas) + test failing_error_signal_require_str_error ... FAILED (???, 1006 gas) + test failing_error_signal_require_enum_error ... FAILED (???, 1133 gas) + test failing_panic_no_arg ... FAILED (???, 657 gas) + test failing_panic_unit_arg ... FAILED (???, 657 gas) test failing_panic_const_eval_str_arg ... FAILED (???, 79 gas) test failing_panic_const_eval_empty_str_arg ... FAILED (???, 79 gas) test failing_panic_const_eval_whitespace_str_arg ... FAILED (???, 79 gas) - test failing_panic_non_const_eval_str_arg ... FAILED (???, 923 gas) - test failing_panic_non_const_eval_str_empty_arg ... FAILED (???, 905 gas) - test failing_panic_non_const_eval_str_whitespace_arg ... FAILED (???, 909 gas) - test failing_panic_error_enum_arg ... FAILED (???, 1064 gas) - test failing_panic_error_enum_arg_with_empty_msg ... FAILED (???, 1223 gas) - test failing_panic_error_enum_arg_with_whitespace_msg ... FAILED (???, 1252 gas) + test failing_panic_non_const_eval_str_arg ... FAILED (???, 987 gas) + test failing_panic_non_const_eval_str_empty_arg ... FAILED (???, 969 gas) + test failing_panic_non_const_eval_str_whitespace_arg ... FAILED (???, 973 gas) + test failing_panic_error_enum_arg ... FAILED (???, 1103 gas) + test failing_panic_error_enum_arg_with_empty_msg ... FAILED (???, 1260 gas) + test failing_panic_error_enum_arg_with_whitespace_msg ... FAILED (???, 1289 gas) failures: test failing_revert_intrinsic, "test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/src/main.sw":34 @@ -102,7 +102,7 @@ AsciiString { data: "This is a log from the reverting test." }, log rb: 10098701 "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 46, - "pc": 14948, + "pc": 11272, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -136,7 +136,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 64, - "pc": 14948, + "pc": 12448, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -149,8 +149,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15536, - "ptr": 67106816, + "pc": 15948, + "ptr": 67107832, "ra": 0, "rb": 1515152261580153489 } @@ -162,8 +162,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15536, - "ptr": 67105792, + "pc": 15948, + "ptr": 67107824, "ra": 0, "rb": 1515152261580153489 } @@ -189,7 +189,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 64, - "pc": 14948, + "pc": 12812, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -202,8 +202,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15536, - "ptr": 67106816, + "pc": 15948, + "ptr": 67107832, "ra": 0, "rb": 1515152261580153489 } @@ -215,8 +215,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 15536, - "ptr": 67105792, + "pc": 15948, + "ptr": 67107824, "ra": 0, "rb": 1515152261580153489 } @@ -238,7 +238,7 @@ AsciiString { data: "This is an error message in a `require` call." }, log rb: 1 "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 53, - "pc": 14948, + "pc": 13012, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -261,7 +261,7 @@ B(true), log rb: 8516346929033386016 "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 9, - "pc": 13012, + "pc": 13136, "ptr": 67107840, "ra": 0, "rb": 8516346929033386016 @@ -281,13 +281,13 @@ B(true), log rb: 8516346929033386016 [ { "LogData": { - "data": "", - "digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "data": "00", + "digest": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d", "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, - "len": 0, - "pc": 13080, - "ptr": 67107840, + "len": 1, + "pc": 13204, + "ptr": 67108863, "ra": 0, "rb": 3330666440490685604 } @@ -306,13 +306,13 @@ B(true), log rb: 8516346929033386016 [ { "LogData": { - "data": "", - "digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "data": "00", + "digest": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d", "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, - "len": 0, - "pc": 13132, - "ptr": 67107840, + "len": 1, + "pc": 13256, + "ptr": 67108863, "ra": 0, "rb": 3330666440490685604 } @@ -359,7 +359,7 @@ AsciiString { data: "Panicked with a non-const evaluated string argument." }, lo "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 60, - "pc": 17304, + "pc": 13380, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -386,7 +386,7 @@ AsciiString { data: "" }, log rb: 10098701174489624218 "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, - "pc": 17304, + "pc": 13476, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -413,7 +413,7 @@ AsciiString { data: " " }, log rb: 10098701174489624218 "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 12, - "pc": 17304, + "pc": 13580, "ptr": 67107840, "ra": 0, "rb": 10098701174489624218 @@ -439,7 +439,7 @@ B(true), log rb: 8516346929033386016 "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 9, - "pc": 13540, + "pc": 13664, "ptr": 67107840, "ra": 0, "rb": 8516346929033386016 @@ -465,7 +465,7 @@ C(AsciiString { data: "This is an error with an empty error message." }), log rb "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 61, - "pc": 13644, + "pc": 13768, "ptr": 67107840, "ra": 0, "rb": 8516346929033386016 @@ -491,7 +491,7 @@ D(AsciiString { data: "This is an error with a whitespace error message." }), lo "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 65, - "pc": 13748, + "pc": 13872, "ptr": 67107840, "ra": 0, "rb": 8516346929033386016 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap index 7b4f9894e42..28d644621b1 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap @@ -1,6 +1,5 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 101 --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract --test-threads 1 --logs --reverts exit status: 0 @@ -9,17 +8,17 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) - Finished debug [unoptimized + fuel] target(s) [8.584 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [9.088 KB] in ??? Running 12 tests, filtered 0 tests tested -- panicking_contract - test test_panicking_in_contract_self_impl ... ok (???, 11170 gas) + test test_panicking_in_contract_self_impl ... ok (???, 11141 gas) revert code: 828000000000000c ├─ panic message: panicking in contract self impl ├─ panicked: in ::panicking_in_contract_self_impl │ └─ at panicking_contract@1.2.3, src/main.sw:22:9 - test test_directly_panicking_method ... ok (???, 12169 gas) + test test_directly_panicking_method ... ok (???, 12176 gas) revert code: 820000000000000b ├─ panic message: Error C. ├─ panic value: C(true) @@ -27,7 +26,7 @@ tested -- panicking_contract │ └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 12903 gas) + test test_nested_panic_inlined ... ok (???, 12910 gas) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -39,7 +38,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 12903 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 12910 gas) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -51,7 +50,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 13013 gas) + test test_nested_panic_non_inlined ... ok (???, 13020 gas) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -63,7 +62,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 13013 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 13020 gas) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -75,7 +74,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 11756 gas) + test test_generic_panic_with_unit ... ok (???, 11657 gas) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -84,7 +83,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 11756 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 11657 gas) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -93,7 +92,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 11923 gas) + test test_generic_panic_with_str ... ok (???, 11960 gas) revert code: 8080000000002804 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -102,7 +101,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:56:9 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 12146 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 12183 gas) revert code: 808000000000d019 ├─ panic message: generic panic with different string ├─ panicked: in panicking_lib::generic_panic @@ -111,7 +110,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_contract@1.2.3, src/main.sw:60:9 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 12064 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 12071 gas) revert code: 830000000000700d ├─ panic message: Error A. ├─ panic value: A @@ -121,7 +120,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_contract@1.2.3, src/main.sw:64:9 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 12331 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 12340 gas) revert code: 830000000000e01b ├─ panic message: Error B. ├─ panic value: B(42) @@ -143,17 +142,17 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) - Finished release [optimized + fuel] target(s) [6.536 KB] in ??? + Finished release [optimized + fuel] target(s) [6.496 KB] in ??? Running 12 tests, filtered 0 tests tested -- panicking_contract - test test_panicking_in_contract_self_impl ... ok (???, 10456 gas) + test test_panicking_in_contract_self_impl ... ok (???, 10377 gas) revert code: 8280000000000000 ├─ panic message: panicking in contract self impl └─ panicked: in ::panicking_in_contract_self_impl └─ at panicking_contract@1.2.3, src/main.sw:22:9 - test test_directly_panicking_method ... ok (???, 11376 gas) + test test_directly_panicking_method ... ok (???, 11297 gas) revert code: 8200000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -161,7 +160,7 @@ tested -- panicking_contract └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 12032 gas) + test test_nested_panic_inlined ... ok (???, 11953 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -169,7 +168,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 12032 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 11953 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -177,7 +176,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 12088 gas) + test test_nested_panic_non_inlined ... ok (???, 12009 gas) revert code: 8180000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -185,7 +184,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 12088 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 12009 gas) revert code: 8180000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -193,35 +192,35 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 11038 gas) + test test_generic_panic_with_unit ... ok (???, 10863 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 11038 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 10863 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 11223 gas) + test test_generic_panic_with_str ... ok (???, 11144 gas) revert code: 8080000000000000 ├─ panic message: generic panic with string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 11306 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 11227 gas) revert code: 8080000000000000 ├─ panic message: generic panic with different string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 11281 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 11202 gas) revert code: 8300000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -229,7 +228,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 11428 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 11349 gas) revert code: 8300000000000000 ├─ panic message: Error B. ├─ panic value: B(42) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap index 29c31e2d26a..219f8ad09ec 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap @@ -1,6 +1,5 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 101 --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib --test-threads 1 --logs --reverts exit status: 0 @@ -8,12 +7,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) - Finished debug [unoptimized + fuel] target(s) [6.12 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [7.824 KB] in ??? Running 18 tests, filtered 0 tests tested -- panicking_lib - test test_nested_panic_inlined ... ok (???, 1917 gas) + test test_nested_panic_inlined ... ok (???, 2006 gas) revert code: 8000000000001001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -25,7 +24,7 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:55:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1917 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 2006 gas) revert code: 8000000000001801 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -37,7 +36,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:60:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined ... ok (???, 1965 gas) + test test_nested_panic_non_inlined ... ok (???, 2050 gas) revert code: 8080000000002804 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -49,7 +48,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:65:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1965 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2050 gas) revert code: 8080000000003004 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -61,7 +60,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:70:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_generic_panic_with_unit ... ok (???, 753 gas) + test test_generic_panic_with_unit ... ok (???, 673 gas) revert code: 8100000000000007 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -70,7 +69,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:83:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 753 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 673 gas) revert code: 8100000000000008 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -79,7 +78,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:88:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 916 gas) + test test_generic_panic_with_str ... ok (???, 982 gas) revert code: 8180000000000009 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -88,7 +87,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:93:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 917 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 983 gas) revert code: 818000000000000a ├─ panic message: generic panic different string ├─ panicked: in panicking_lib::generic_panic @@ -97,7 +96,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:98:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum_variant ... ok (???, 955 gas) + test test_generic_panic_with_error_type_enum_variant ... ok (???, 1019 gas) revert code: 820000000000000b ├─ panic message: Error A. ├─ panic value: A @@ -107,7 +106,7 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:103:5 decoded log values: A, log rb: 2721958641300806892 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 955 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1019 gas) revert code: 820000000000000c ├─ panic message: Error A. ├─ panic value: A @@ -117,14 +116,14 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:108:5 decoded log values: A, log rb: 2721958641300806892 - test test_panic_without_arg ... ok (???, 737 gas) + test test_panic_without_arg ... ok (???, 657 gas) revert code: 8280000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_without_arg └─ at panicking_lib, src/lib.sw:113:5 decoded log values: (), log rb: 3330666440490685604 - test test_panic_with_unit ... ok (???, 737 gas) + test test_panic_with_unit ... ok (???, 657 gas) revert code: 8300000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_with_unit @@ -136,7 +135,7 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 - test test_panic_with_error_type_enum ... ok (???, 1130 gas) + test test_panic_with_error_type_enum ... ok (???, 1219 gas) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -144,28 +143,28 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:128:5 decoded log values: C(true), log rb: 2721958641300806892 - test test_panic_with_generic_error_type_enum ... ok (???, 977 gas) + test test_panic_with_generic_error_type_enum ... ok (???, 1082 gas) revert code: 8480000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum └─ at panicking_lib, src/lib.sw:133:5 decoded log values: A(42), log rb: 12408470889216862137 - test test_panic_with_nested_generic_error_type ... ok (???, 1500 gas) + test test_panic_with_nested_generic_error_type ... ok (???, 1674 gas) revert code: 8500000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type └─ at panicking_lib, src/lib.sw:138:5 decoded log values: B(B(C(true))), log rb: 14988555917426256081 - test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 977 gas) + test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 1082 gas) revert code: 8580000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum_with_abi_encode └─ at panicking_lib, src/lib.sw:143:5 decoded log values: A(42), log rb: 17388243649088655852 - test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1500 gas) + test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1674 gas) revert code: 8600000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type_enum_with_abi_encode @@ -183,12 +182,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) - Finished release [optimized + fuel] target(s) [4.56 KB] in ??? + Finished release [optimized + fuel] target(s) [4.48 KB] in ??? Running 18 tests, filtered 0 tests tested -- panicking_lib - test test_nested_panic_inlined ... ok (???, 1679 gas) + test test_nested_panic_inlined ... ok (???, 1718 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -196,7 +195,7 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1679 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 1718 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -204,7 +203,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined ... ok (???, 1717 gas) + test test_nested_panic_non_inlined ... ok (???, 1752 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -212,7 +211,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1717 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1752 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -220,14 +219,14 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_generic_panic_with_unit ... ok (???, 660 gas) + test test_generic_panic_with_unit ... ok (???, 599 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 660 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 599 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic @@ -248,7 +247,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum_variant ... ok (???, 893 gas) + test test_generic_panic_with_error_type_enum_variant ... ok (???, 901 gas) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -256,7 +255,7 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 893 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 901 gas) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -264,14 +263,14 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 - test test_panic_without_arg ... ok (???, 660 gas) + test test_panic_without_arg ... ok (???, 599 gas) revert code: 8280000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_without_arg └─ at panicking_lib, src/lib.sw:113:5 decoded log values: (), log rb: 3330666440490685604 - test test_panic_with_unit ... ok (???, 660 gas) + test test_panic_with_unit ... ok (???, 599 gas) revert code: 8300000000000000 ├─ panic value: () └─ panicked: in panicking_lib::test_panic_with_unit @@ -283,7 +282,7 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 - test test_panic_with_error_type_enum ... ok (???, 1028 gas) + test test_panic_with_error_type_enum ... ok (???, 1067 gas) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap index b52cab8b2cc..5b6837626e2 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap @@ -1,6 +1,5 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 101 --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script --test-threads 1 --logs --reverts exit status: 0 @@ -9,12 +8,12 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling script panicking_script (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script) - Finished debug [unoptimized + fuel] target(s) [3.744 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [4.224 KB] in ??? Running 11 tests, filtered 0 tests tested -- panicking_script - test test_panic_in_main ... ok (???, 1105 gas) + test test_panic_in_main ... ok (???, 1141 gas) revert code: 8000000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -22,7 +21,7 @@ tested -- panicking_script └─ at panicking_script, src/main.sw:6:5 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 1924 gas) + test test_nested_panic_inlined ... ok (???, 1960 gas) revert code: 8080000000001001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -34,7 +33,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_script, src/main.sw:16:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1924 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 1960 gas) revert code: 8080000000001801 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -46,7 +45,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_script, src/main.sw:21:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 1966 gas) + test test_nested_panic_non_inlined ... ok (???, 2002 gas) revert code: 8100000000002804 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -58,7 +57,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_script, src/main.sw:26:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1966 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2002 gas) revert code: 8100000000003004 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -70,7 +69,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:31:5 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 731 gas) + test test_generic_panic_with_unit ... ok (???, 661 gas) revert code: 8180000000000007 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -79,7 +78,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:36:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 731 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 661 gas) revert code: 8180000000000008 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -88,7 +87,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:41:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 916 gas) + test test_generic_panic_with_str ... ok (???, 982 gas) revert code: 8200000000000009 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -97,7 +96,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_script, src/main.sw:46:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 919 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 985 gas) revert code: 820000000000000a ├─ panic message: generic panic with different string ├─ panicked: in panicking_lib::generic_panic @@ -106,7 +105,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_script, src/main.sw:51:5 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 935 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 971 gas) revert code: 828000000000000b ├─ panic message: Error A. ├─ panic value: A @@ -116,7 +115,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_script, src/main.sw:56:5 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1070 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1108 gas) revert code: 828000000000000c ├─ panic message: Error B. ├─ panic value: B(42) @@ -138,7 +137,7 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling script panicking_script (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script) - Finished release [optimized + fuel] target(s) [3.24 KB] in ??? + Finished release [optimized + fuel] target(s) [3.216 KB] in ??? Running 11 tests, filtered 0 tests tested -- panicking_script @@ -183,14 +182,14 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 687 gas) + test test_generic_panic_with_unit ... ok (???, 591 gas) revert code: 8180000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 687 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 591 gas) revert code: 8180000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json index 9ff42c32988..99f2b158158 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/u256/u256_abi/json_abi_oracle_new_encoding.release.json @@ -10,7 +10,7 @@ "concreteTypeId": "1b5759d94094368cfd443019e7ca5ec4074300e544e5ea993a979f5da627261e", "indirect": false, "name": "SOME_U256", - "offset": 672 + "offset": 384 } ], "encodingVersion": "1", diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap index c3db6eb53fb..ae1fdd7d81a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/panic_in_non_statement_positions/stdout.snap @@ -286,57 +286,57 @@ warning ____ Compiled library "panic_in_non_statement_positions" with 23 warnings. - Finished debug [unoptimized + fuel] target(s) [1.84 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [1.984 KB] in ??? Running 16 tests, filtered 0 tests tested -- panic_in_non_statement_positions - test in_init ... ok (???, 1006 gas) + test in_init ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_array ... ok (???, 1006 gas) + test in_array ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_length_1_array ... ok (???, 1006 gas) + test in_length_1_array ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_length_2_array_first ... ok (???, 1006 gas) + test in_length_2_array_first ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_length_2_array_second ... ok (???, 1006 gas) + test in_length_2_array_second ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_tuple ... ok (???, 1006 gas) + test in_tuple ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_struct ... ok (???, 1006 gas) + test in_struct ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_parentheses ... ok (???, 1006 gas) + test in_parentheses ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_if_condition ... ok (???, 1006 gas) + test in_if_condition ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_while_condition ... ok (???, 1006 gas) + test in_while_condition ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_enum ... ok (???, 1006 gas) + test in_enum ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_enum_multivariant ... ok (???, 1006 gas) + test in_enum_multivariant ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_fun_arg ... ok (???, 1006 gas) + test in_fun_arg ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_lazy_and ... ok (???, 1006 gas) + test in_lazy_and ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_lazy_or ... ok (???, 1006 gas) + test in_lazy_or ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 - test in_match_scrutinee ... ok (???, 1006 gas) + test in_match_scrutinee ... ok (???, 675 gas) decoded log values: E(42), log rb: 5087777005172090899 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw index c4cdc95e08e..1edcc889e75 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x14ed3cd06c2947248f69d54bfa681fe40d26267be84df7e19e253622b7921bbe; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x25c36f98a78201dbb8f18ef59f532eef068e88323ed8072f47bc12c247930604; // AUTO-CONTRACT-ID ../../test_contracts/array_of_structs_contract --release +const CONTRACT_ID = 0x86d1768b626182f734e91a9f5329519485e8afbae7a5ec3bf772c8c6b7ccff19; // AUTO-CONTRACT-ID ../../test_contracts/array_of_structs_contract --release fn get_address() -> Option { Some(CONTRACT_ID.into()) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw index b41d0c8712a..1d7d058f6a0 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw @@ -14,7 +14,7 @@ const FUEL_COIN_CONTRACT_ID = 0x445492d9a4b189add3229725dd4be67335748feafa80de94 #[cfg(experimental_new_encoding = false)] const BALANCE_CONTRACT_ID = 0xf6cd545152ac83225e8e7df2efb5c6fa6e37bc9b9e977b5ea8103d28668925df; #[cfg(experimental_new_encoding = true)] -const BALANCE_CONTRACT_ID = 0xa30c5df660b642a857e4675dbab622031aca65a538eeca3961a7a5ff44a8dc07; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release +const BALANCE_CONTRACT_ID = 0x65edc923c4978fdeb1735cbc0b68da894ef962883dac36a072954ae71688cec5; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release fn main() -> bool { let default_gas = 1_000_000_000_000; diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw index cd6f084f77c..b9c23182408 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw @@ -5,7 +5,7 @@ use balance_test_abi::BalanceTest; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xf6cd545152ac83225e8e7df2efb5c6fa6e37bc9b9e977b5ea8103d28668925df; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xa30c5df660b642a857e4675dbab622031aca65a538eeca3961a7a5ff44a8dc07; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release +const CONTRACT_ID = 0x65edc923c4978fdeb1735cbc0b68da894ef962883dac36a072954ae71688cec5; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release fn main() -> bool { let balance_test_contract = abi(BalanceTest, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw index 6eb4cb53be9..e02babfc1e7 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw @@ -6,7 +6,7 @@ use abi_with_tuples::{MyContract, Location, Person}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xfdc14550c8aee742cd556d0ab7f378b7be0d3b1e6e086c097352e94590d4ed02; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xb17647b40915b3b1041040156882f95d7abe06818ebd4caf80baf9347c88d782; // AUTO-CONTRACT-ID ../../test_contracts/abi_with_tuples_contract --release +const CONTRACT_ID = 0x77af75bf25a0f69c8430eaae5adbd2dcca0e5a04ce635b0b0a8112f9b567831d; // AUTO-CONTRACT-ID ../../test_contracts/abi_with_tuples_contract --release fn main() -> bool { let the_abi = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw index 6b949734105..9ca07d2bf2e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw @@ -4,7 +4,7 @@ use basic_storage_abi::{BasicStorage, Quad}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x94db39f409a31b9f2ebcadeea44378e419208c20de90f5d8e1e33dc1523754cb; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xa244d2abab617c2b46cf39d5b69e70c20c7b26a95743ae80e50f9256726df250; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release +const CONTRACT_ID = 0x28dd1312e27716e2175cad2bed614ce2f930fe93dc250a5f57ae11adccc9ec76; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release fn main() -> u64 { let addr = abi(BasicStorage, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw index 8331c11e9e1..2b80f087698 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw @@ -5,7 +5,7 @@ use contract_with_type_aliases_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x0cbeb6efe3104b460be769bdc4ea101ebf16ccc16f2d7b667ec3e1c7f5ce35b5; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x0ca4f89385da8228f25f031d18c6739c530562cdb364de34d73744bc15cf896a; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release +const CONTRACT_ID = 0x304b67013ddf3ed734c82f355bac758b59be9f2c1f9a220279f0480a3b2ea4c1; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release fn main() { let caller = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw index 48674010cb9..7055ffb1118 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw @@ -6,7 +6,7 @@ use dynamic_contract_call::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xd1b4047af7ef111c023ab71069e01dc2abfde487c0a0ce1268e4f447e6c6e4c2; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x2831f6a4598517a3e1de7ee8430b3e232d3b480c26cd2f36bea7e2838732c313; // AUTO-CONTRACT-ID ../../test_contracts/increment_contract --release +const CONTRACT_ID = 0x16654cef591c88cf55f8363e17d2beee62a11c2453b64fa30099d4e33e7fcd4f; // AUTO-CONTRACT-ID ../../test_contracts/increment_contract --release fn main() -> bool { let the_abi = abi(Incrementor, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw index dab4aa7ca5b..e38cf87e97f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw @@ -5,7 +5,7 @@ use storage_enum_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xc601d11767195485a6654d566c67774134668863d8c797a8c69e8778fb1f89e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xe06c8e6c63b68a4318bf2a89230c26cb4a123694ef4d304119242f793f6f6b30; // AUTO-CONTRACT-ID ../../test_contracts/storage_enum_contract --release +const CONTRACT_ID = 0xa09470dbde832b54231e8fca6ce5fb7a8bf051f56c7d0ea0b0b3101983954c5d; // AUTO-CONTRACT-ID ../../test_contracts/storage_enum_contract --release fn main() -> u64 { let caller = abi(StorageEnum, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw index fc125998751..dcd6924884f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw @@ -5,7 +5,7 @@ use auth_testing_abi::AuthTesting; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xc2eec20491b53aab7232cbd27c31d15417b4e9daf0b89c74cc242ef1295f681f; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x8be75eacc0b96df2f77c12139a5f400c90757405cf3dda6a4efe98ec57469cc0; // AUTO-CONTRACT-ID ../../test_contracts/auth_testing_contract --release +const CONTRACT_ID = 0x964987560d5b794c9f2cf9a10604d749ac147ec7d5fdd7383d3e41080c5da2f3; // AUTO-CONTRACT-ID ../../test_contracts/auth_testing_contract --release // should be false in the case of a script fn main() -> bool { diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw index 0970e26df21..40f2885f529 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw @@ -6,7 +6,7 @@ use context_testing_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x6054c11cda000f5990373a4d61929396165be4dfdd61d5b7bd26da60ab0d8577; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x8b12252020214149904b24e98bd8c021f05f576d6e332eb473b08d776eecdf0e; // AUTO-CONTRACT-ID ../../test_contracts/context_testing_contract --release +const CONTRACT_ID = 0xb3188335bdfa33e8f457a571c8b38b9f0d83e9eef0ad66a50a46b34a8ae228d6; // AUTO-CONTRACT-ID ../../test_contracts/context_testing_contract --release fn main() -> bool { let gas: u64 = u64::max(); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw index 1ee94a771c2..9496f1b7804 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw @@ -5,7 +5,7 @@ use nested_struct_args_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xe63d33a1b3a6903808b379f6a41a72fa8a370e8b76626775e7d9d2f9c4c5da40; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xcaa96e05131b386a0ce1124f213e5e7cb8434ce7f5c60c413ba2a1ff731096a4; // AUTO-CONTRACT-ID ../../test_contracts/nested_struct_args_contract --release +const CONTRACT_ID = 0xd24a80a26cf5857cb572fd82019bcf029724615d401621c41ae2bfb7ba17df2b; // AUTO-CONTRACT-ID ../../test_contracts/nested_struct_args_contract --release fn main() -> bool { let caller = abi(NestedStructArgs, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw index 0b251d94811..350b460296d 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x3bc28acd66d327b8c1b9624c1fabfc07e9ffa1b5d71c2832c3bfaaf8f4b805e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xd13e88ba57bd2957c56ba97c462202fc88d98b5502e56d7cebaf02f5312bed06; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release +const CONTRACT_ID = 0xcb3b3354fd53ae49c831932c4a99b08821ee63ee7c9073a2a1e6a708dc883c61; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release fn main() -> bool { let caller = abi(StorageAccess, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index bd59cd0a398..5bdfdeed818 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -1,6 +1,5 @@ --- source: test/src/snapshot/mod.rs -assertion_line: 101 --- > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call --release --experimental const_generics exit status: 101 @@ -8,40 +7,40 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [32.064 KB] in ??? + Finished release [optimized + fuel] target(s) [25.064 KB] in ??? Running 29 tests, filtered 0 tests tested -- const_of_contract_call - test cost_of_in_bool ... ok (???, 12513 gas) - test cost_of_in_u8 ... ok (???, 12478 gas) - test cost_of_in_u16 ... ok (???, 12596 gas) - test cost_of_in_u32 ... ok (???, 12853 gas) - test cost_of_in_u64 ... ok (???, 12500 gas) - test cost_of_in_u256 ... ok (???, 12629 gas) - test cost_of_in_b256 ... ok (???, 12613 gas) - test cost_of_in_str_0 ... ok (???, 12596 gas) - test cost_of_in_str_1 ... ok (???, 12777 gas) - test cost_of_in_str_8 ... ok (???, 12796 gas) - test cost_of_in_str_16 ... ok (???, 12793 gas) - test cost_of_in_str_32 ... ok (???, 12807 gas) - test cost_of_in_array_0 ... FAILED (???, 12295 gas) - test cost_of_in_array_1 ... ok (???, 12860 gas) - test cost_of_in_array_8 ... ok (???, 16978 gas) - test cost_of_in_array_16 ... ok (???, 18176 gas) - test cost_of_in_array_32 ... ok (???, 23862 gas) - test cost_of_in_array_64 ... ok (???, 35277 gas) - test cost_of_in_tuple_0 ... ok (???, 12047 gas) - test cost_of_in_tuple_1 ... ok (???, 12653 gas) - test cost_of_in_tuple_2 ... ok (???, 12952 gas) - test cost_of_in_tuple_3 ... ok (???, 13204 gas) - test cost_of_in_tuple_4 ... ok (???, 13532 gas) - test in_struct_u64 ... ok (???, 12664 gas) - test in_struct_u64_u64 ... ok (???, 12939 gas) - test in_struct_u64_u64_u64 ... ok (???, 13198 gas) - test in_enum_u64 ... ok (???, 13041 gas) - test in_enum_u64_u64 ... ok (???, 13046 gas) - test in_enum_u64_u64_u64 ... ok (???, 13062 gas) + test cost_of_in_bool ... ok (???, 11883 gas) + test cost_of_in_u8 ... ok (???, 11848 gas) + test cost_of_in_u16 ... ok (???, 12160 gas) + test cost_of_in_u32 ... ok (???, 12413 gas) + test cost_of_in_u64 ... ok (???, 11619 gas) + test cost_of_in_u256 ... ok (???, 11700 gas) + test cost_of_in_b256 ... ok (???, 11682 gas) + test cost_of_in_str_0 ... ok (???, 11736 gas) + test cost_of_in_str_1 ... ok (???, 12331 gas) + test cost_of_in_str_8 ... ok (???, 11871 gas) + test cost_of_in_str_16 ... ok (???, 11864 gas) + test cost_of_in_str_32 ... ok (???, 11878 gas) + test cost_of_in_array_0 ... FAILED (???, 11499 gas) + test cost_of_in_array_1 ... ok (???, 11764 gas) + test cost_of_in_array_8 ... ok (???, 12953 gas) + test cost_of_in_array_16 ... ok (???, 12963 gas) + test cost_of_in_array_32 ... ok (???, 14232 gas) + test cost_of_in_array_64 ... ok (???, 16762 gas) + test cost_of_in_tuple_0 ... ok (???, 11454 gas) + test cost_of_in_tuple_1 ... ok (???, 11760 gas) + test cost_of_in_tuple_2 ... ok (???, 11835 gas) + test cost_of_in_tuple_3 ... ok (???, 11877 gas) + test cost_of_in_tuple_4 ... ok (???, 11833 gas) + test in_struct_u64 ... ok (???, 11771 gas) + test in_struct_u64_u64 ... ok (???, 11822 gas) + test in_struct_u64_u64_u64 ... ok (???, 11871 gas) + test in_enum_u64 ... ok (???, 11751 gas) + test in_enum_u64_u64 ... ok (???, 11748 gas) + test in_enum_u64_u64_u64 ... ok (???, 11764 gas) failures: test cost_of_in_array_0, "test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/src/main.sw":347 @@ -63,12 +62,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.48 KB] in ??? + Finished release [optimized + fuel] target(s) [952 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_0 ... FAILED (???, 10602 gas) + test isolated_cost_of_in_array_0 ... FAILED (???, 10293 gas) failures: test isolated_cost_of_in_array_0, "test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/src/main.sw":175 @@ -90,12 +89,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.656 KB] in ??? + Finished release [optimized + fuel] target(s) [1.096 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_1 ... ok (???, 11046 gas) + test isolated_cost_of_in_array_1 ... ok (???, 10540 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -110,12 +109,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.688 KB] in ??? + Finished release [optimized + fuel] target(s) [1.12 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_16 ... ok (???, 14865 gas) + test isolated_cost_of_in_array_16 ... ok (???, 11742 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -130,12 +129,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.688 KB] in ??? + Finished release [optimized + fuel] target(s) [1.12 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_32 ... ok (???, 18911 gas) + test isolated_cost_of_in_array_32 ... ok (???, 13003 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -150,12 +149,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.728 KB] in ??? + Finished release [optimized + fuel] target(s) [1.12 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_64 ... ok (???, 27050 gas) + test isolated_cost_of_in_array_64 ... ok (???, 15527 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -170,12 +169,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.816 KB] in ??? + Finished release [optimized + fuel] target(s) [1.248 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_array_8 ... ok (???, 14248 gas) + test isolated_cost_of_in_array_8 ... ok (???, 11726 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -190,12 +189,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.528 KB] in ??? + Finished release [optimized + fuel] target(s) [1.032 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_b256 ... ok (???, 10910 gas) + test isolated_cost_of_in_b256 ... ok (???, 10489 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -210,12 +209,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.408 KB] in ??? + Finished release [optimized + fuel] target(s) [1.376 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_bool ... ok (???, 10791 gas) + test isolated_cost_of_in_bool ... ok (???, 10663 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -230,12 +229,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.672 KB] in ??? + Finished release [optimized + fuel] target(s) [1.064 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64 ... ok (???, 11280 gas) + test in_enum_u64 ... ok (???, 10504 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -250,12 +249,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.784 KB] in ??? + Finished release [optimized + fuel] target(s) [1.104 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64_u64 ... ok (???, 11310 gas) + test in_enum_u64_u64 ... ok (???, 10516 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -270,12 +269,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.92 KB] in ??? + Finished release [optimized + fuel] target(s) [1.176 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64_u64_u64 ... ok (???, 11332 gas) + test in_enum_u64_u64_u64 ... ok (???, 10524 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -290,12 +289,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.36 KB] in ??? + Finished release [optimized + fuel] target(s) [928 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_0 ... ok (???, 10812 gas) + test isolated_cost_of_in_str_0 ... ok (???, 10456 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -330,12 +329,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.64 KB] in ??? + Finished release [optimized + fuel] target(s) [1.144 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_16 ... ok (???, 11025 gas) + test isolated_cost_of_in_str_16 ... ok (???, 10604 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -350,12 +349,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.656 KB] in ??? + Finished release [optimized + fuel] target(s) [1.16 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_32 ... ok (???, 11030 gas) + test isolated_cost_of_in_str_32 ... ok (???, 10611 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -370,12 +369,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.608 KB] in ??? + Finished release [optimized + fuel] target(s) [1.112 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_8 ... ok (???, 11022 gas) + test isolated_cost_of_in_str_8 ... ok (???, 10600 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -390,12 +389,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.528 KB] in ??? + Finished release [optimized + fuel] target(s) [1.016 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_struct_u64 ... ok (???, 10893 gas) + test in_struct_u64 ... ok (???, 10454 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -410,12 +409,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.624 KB] in ??? + Finished release [optimized + fuel] target(s) [1.064 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_struct_u64_u64 ... ok (???, 11222 gas) + test in_struct_u64_u64 ... ok (???, 10493 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -430,12 +429,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.688 KB] in ??? + Finished release [optimized + fuel] target(s) [1.096 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_struct_u64_u64_u64 ... ok (???, 11484 gas) + test in_struct_u64_u64_u64 ... ok (???, 10530 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -450,12 +449,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [832 B] in ??? + Finished release [optimized + fuel] target(s) [712 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_0 ... ok (???, 10321 gas) + test isolated_cost_of_in_tuple_0 ... ok (???, 10236 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -470,12 +469,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.488 KB] in ??? + Finished release [optimized + fuel] target(s) [976 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_1 ... ok (???, 10862 gas) + test isolated_cost_of_in_tuple_1 ... ok (???, 10423 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -490,12 +489,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.608 KB] in ??? + Finished release [optimized + fuel] target(s) [1.048 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_2 ... ok (???, 11221 gas) + test isolated_cost_of_in_tuple_2 ... ok (???, 10492 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -510,12 +509,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.672 KB] in ??? + Finished release [optimized + fuel] target(s) [1.08 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_3 ... ok (???, 11484 gas) + test isolated_cost_of_in_tuple_3 ... ok (???, 10529 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -530,12 +529,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.728 KB] in ??? + Finished release [optimized + fuel] target(s) [1.112 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_4 ... ok (???, 11745 gas) + test isolated_cost_of_in_tuple_4 ... ok (???, 10564 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -550,12 +549,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.44 KB] in ??? + Finished release [optimized + fuel] target(s) [1.448 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u16 ... ok (???, 10923 gas) + test isolated_cost_of_in_u16 ... ok (???, 10932 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -570,12 +569,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.528 KB] in ??? + Finished release [optimized + fuel] target(s) [1.032 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u256 ... ok (???, 10910 gas) + test isolated_cost_of_in_u256 ... ok (???, 10489 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -590,12 +589,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.544 KB] in ??? + Finished release [optimized + fuel] target(s) [1.56 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u32 ... ok (???, 11166 gas) + test isolated_cost_of_in_u32 ... ok (???, 11175 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -610,12 +609,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.344 KB] in ??? + Finished release [optimized + fuel] target(s) [896 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u64 ... ok (???, 10749 gas) + test isolated_cost_of_in_u64 ... ok (???, 10377 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -630,12 +629,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.384 KB] in ??? + Finished release [optimized + fuel] target(s) [1.344 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u8 ... ok (???, 10776 gas) + test isolated_cost_of_in_u8 ... ok (???, 10647 gas) test result: OK. 1 passed; 0 failed; finished in ???